]> glassweightruler.freedombox.rocks Git - waydroid.git/blob - tools/actions/session_manager.py
actions: Start session by lunching apps
[waydroid.git] / tools / actions / session_manager.py
1 # Copyright 2021 Erfan Abdi
2 # SPDX-License-Identifier: GPL-3.0-or-later
3 import logging
4 import os
5 import time
6 import signal
7 import sys
8 import tools.config
9 from tools import services
10
11
12 def start(args, unlocked_cb=None):
13 def signal_handler(sig, frame):
14 stop(args)
15 sys.exit(0)
16
17 xdg_session = os.getenv("XDG_SESSION_TYPE")
18 if xdg_session != "wayland":
19 logging.warning('XDG Session is not "wayland"')
20
21 cfg = tools.config.load_session()
22 waydroid_data = cfg["session"]["waydroid_data"]
23 if not os.path.isdir(waydroid_data):
24 os.makedirs(waydroid_data)
25 dpi = tools.helpers.props.host_get(args, "ro.sf.lcd_density")
26 if dpi == "":
27 dpi = os.getenv("GRID_UNIT_PX")
28 if dpi is not None:
29 dpi = str(int(dpi) * 20)
30 else:
31 dpi = "0"
32 cfg["session"]["lcd_density"] = dpi
33 tools.config.save_session(cfg)
34
35 container_state = "IDLE"
36 signal.signal(signal.SIGINT, signal_handler)
37 while os.path.exists(tools.config.session_defaults["config_path"]):
38 session_cfg = tools.config.load_session()
39 if container_state != session_cfg["session"]["state"]:
40 if session_cfg["session"]["state"] == "RUNNING":
41 services.user_manager.start(args, unlocked_cb)
42 services.clipboard_manager.start(args)
43 if unlocked_cb:
44 unlocked_cb = None
45 elif session_cfg["session"]["state"] == "STOPPED":
46 services.user_manager.stop(args)
47 services.clipboard_manager.stop(args)
48 container_state = session_cfg["session"]["state"]
49 time.sleep(1)
50 services.user_manager.stop(args)
51 services.clipboard_manager.stop(args)
52
53 def stop(args):
54 config_path = tools.config.session_defaults["config_path"]
55 if os.path.isfile(config_path):
56 services.user_manager.stop(args)
57 services.clipboard_manager.stop(args)
58 os.remove(config_path)
59 else:
60 logging.error("WayDroid session is not started")