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")
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)