From: Alessandro Astone Date: Thu, 5 Jan 2023 19:00:05 +0000 (+0100) Subject: tools: Allow prop commands while frozen X-Git-Tag: 1.4.0~54 X-Git-Url: https://glassweightruler.freedombox.rocks/gitweb/waydroid.git/commitdiff_plain/1780c9488ccce1737928c68e86896455f2732d02?ds=inline tools: Allow prop commands while frozen --- diff --git a/tools/__init__.py b/tools/__init__.py index d317414..819d54a 100644 --- a/tools/__init__.py +++ b/tools/__init__.py @@ -110,11 +110,9 @@ def main(): "Run waydroid {} -h for usage information.".format(args.action)) elif args.action == "prop": if args.subaction == "get": - ret = helpers.props.get(args, args.key) - if ret: - print(ret) + actions.prop.get(args) elif args.subaction == "set": - helpers.props.set(args, args.key, args.value) + actions.prop.set(args) else: logging.info( "Run waydroid {} -h for usage information.".format(args.action)) diff --git a/tools/actions/__init__.py b/tools/actions/__init__.py index 0416733..8a134c4 100644 --- a/tools/actions/__init__.py +++ b/tools/actions/__init__.py @@ -6,3 +6,4 @@ from tools.actions.session_manager import start, stop from tools.actions.container_manager import start, stop, freeze, unfreeze from tools.actions.app_manager import install, remove, launch, list from tools.actions.status import print_status +from tools.actions.prop import get, set diff --git a/tools/actions/prop.py b/tools/actions/prop.py new file mode 100644 index 0000000..2915df6 --- /dev/null +++ b/tools/actions/prop.py @@ -0,0 +1,38 @@ +import logging +import tools.helpers.props +import tools.helpers.ipc +import dbus + +def get(args): + try: + tools.helpers.ipc.DBusSessionService() + + cm = tools.helpers.ipc.DBusContainerService() + session = cm.GetSession() + if session["state"] == "FROZEN": + cm.Unfreeze() + + ret = tools.helpers.props.get(args, args.key) + if ret: + print(ret) + + if session["state"] == "FROZEN": + cm.Freeze() + except (dbus.DBusException, KeyError): + logging.error("WayDroid session is stopped") + +def set(args): + try: + tools.helpers.ipc.DBusSessionService() + + cm = tools.helpers.ipc.DBusContainerService() + session = cm.GetSession() + if session["state"] == "FROZEN": + cm.Unfreeze() + + helpers.props.set(args, args.key, args.value) + + if session["state"] == "FROZEN": + cm.Freeze() + except (dbus.DBusException, KeyError): + logging.error("WayDroid session is stopped")