]> glassweightruler.freedombox.rocks Git - waydroid.git/commitdiff
tools: Allow prop commands while frozen
authorAlessandro Astone <ales.astone@gmail.com>
Thu, 5 Jan 2023 19:00:05 +0000 (20:00 +0100)
committerAlessandro Astone <ales.astone@gmail.com>
Thu, 5 Jan 2023 19:00:12 +0000 (20:00 +0100)
tools/__init__.py
tools/actions/__init__.py
tools/actions/prop.py [new file with mode: 0644]

index d317414caec950d4dc3703ed01f15abf89d5e8dd..819d54ac9a177d401c5cf4bcdbcc8e5c3507ef37 100644 (file)
@@ -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))
index 04167334be890bf72806f5e57fe7789ac2f3a3bf..8a134c475aa98633dd206a123175b358b30d4138 100644 (file)
@@ -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 (file)
index 0000000..2915df6
--- /dev/null
@@ -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")