#!/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}" <