]> glassweightruler.freedombox.rocks Git - waydroid.git/blobdiff - tools/actions/session_manager.py
tools: Upver to 1.3.4
[waydroid.git] / tools / actions / session_manager.py
index 7d89757edeeb027f7854d5359c0d85fac4542190..cc6a946adfae76bbc215b4cb8ede07a121757989 100644 (file)
@@ -5,20 +5,20 @@ import os
 import time
 import signal
 import sys
+import shutil
 import tools.config
 from tools import services
 
 
-def start(args):
+def start(args, unlocked_cb=None):
     def signal_handler(sig, frame):
         stop(args)
         sys.exit(0)
 
-    xdg_session = os.getenv("XDG_SESSION_TYPE")
-    if xdg_session != "wayland":
-        logging.warning('XDG Session is not "wayland"')
-
     cfg = tools.config.load_session()
+    wayland_display = cfg["session"]["wayland_display"]
+    if wayland_display == "None" or not wayland_display:
+        logging.warning('WAYLAND_DISPLAY is not set, defaulting to "wayland-0"')
     waydroid_data = cfg["session"]["waydroid_data"]
     if not os.path.isdir(waydroid_data):
         os.makedirs(waydroid_data)
@@ -32,11 +32,20 @@ def start(args):
     cfg["session"]["lcd_density"] = dpi
     tools.config.save_session(cfg)
 
-    services.user_manager.start(args)
-    services.clipboard_manager.start(args)
-
+    container_state = "IDLE"
     signal.signal(signal.SIGINT, signal_handler)
     while os.path.exists(tools.config.session_defaults["config_path"]):
+        session_cfg = tools.config.load_session()
+        if container_state != session_cfg["session"]["state"]:
+            if session_cfg["session"]["state"] == "RUNNING":
+                services.user_manager.start(args, unlocked_cb)
+                services.clipboard_manager.start(args)
+                if unlocked_cb:
+                    unlocked_cb = None
+            elif session_cfg["session"]["state"] == "STOPPED":
+                services.user_manager.stop(args)
+                services.clipboard_manager.stop(args)
+            container_state = session_cfg["session"]["state"]
         time.sleep(1)
     services.user_manager.stop(args)
     services.clipboard_manager.stop(args)