| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869 |
- #!/usr/bin/env bash
- set -u
- LOG_DIR="${XDG_STATE_HOME:-${HOME}/.local/state}/sunshine"
- LOG_FILE="${LOG_DIR}/gaming-mode.log"
- mkdir -p "${LOG_DIR}"
- log() {
- printf '[%s] [LEAVE] %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
- }
- import_xfce_environment
- export DISPLAY="${DISPLAY:-:20}"
- STATE_DIR="${XDG_RUNTIME_DIR:-/tmp}/sunshine-gaming-mode"
- STATE_FILE="${STATE_DIR}/xfce-state"
- desktop_was_running=1
- panel_was_running=1
- if [[ -f "${STATE_FILE}" ]]; then
- source "${STATE_FILE}"
- fi
- log "Leaving gaming mode on DISPLAY=${DISPLAY}"
- if [[ "${desktop_was_running}" == "1" ]] &&
- ! pgrep -u "$(id -u)" -x xfdesktop >/dev/null 2>&1; then
- log "Starting xfdesktop"
- nohup xfdesktop --disable-wm-check \
- >> "${LOG_FILE}" 2>&1 &
- fi
- if [[ "${panel_was_running}" == "1" ]] &&
- ! pgrep -u "$(id -u)" -x xfce4-panel >/dev/null 2>&1; then
- log "Starting xfce4-panel"
- nohup xfce4-panel \
- >> "${LOG_FILE}" 2>&1 &
- fi
- rm -f "${STATE_FILE}"
- log "XFCE desktop restored"
- exit 0
|