]>
glassweightruler.freedombox.rocks Git - waydroid.git/blob - tools/actions/session_manager.py
1 # Copyright 2021 Erfan Abdi
2 # SPDX-License-Identifier: GPL-3.0-or-later
10 from tools
import services
13 def start(args
, unlocked_cb
=None):
14 def signal_handler(sig
, frame
):
18 xdg_session
= os
.getenv("XDG_SESSION_TYPE")
19 if xdg_session
!= "wayland":
20 logging
.warning('XDG Session is not "wayland"')
22 cfg
= tools
.config
.load_session()
23 waydroid_data
= cfg
["session"]["waydroid_data"]
25 old_user_waydroid
= cfg
["session"]["host_user"] + "/waydroid"
26 if os
.path
.isdir(old_user_waydroid
):
27 if not os
.path
.isdir(waydroid_data
):
28 shutil
.move(old_user_waydroid
, cfg
["session"]["xdg_data_home"])
30 shutil
.rmtree(old_user_waydroid
, ignore_errors
=True)
31 if not os
.path
.isdir(waydroid_data
):
32 os
.makedirs(waydroid_data
)
33 dpi
= tools
.helpers
.props
.host_get(args
, "ro.sf.lcd_density")
35 dpi
= os
.getenv("GRID_UNIT_PX")
37 dpi
= str(int(dpi
) * 20)
40 cfg
["session"]["lcd_density"] = dpi
41 tools
.config
.save_session(cfg
)
43 container_state
= "IDLE"
44 signal
.signal(signal
.SIGINT
, signal_handler
)
45 while os
.path
.exists(tools
.config
.session_defaults
["config_path"]):
46 session_cfg
= tools
.config
.load_session()
47 if container_state
!= session_cfg
["session"]["state"]:
48 if session_cfg
["session"]["state"] == "RUNNING":
49 services
.user_manager
.start(args
, unlocked_cb
)
50 services
.clipboard_manager
.start(args
)
53 elif session_cfg
["session"]["state"] == "STOPPED":
54 services
.user_manager
.stop(args
)
55 services
.clipboard_manager
.stop(args
)
56 container_state
= session_cfg
["session"]["state"]
58 services
.user_manager
.stop(args
)
59 services
.clipboard_manager
.stop(args
)
62 config_path
= tools
.config
.session_defaults
["config_path"]
63 if os
.path
.isfile(config_path
):
64 services
.user_manager
.stop(args
)
65 services
.clipboard_manager
.stop(args
)
66 os
.remove(config_path
)
68 logging
.error("WayDroid session is not started")