]>
glassweightruler.freedombox.rocks Git - waydroid.git/blob - tools/actions/app_manager.py
1 # Copyright 2021 Erfan Abdi
2 # SPDX-License-Identifier: GPL-3.0-or-later
8 import tools
.helpers
.props
9 from tools
.interfaces
import IPlatform
10 from tools
.interfaces
import IStatusBarService
13 if os
.path
.exists(tools
.config
.session_defaults
["config_path"]):
14 session_cfg
= tools
.config
.load_session()
15 if session_cfg
["session"]["state"] == "RUNNING":
16 tmp_dir
= session_cfg
["session"]["waydroid_data"] + "/waydroid_tmp"
17 if not os
.path
.exists(tmp_dir
):
20 shutil
.copyfile(args
.PACKAGE
, tmp_dir
+ "/base.apk")
21 platformService
= IPlatform
.get_service(args
)
23 platformService
.installApp("/data/waydroid_tmp/base.apk")
24 shutil
.rmtree(tmp_dir
)
26 logging
.error("WayDroid container is {}".format(
27 session_cfg
["session"]["state"]))
29 logging
.error("WayDroid session is stopped")
32 if os
.path
.exists(tools
.config
.session_defaults
["config_path"]):
33 session_cfg
= tools
.config
.load_session()
34 if session_cfg
["session"]["state"] == "RUNNING":
35 platformService
= IPlatform
.get_service(args
)
37 ret
= platformService
.removeApp(args
.PACKAGE
)
39 logging
.error("Failed to uninstall package: {}".format(args
.PACKAGE
))
41 logging
.error("Failed to access IPlatform service")
43 logging
.error("WayDroid container is {}".format(
44 session_cfg
["session"]["state"]))
46 logging
.error("WayDroid session is stopped")
50 platformService
= IPlatform
.get_service(args
)
52 platformService
.setprop("waydroid.active_apps", args
.PACKAGE
)
53 ret
= platformService
.launchApp(args
.PACKAGE
)
54 multiwin
= platformService
.getprop(
55 "persist.waydroid.multi_windows", "false")
56 if multiwin
== "false":
57 platformService
.settingsPutString(
58 2, "policy_control", "immersive.status=*")
60 platformService
.settingsPutString(
61 2, "policy_control", "immersive.full=*")
63 logging
.error("Failed to access IPlatform service")
65 if os
.path
.exists(tools
.config
.session_defaults
["config_path"]):
66 session_cfg
= tools
.config
.load_session()
68 if session_cfg
["session"]["state"] == "RUNNING":
70 elif session_cfg
["session"]["state"] == "FROZEN" or session_cfg
["session"]["state"] == "UNFREEZE":
71 session_cfg
["session"]["state"] = "UNFREEZE"
72 tools
.config
.save_session(session_cfg
)
73 while session_cfg
["session"]["state"] != "RUNNING":
74 session_cfg
= tools
.config
.load_session()
77 logging
.error("WayDroid container is {}".format(
78 session_cfg
["session"]["state"]))
80 logging
.error("Starting waydroid session")
81 tools
.actions
.session_manager
.start(args
, launch
)
84 if os
.path
.exists(tools
.config
.session_defaults
["config_path"]):
85 session_cfg
= tools
.config
.load_session()
86 if session_cfg
["session"]["state"] == "RUNNING":
87 platformService
= IPlatform
.get_service(args
)
89 appsList
= platformService
.getAppsInfo()
91 print("Name: " + app
["name"])
92 print("packageName: " + app
["packageName"])
94 for cat
in app
["categories"]:
97 logging
.error("Failed to access IPlatform service")
99 logging
.error("WayDroid container is {}".format(
100 session_cfg
["session"]["state"]))
102 logging
.error("WayDroid session is stopped")
104 def showFullUI(args
):
106 platformService
= IPlatform
.get_service(args
)
108 platformService
.setprop("waydroid.active_apps", "Waydroid")
109 platformService
.settingsPutString(2, "policy_control", "null*")
110 # HACK: Refresh display contents
111 statusBarService
= IStatusBarService
.get_service(args
)
113 statusBarService
.expand()
115 statusBarService
.collapse()
117 if os
.path
.exists(tools
.config
.session_defaults
["config_path"]):
118 session_cfg
= tools
.config
.load_session()
120 if session_cfg
["session"]["state"] == "RUNNING":
122 elif session_cfg
["session"]["state"] == "FROZEN" or session_cfg
["session"]["state"] == "UNFREEZE":
123 session_cfg
["session"]["state"] = "UNFREEZE"
124 tools
.config
.save_session(session_cfg
)
125 while session_cfg
["session"]["state"] != "RUNNING":
126 session_cfg
= tools
.config
.load_session()
129 logging
.error("WayDroid container is {}".format(
130 session_cfg
["session"]["state"]))
132 logging
.error("Starting waydroid session")
133 tools
.actions
.session_manager
.start(args
, showFullUI
)