| 12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576 |
- #!/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}"
- }
- 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
- }
- 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
- if pgrep -u "$(id -u)" -x xfdesktop >/dev/null 2>&1; then
- desktop_was_running=1
- log "Stopping xfdesktop..."
- timeout 2s xfdesktop --quit >/dev/null 2>&1 || \
- log "xfdesktop --quit timed out or returned an error"
- log "xfdesktop step completed"
- 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"
- 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"
- fi
- cat > "${STATE_FILE}" <<EOF
- desktop=${desktop_was_running}
- panel=${panel_was_running}
- EOF
- log "Gaming mode enabled"
- exit 0
|