X-Git-Url: https://glassweightruler.freedombox.rocks/gitweb/waydroid.git/blobdiff_plain/1f0393876d891d0e32a995d0bf7259cc6505afdc..047414fc01f4db01d8fd0be7f4c6f9032d4819d5:/tools/actions/session_manager.py diff --git a/tools/actions/session_manager.py b/tools/actions/session_manager.py index 7d89757..cc6a946 100644 --- a/tools/actions/session_manager.py +++ b/tools/actions/session_manager.py @@ -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)