From 1780c9488ccce1737928c68e86896455f2732d02 Mon Sep 17 00:00:00 2001 From: Alessandro Astone Date: Thu, 5 Jan 2023 20:00:05 +0100 Subject: [PATCH] tools: Allow prop commands while frozen --- tools/__init__.py | 6 ++---- tools/actions/__init__.py | 1 + tools/actions/prop.py | 38 ++++++++++++++++++++++++++++++++++++++ 3 files changed, 41 insertions(+), 4 deletions(-) create mode 100644 tools/actions/prop.py 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") -- 2.47.3