- Created .keep-screen-alive.sh wrapper script with multiple methods: * systemd-inhibit (primary - prevents OS-level sleep/suspend) * xset commands (prevents X11 screensaver) * Mouse movement (prevents idle timeout) - Added screen-keepalive.service systemd unit: * Runs xset s reset every 30 seconds * Auto-restarts on failure * Integrated with graphical session - Multiple layers of screen protection: * HDMI blanking disabled * CPU power saving disabled * System sleep/suspend disabled * X11 screensaver disabled * DPMS (Display Power Management) disabled * Display forced on periodically Screen will now remain active while player is running, preventing lockups or blank screens during playback.
55 lines
1.3 KiB
Bash
Executable File
55 lines
1.3 KiB
Bash
Executable File
#!/bin/bash
|
|
# Keep-screen-alive wrapper for player
|
|
# Prevents screen from locking/turning off while player is running
|
|
|
|
SCRIPT_DIR="$(cd "$(dirname "${BASH_SOURCE[0]}")" && pwd)"
|
|
|
|
# Function to keep screen awake
|
|
keep_screen_awake() {
|
|
while true; do
|
|
# Move mouse slightly to prevent idle
|
|
if command -v xdotool &> /dev/null; then
|
|
xdotool mousemove_relative 1 1
|
|
xdotool mousemove_relative -1 -1
|
|
fi
|
|
|
|
# Disable DPMS and screensaver periodically
|
|
if command -v xset &> /dev/null; then
|
|
xset s reset
|
|
xset dpms force on
|
|
fi
|
|
|
|
sleep 30
|
|
done
|
|
}
|
|
|
|
# Function to inhibit systemd sleep (if available)
|
|
inhibit_sleep() {
|
|
if command -v systemd-inhibit &> /dev/null; then
|
|
# Run player under systemd inhibit to prevent sleep
|
|
systemd-inhibit --what=sleep --why="Signage player running" \
|
|
bash "$SCRIPT_DIR/start.sh"
|
|
return $?
|
|
fi
|
|
return 1
|
|
}
|
|
|
|
# Try systemd inhibit first (most reliable)
|
|
if inhibit_sleep; then
|
|
exit 0
|
|
fi
|
|
|
|
# Fallback: Start keep-alive in background
|
|
keep_screen_awake &
|
|
KEEPALIVE_PID=$!
|
|
|
|
# Start the player
|
|
cd "$SCRIPT_DIR"
|
|
bash start.sh
|
|
PLAYER_EXIT=$?
|
|
|
|
# Kill keep-alive when player exits
|
|
kill $KEEPALIVE_PID 2>/dev/null || true
|
|
|
|
exit $PLAYER_EXIT
|