|
|
@@ -0,0 +1,72 @@
|
|
|
+#!/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
|