|
|
@@ -6,71 +6,43 @@ 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}"
|
|
|
+ printf '[%s] [ENTER] %s\n' \
|
|
|
+ "$(date '+%Y-%m-%d %H:%M:%S')" \
|
|
|
+ "$*" >> "${LOG_FILE}"
|
|
|
}
|
|
|
|
|
|
-import_xfce_environment() {
|
|
|
- local session_pid
|
|
|
- local entry
|
|
|
+export DISPLAY="${DISPLAY:-:20.0}"
|
|
|
|
|
|
- session_pid="$(pgrep -u "$(id -u)" -x xfce4-session | head -n 1 || true)"
|
|
|
+log "Entering gaming mode"
|
|
|
|
|
|
- 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
|
|
|
-}
|
|
|
-
|
|
|
-log "Starting gaming-mode-enter"
|
|
|
-
|
|
|
-import_xfce_environment
|
|
|
-
|
|
|
-export DISPLAY="${DISPLAY:-:20}"
|
|
|
-
|
|
|
-STATE_DIR="${XDG_RUNTIME_DIR:-/tmp}/sunshine-gaming-mode"
|
|
|
-STATE_FILE="${STATE_DIR}/xfce-state"
|
|
|
-
|
|
|
-mkdir -p "${STATE_DIR}"
|
|
|
-
|
|
|
-desktop_was_running=0
|
|
|
-panel_was_running=0
|
|
|
+#
|
|
|
+# Minimiser toutes les fenêtres actuellement ouvertes.
|
|
|
+#
|
|
|
+if command -v wmctrl >/dev/null 2>&1; then
|
|
|
+ log "Minimizing existing windows"
|
|
|
|
|
|
-if pgrep -u "$(id -u)" -x xfdesktop >/dev/null 2>&1; then
|
|
|
- desktop_was_running=1
|
|
|
+ while read -r wid _; do
|
|
|
+ [[ -n "${wid}" ]] || continue
|
|
|
|
|
|
- log "Stopping xfdesktop..."
|
|
|
- timeout 2s xfdesktop --quit >/dev/null 2>&1 || \
|
|
|
- log "xfdesktop --quit timed out or returned an error"
|
|
|
-
|
|
|
- log "xfdesktop step completed"
|
|
|
+ wmctrl -i -r "${wid}" -b add,hidden >/dev/null 2>&1 || true
|
|
|
+ done < <(wmctrl -l)
|
|
|
+else
|
|
|
+ log "WARNING: wmctrl not found"
|
|
|
fi
|
|
|
|
|
|
-if pgrep -u "$(id -u)" -x xfce4-panel >/dev/null 2>&1; then
|
|
|
- panel_was_running=1
|
|
|
-
|
|
|
- log "Stopping xfce4-panel..."
|
|
|
- timeout 2s xfce4-panel -q >/dev/null 2>&1 || \
|
|
|
- log "xfce4-panel -q timed out or returned an error"
|
|
|
-
|
|
|
- log "xfce4-panel step completed"
|
|
|
+#
|
|
|
+# Masquer les éléments du bureau XFCE.
|
|
|
+#
|
|
|
+if pgrep -x xfdesktop >/dev/null 2>&1; then
|
|
|
+ log "Stopping xfdesktop"
|
|
|
+ pkill -TERM -x xfdesktop || true
|
|
|
fi
|
|
|
|
|
|
-if command -v xsetroot >/dev/null 2>&1; then
|
|
|
- log "Setting root background to black"
|
|
|
-
|
|
|
- timeout 2s xsetroot -solid black >/dev/null 2>&1 || \
|
|
|
- log "xsetroot timed out or returned an error"
|
|
|
+if pgrep -x xfce4-panel >/dev/null 2>&1; then
|
|
|
+ log "Stopping xfce4-panel"
|
|
|
+ pkill -TERM -x xfce4-panel || true
|
|
|
fi
|
|
|
|
|
|
-cat > "${STATE_FILE}" <<EOF
|
|
|
-desktop=${desktop_was_running}
|
|
|
-panel=${panel_was_running}
|
|
|
-EOF
|
|
|
-
|
|
|
log "Gaming mode enabled"
|
|
|
+
|
|
|
exit 0
|