#!/bin/sh
# desktop-logout — cross-DE logout

DESKTOP="${XDG_CURRENT_DESKTOP:-$DESKTOP_SESSION:-}"
DESKTOP_LOWER="$(printf '%s' "$DESKTOP" | tr '[:upper:]' '[:lower:]')"

case "$DESKTOP_LOWER" in
  *gnome*|*ubuntu*|*budgie*|*ubuntu-budgie*)
    if command -v gnome-session-quit >/dev/null 2>&1; then
      exec gnome-session-quit --logout --no-prompt
    fi
    # fallback to gdbus to request logout if available
    if command -v gdbus >/dev/null 2>&1; then
      exec gdbus call --session --dest org.gnome.SessionManager --object-path /org/gnome/SessionManager --method org.gnome.SessionManager.Logout 0
    fi
    exec pkill -KILL -u "$(id -u)"
    ;;
  *xfce*|*xubuntu*)
    if command -v xfce4-session-logout >/dev/null 2>&1; then
      exec xfce4-session-logout --logout --fast
    fi
    exec pkill -KILL -u "$(id -u)"
    ;;
  *)
    if command -v gnome-session-quit >/dev/null 2>&1; then
      exec gnome-session-quit --logout --no-prompt
    fi
    if command -v xfce4-session-logout >/dev/null 2>&1; then
      exec xfce4-session-logout --logout --fast
    fi
    exec pkill -KILL -u "$(id -u)"
    ;;
esac
