Преглед на файлове

Ajout de 'scripts/gaming-mode-enter'

penta преди 4 седмици
родител
ревизия
cce8e3082b
променени са 1 файла, в които са добавени 72 реда и са изтрити 0 реда
  1. 72 0
      scripts/gaming-mode-enter

+ 72 - 0
scripts/gaming-mode-enter

@@ -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