gaming-mode-enter 1.8 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576
  1. #!/usr/bin/env bash
  2. set -u
  3. SCRIPT_DIR="$(cd -- "$(dirname -- "${BASH_SOURCE[0]}")" && pwd)"
  4. LOG_FILE="${SCRIPT_DIR}/gaming-mode.log"
  5. log() {
  6. printf '[%s] [ENTER] %s\n' "$(date '+%Y-%m-%d %H:%M:%S')" "$*" >> "${LOG_FILE}"
  7. }
  8. import_xfce_environment() {
  9. local session_pid
  10. local entry
  11. session_pid="$(pgrep -u "$(id -u)" -x xfce4-session | head -n 1 || true)"
  12. if [[ -n "${session_pid}" && -r "/proc/${session_pid}/environ" ]]; then
  13. while IFS= read -r -d '' entry; do
  14. case "${entry}" in
  15. DISPLAY=*|XAUTHORITY=*|DBUS_SESSION_BUS_ADDRESS=*|XDG_RUNTIME_DIR=*)
  16. export "${entry}"
  17. ;;
  18. esac
  19. done < "/proc/${session_pid}/environ"
  20. fi
  21. }
  22. log "Starting gaming-mode-enter"
  23. import_xfce_environment
  24. export DISPLAY="${DISPLAY:-:20}"
  25. STATE_DIR="${XDG_RUNTIME_DIR:-/tmp}/sunshine-gaming-mode"
  26. STATE_FILE="${STATE_DIR}/xfce-state"
  27. mkdir -p "${STATE_DIR}"
  28. desktop_was_running=0
  29. panel_was_running=0
  30. if pgrep -u "$(id -u)" -x xfdesktop >/dev/null 2>&1; then
  31. desktop_was_running=1
  32. log "Stopping xfdesktop..."
  33. timeout 2s xfdesktop --quit >/dev/null 2>&1 || \
  34. log "xfdesktop --quit timed out or returned an error"
  35. log "xfdesktop step completed"
  36. fi
  37. if pgrep -u "$(id -u)" -x xfce4-panel >/dev/null 2>&1; then
  38. panel_was_running=1
  39. log "Stopping xfce4-panel..."
  40. timeout 2s xfce4-panel -q >/dev/null 2>&1 || \
  41. log "xfce4-panel -q timed out or returned an error"
  42. log "xfce4-panel step completed"
  43. fi
  44. if command -v xsetroot >/dev/null 2>&1; then
  45. log "Setting root background to black"
  46. timeout 2s xsetroot -solid black >/dev/null 2>&1 || \
  47. log "xsetroot timed out or returned an error"
  48. fi
  49. cat > "${STATE_FILE}" <<EOF
  50. desktop=${desktop_was_running}
  51. panel=${panel_was_running}
  52. EOF
  53. log "Gaming mode enabled"
  54. exit 0