#!/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"
