X-Git-Url: https://glassweightruler.freedombox.rocks/gitweb/waydroid.git/blobdiff_plain/1f0393876d891d0e32a995d0bf7259cc6505afdc..f7e35b68a2f659dceeaecd52bd3e52a38ae5160f:/tools/actions/app_manager.py diff --git a/tools/actions/app_manager.py b/tools/actions/app_manager.py index 7bb19a2..e0c3dda 100644 --- a/tools/actions/app_manager.py +++ b/tools/actions/app_manager.py @@ -45,6 +45,25 @@ def remove(args): else: logging.error("WayDroid session is stopped") +def maybeLaunchLater(args, retry, launchNow): + if os.path.exists(tools.config.session_defaults["config_path"]): + session_cfg = tools.config.load_session() + + if session_cfg["session"]["state"] == "RUNNING": + launchNow() + elif session_cfg["session"]["state"] == "FROZEN" or session_cfg["session"]["state"] == "UNFREEZE": + session_cfg["session"]["state"] = "UNFREEZE" + tools.config.save_session(session_cfg) + while session_cfg["session"]["state"] != "RUNNING": + session_cfg = tools.config.load_session() + launchNow() + else: + logging.error("WayDroid container is {}".format( + session_cfg["session"]["state"])) + else: + logging.error("Starting waydroid session") + tools.actions.session_manager.start(args, retry) + def launch(args): def justLaunch(): platformService = IPlatform.get_service(args) @@ -61,23 +80,7 @@ def launch(args): 2, "policy_control", "immersive.full=*") else: logging.error("Failed to access IPlatform service") - - if os.path.exists(tools.config.session_defaults["config_path"]): - session_cfg = tools.config.load_session() - - if session_cfg["session"]["state"] == "RUNNING": - justLaunch() - elif session_cfg["session"]["state"] == "FROZEN" or session_cfg["session"]["state"] == "UNFREEZE": - session_cfg["session"]["state"] = "UNFREEZE" - tools.config.save_session(session_cfg) - while session_cfg["session"]["state"] != "RUNNING": - session_cfg = tools.config.load_session() - justLaunch() - else: - logging.error("WayDroid container is {}".format( - session_cfg["session"]["state"])) - else: - logging.error("WayDroid session is stopped") + maybeLaunchLater(args, launch, justLaunch) def list(args): if os.path.exists(tools.config.session_defaults["config_path"]): @@ -101,13 +104,36 @@ def list(args): logging.error("WayDroid session is stopped") def showFullUI(args): - platformService = IPlatform.get_service(args) - if platformService: - platformService.setprop("waydroid.active_apps", "Waydroid") - platformService.settingsPutString(2, "policy_control", "null*") - #HACK: Refresh display contents - statusBarService = IStatusBarService.get_service(args) - if statusBarService: - statusBarService.expand() - time.sleep(0.5) - statusBarService.collapse() + def justShow(): + platformService = IPlatform.get_service(args) + if platformService: + platformService.setprop("waydroid.active_apps", "Waydroid") + platformService.settingsPutString(2, "policy_control", "null*") + # HACK: Refresh display contents + statusBarService = IStatusBarService.get_service(args) + if statusBarService: + statusBarService.expand() + time.sleep(0.5) + statusBarService.collapse() + maybeLaunchLater(args, showFullUI, justShow) + +def intent(args): + def justLaunch(): + platformService = IPlatform.get_service(args) + if platformService: + ret = platformService.launchIntent(args.ACTION, args.URI) + if ret == "": + return + pkg = ret if ret != "android" else "Waydroid" + platformService.setprop("waydroid.active_apps", pkg) + multiwin = platformService.getprop( + "persist.waydroid.multi_windows", "false") + if multiwin == "false": + platformService.settingsPutString( + 2, "policy_control", "immersive.status=*") + else: + platformService.settingsPutString( + 2, "policy_control", "immersive.full=*") + else: + logging.error("Failed to access IPlatform service") + maybeLaunchLater(args, intent, justLaunch)