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