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