#!/bin/sh # mjdev desktop wayland session # started by the display manager via /usr/share/wayland-sessions/mjdev.desktop export XDG_CURRENT_DESKTOP=mjdev export XDG_SESSION_TYPE=wayland export MOZ_ENABLE_WAYLAND=1 export QT_QPA_PLATFORM="wayland;xcb" export _JAVA_AWT_WM_NONREPARENTING=1 # desktop shell binary - deb/appimage install location, gradle dev fallback SHELL_CMD="/opt/mjdev-desktop/bin/mjdev-desktop" if [ ! -x "$SHELL_CMD" ]; then SHELL_CMD="$HOME/.local/bin/mjdev-desktop" fi # compositor binary - /usr/bin (deb) or /usr/local/bin (manual install) MJDEVC="$(command -v mjdevc 2>/dev/null)" if [ -z "$MJDEVC" ]; then MJDEVC="/usr/bin/mjdevc" fi # clean up the activation environment the compositor exported into the # persistent systemd --user manager. with KillUserProcesses=no (the distro # default) that manager survives logout, so leaving a stale WAYLAND_DISPLAY / # DISPLAY behind poisons the next login - of any session, not just ours. # run on every exit path (normal exit, crash, signal) - no exec, so we get here. cleanup() { systemctl --user unset-environment \ WAYLAND_DISPLAY DISPLAY XDG_CURRENT_DESKTOP XDG_SESSION_TYPE \ 2>/dev/null || true } trap cleanup EXIT HUP INT TERM "$MJDEVC" --session --shell-cmd "$SHELL_CMD"