X-Git-Url: https://glassweightruler.freedombox.rocks/gitweb/waydroid.git/blobdiff_plain/ff4cf1c83f09e639504209dec68855cdf3c69bce..2c223d412e8dfcb89efaf715f1e1f657a8c7e509:/tools/actions/session_manager.py diff --git a/tools/actions/session_manager.py b/tools/actions/session_manager.py index cfcd267..c1d4271 100644 --- a/tools/actions/session_manager.py +++ b/tools/actions/session_manager.py @@ -39,13 +39,30 @@ def start(args, unlocked_cb=None): unlocked_cb() return - session = copy.copy(tools.config.session_defaults); + session = copy.copy(tools.config.session_defaults) + + # TODO: also support WAYLAND_SOCKET? wayland_display = session["wayland_display"] if wayland_display == "None" or not wayland_display: logging.warning('WAYLAND_DISPLAY is not set, defaulting to "wayland-0"') + wayland_display = session["wayland_display"] = "wayland-0" + + if os.path.isabs(wayland_display): + wayland_socket_path = wayland_display + else: + xdg_runtime_dir = session["xdg_runtime_dir"] + if xdg_runtime_dir == "None" or not xdg_runtime_dir: + logging.error(f"XDG_RUNTIME_DIR is not set; please don't start a Waydroid session with 'sudo'!") + sys.exit(1) + wayland_socket_path = os.path.join(xdg_runtime_dir, wayland_display) + if not os.path.exists(wayland_socket_path): + logging.error(f"Wayland socket '{wayland_socket_path}' doesn't exist; are you running a Wayland compositor?") + sys.exit(1) + waydroid_data = session["waydroid_data"] if not os.path.isdir(waydroid_data): os.makedirs(waydroid_data) + dpi = tools.helpers.props.host_get(args, "ro.sf.lcd_density") if dpi == "": dpi = os.getenv("GRID_UNIT_PX") @@ -69,11 +86,13 @@ def start(args, unlocked_cb=None): GLib.unix_signal_add(GLib.PRIORITY_HIGH, signal.SIGUSR1, sigusr_handler, None) try: tools.helpers.ipc.DBusContainerService().Start(session) - except dbus.DBusException: - logging.error("WayDroid container is not listening") + except dbus.DBusException as e: + if e.get_dbus_name().startswith("org.freedesktop.DBus.Python"): + logging.error(e.get_dbus_message().splitlines()[-1]) + else: + logging.error("WayDroid container is not listening") sys.exit(0) - services.user_manager.start(args, session, unlocked_cb) services.clipboard_manager.start(args) service(args, mainloop)