feat(x11): disable X screensaver/DPMS blanking and enforce explicit-only locking

This commit is contained in:
Luxferre
2026-10-22 22:15:28 +03:00
parent c646800dbf
commit 179cc3066b
20 changed files with 38 additions and 227 deletions
@@ -77,9 +77,6 @@ case "$WMCLASS" in
$icon_zzz Auto-suspend $(
[ -e "$XDG_CACHE_HOME"/sxmo/sxmo.nosuspend ] && printf "%s" "$icon_tof" || printf "%s" "$icon_ton"
) ^ 1 ^ (rm $XDG_CACHE_HOME/sxmo/sxmo.nosuspend 2>/dev/null || touch $XDG_CACHE_HOME/sxmo/sxmo.nosuspend)
$icon_zzz Auto-screen-off $(
[ -e "$XDG_CACHE_HOME/sxmo/sxmo.noidle" ] && printf "%s" "$icon_tof" || printf "%s" "$icon_ton"
) ^ 1 ^ (rm $XDG_CACHE_HOME/sxmo/sxmo.noidle 2>/dev/null || touch $XDG_CACHE_HOME/sxmo/sxmo.noidle) && sxmo_state.sh set unlock
$icon_trm Hooks ^ 0 ^ sxmo_hookmenu.sh
$icon_cfg Suspend Blockers ^ 0 ^ sxmo_terminal.sh sxmo_debug_suspend.sh
$icon_inf Log ^ 0 ^ sxmo_terminal.sh tail -n 100 -f ${XDG_STATE_HOME:-$HOME}/sxmo.log
@@ -32,12 +32,7 @@ if [ -z "$SXMO_DISABLE_LEDS" ]; then
fi
sxmo_jobs.sh stop periodic_wakelock_check
# Go down after 8 seconds of inactivity
if [ -e "$XDG_CACHE_HOME/sxmo/sxmo.noidle" ]; then
sxmo_jobs.sh stop idle_locker
else
sxmo_jobs.sh start idle_locker sxmo_idle.sh -w \
timeout "${SXMO_LOCK_IDLE_TIME:-8}" "sxmo_state.sh idle"
fi
# Automatic idle transitions are disabled; only explicit locking is used
sxmo_jobs.sh stop idle_locker 2>/dev/null || true
wait
@@ -3,18 +3,5 @@
# SPDX-License-Identifier: AGPL-3.0-only
# Copyright 2022 Sxmo Contributors
sxmo_jobs.sh start idle_locker sxmo_idle.sh -w \
timeout 10 'sxmo_wm.sh display off' \
resume 'sxmo_wm.sh display on'
case "$SXMO_WM" in
sway|river)
swaylockd
;;
dwm)
i3lock
;;
esac
# need & cause we are still holding flock
sxmo_jobs.sh stop idle_locker 2>/dev/null || true
sxmo_state.sh set unlock &
@@ -24,9 +24,6 @@ while ! superctl status > /dev/null 2>&1; do
sleep 0.05
done
# Not dangerous if "locker" isn't an available state
sxmo_state.sh set locker
if [ -n "$SXMO_ROTATE_START" ]; then
sxmo_rotate.sh
fi
@@ -26,35 +26,7 @@ if [ -z "$SXMO_DISABLE_LEDS" ]; then
fi
sxmo_jobs.sh stop periodic_wakelock_check
# Go to the next idle state after 120 seconds of inactivity
if [ -e "$XDG_CACHE_HOME/sxmo/sxmo.noidle" ]; then
sxmo_jobs.sh stop idle_locker
else
case "$SXMO_WM" in
river)
sxmo_jobs.sh start idle_locker sxmo_idle.sh -w \
timeout "${SXMO_UNLOCK_IDLE_TIME:-120}" 'sh -c "
exec sxmo_state.sh idle
"'
;;
sway)
sxmo_jobs.sh start idle_locker sxmo_idle.sh -w \
timeout "${SXMO_UNLOCK_IDLE_TIME:-120}" 'sh -c "
swaymsg mode default;
exec sxmo_state.sh idle
"'
;;
i3)
# Idle fails to trigger if formatted like sway
sxmo_jobs.sh start idle_locker sxmo_idle.sh -w \
timeout "${SXMO_UNLOCK_IDLE_TIME:-120}" \
'sh -c "i3-msg mode default; exec sxmo_state.sh idle"'
;;
dwm)
sxmo_jobs.sh start idle_locker sxmo_idle.sh -w \
timeout "${SXMO_UNLOCK_IDLE_TIME:-120}" "sxmo_state.sh idle"
;;
esac
fi
# Automatic idle locking is disabled; only explicit locking is used
sxmo_jobs.sh stop idle_locker 2>/dev/null || true
wait