X-Git-Url: https://glassweightruler.freedombox.rocks/gitweb/waydroid.git/blobdiff_plain/791d9709918a6ebf0945b0aa1eca18031c95baf7..a2804841ed52f812b1d666cb3df01239ee906f5f:/tools/__init__.py diff --git a/tools/__init__.py b/tools/__init__.py index 13a6110..df42752 100644 --- a/tools/__init__.py +++ b/tools/__init__.py @@ -5,6 +5,7 @@ import sys import logging import os import traceback +import subprocess from . import actions from . import config @@ -27,18 +28,30 @@ def main(): args.cache = {} args.work = config.defaults["work"] args.config = args.work + "/waydroid.cfg" - args.log = args.work + "/tools.log" + args.log = args.work + "/waydroid.log" args.sudo_timer = True args.timeout = 1800 - if not os.path.isfile(args.config): - if args.action and args.action != "init": - print('ERROR: WayDroid is not initialized, run "waydroid init"') - return 0 + if not actions.initializer.is_initialized(args): + if args.action and (args.action not in ("init", "first-launch", "log")): + if not args.wait_for_init: + print('ERROR: WayDroid is not initialized, run "waydroid init"') + return 0 + + print('WayDroid waiting for initialization...') + while helpers.ipc.listen(channel="init") != "done": + pass + elif os.geteuid() == 0 and args.action == "init": - os.mkdir(args.work) + if not os.path.exists(args.work): + os.mkdir(args.work) else: - args.log = "/tmp/tools.log" + # This branch is taken if: + # - waydroid is not yet initialized + # - waydroid is invoked with no command or with log + if not os.path.exists(args.log): + # The log could have been already created if init was used and failed, if its not the case we use a temporary one + args.log = "/tmp/tools.log" tools_logging.init(args) @@ -63,7 +76,7 @@ def main(): actions.container_manager.start(args) elif args.subaction == "stop": actions.container_manager.stop(args) - if args.subaction == "restart": + elif args.subaction == "restart": actions.container_manager.restart(args) elif args.subaction == "freeze": actions.container_manager.freeze(args) @@ -79,6 +92,8 @@ def main(): actions.app_manager.remove(args) elif args.subaction == "launch": actions.app_manager.launch(args) + elif args.subaction == "intent": + actions.app_manager.intent(args) elif args.subaction == "list": actions.app_manager.list(args) else: @@ -102,13 +117,20 @@ def main(): helpers.lxc.logcat(args) elif args.action == "show-full-ui": actions.app_manager.showFullUI(args) + elif args.action == "first-launch": + subprocess.run(["pkexec", sys.argv[0], "init", "--gui"]) + if actions.initializer.is_initialized(args): + actions.app_manager.showFullUI(args) elif args.action == "status": actions.status.print_status(args) elif args.action == "log": if args.clear_log: helpers.run.user(args, ["truncate", "-s", "0", args.log]) - helpers.run.user( - args, ["tail", "-n", args.lines, "-F", args.log], output="tui") + try: + helpers.run.user( + args, ["tail", "-n", args.lines, "-F", args.log], output="tui") + except KeyboardInterrupt: + pass else: logging.info("Run waydroid -h for usage information.")