mjdev-session 1.2 KB

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