]>
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("WayDroid session is stopped")
83 if os
.path
.exists(tools
.config
.session_defaults
["config_path"]):
84 session_cfg
= tools
.config
.load_session()
85 if session_cfg
["session"]["state"] == "RUNNING":
86 platformService
= IPlatform
.get_service(args
)
88 appsList
= platformService
.getAppsInfo()
90 print("Name: " + app
["name"])
91 print("packageName: " + app
["packageName"])
93 for cat
in app
["categories"]:
96 logging
.error("Failed to access IPlatform service")
98 logging
.error("WayDroid container is {}".format(
99 session_cfg
["session"]["state"]))
101 logging
.error("WayDroid session is stopped")
103 def showFullUI(args
):
105 platformService
= IPlatform
.get_service(args
)
107 platformService
.setprop("waydroid.active_apps", "Waydroid")
108 platformService
.settingsPutString(2, "policy_control", "null*")
109 # HACK: Refresh display contents
110 statusBarService
= IStatusBarService
.get_service(args
)
112 statusBarService
.expand()
114 statusBarService
.collapse()
116 if os
.path
.exists(tools
.config
.session_defaults
["config_path"]):
117 session_cfg
= tools
.config
.load_session()
119 if session_cfg
["session"]["state"] == "RUNNING":
121 elif session_cfg
["session"]["state"] == "FROZEN" or session_cfg
["session"]["state"] == "UNFREEZE":
122 session_cfg
["session"]["state"] = "UNFREEZE"
123 tools
.config
.save_session(session_cfg
)
124 while session_cfg
["session"]["state"] != "RUNNING":
125 session_cfg
= tools
.config
.load_session()
128 logging
.error("WayDroid container is {}".format(
129 session_cfg
["session"]["state"]))
131 logging
.error("WayDroid session is stopped")