| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172 |
- #!/usr/bin/env bash
- set -u
- SCRIPT_DIR="$(cd -- "$(dirname -- "${BASH_SOURCE[0]}")" && pwd)"
- LOG_FILE="${SCRIPT_DIR}/gaming-mode.log"
- log() {
- printf '[%s] [ENTER] %s\n' "$(date '+%Y-%m-%d %H:%M:%S')" "$*" >> "${LOG_FILE}"
- }
- # Récupère l'environnement réel de la session XFCE.
- import_xfce_environment() {
- local session_pid
- local entry
- session_pid="$(pgrep -u "$(id -u)" -x xfce4-session | head -n 1 || true)"
- if [[ -n "${session_pid}" && -r "/proc/${session_pid}/environ" ]]; then
- while IFS= read -r -d '' entry; do
- case "${entry}" in
- DISPLAY=*|XAUTHORITY=*|DBUS_SESSION_BUS_ADDRESS=*|XDG_RUNTIME_DIR=*)
- export "${entry}"
- ;;
- esac
- done < "/proc/${session_pid}/environ"
- fi
- }
- import_xfce_environment
- # Fallback correspondant à notre stack actuelle.
- export DISPLAY="${DISPLAY:-:20}"
- STATE_DIR="${XDG_RUNTIME_DIR:-/tmp}/sunshine-gaming-mode"
- STATE_FILE="${STATE_DIR}/xfce-state"
- mkdir -p "${STATE_DIR}"
- log "Entering gaming mode on DISPLAY=${DISPLAY}"
- desktop_was_running=0
- panel_was_running=0
- if pgrep -u "$(id -u)" -x xfdesktop >/dev/null 2>&1; then
- desktop_was_running=1
- log "Stopping xfdesktop"
- xfdesktop --quit >/dev/null 2>&1 || true
- fi
- if pgrep -u "$(id -u)" -x xfce4-panel >/dev/null 2>&1; then
- panel_was_running=1
- log "Stopping xfce4-panel"
- xfce4-panel --quit >/dev/null 2>&1 || true
- fi
- # Laisse un fond propre pendant le lancement du jeu.
- if command -v xsetroot >/dev/null 2>&1; then
- xsetroot -solid black >/dev/null 2>&1 || true
- fi
- cat > "${STATE_FILE}" <<EOF
- desktop=${desktop_was_running}
- panel=${panel_was_running}
- EOF
- log "Gaming mode enabled"
- # Ne jamais empêcher Sunshine de lancer le jeu.
- exit 0
|