foxygit / dotfiles Log in
commit b3959d3cfbfcae98174cc55a50daec439046d065
Author:     MrJensK <jens.se@icloud.com>
AuthorDate: Thu Aug 13 15:34:40 2026 +0200
Commit:     MrJensK <jens.se@icloud.com>
CommitDate: Thu Aug 13 15:34:40 2026 +0200

    screensaver-toggle: enhance functionality to pause X server's blanking/DPMS timeout
---
 bin/screensaver-toggle | 20 +++++++++++++++-----
 1 file changed, 15 insertions(+), 5 deletions(-)

diff --git a/bin/screensaver-toggle b/bin/screensaver-toggle
index b0bd488..1fa45fd 100755
--- a/bin/screensaver-toggle
+++ b/bin/screensaver-toggle
@@ -1,17 +1,27 @@
 #!/bin/bash
-# Pauses/resumes screensaverd's idle detection. Run once to pause (also
-# stops the screensaver immediately if it's showing right now), run again
-# to resume. State is a flag file screensaverd polls every second, so
-# toggling takes effect within ~1s regardless of what screensaverd is
-# doing at the time.
+# Pauses/resumes screensaverd's idle detection AND the X server's own
+# blanking/DPMS timeout, so "off" really means nothing blanks the screen.
+# Run once to pause (also stops the screensaver immediately if it's showing
+# right now), run again to resume. State is a flag file screensaverd polls
+# every second, so toggling the TTE side takes effect within ~1s regardless
+# of what screensaverd is doing at the time.
 set -u

+export DISPLAY="${DISPLAY:-:0}"
 PAUSE_FILE="${XDG_RUNTIME_DIR:-/tmp}/screensaver-paused"

+# Must match what install.sh sets up (`xset s 300 300` / `xset dpms 300 300 300`).
+BLANK_TIMEOUT=300
+
 if [[ -e "$PAUSE_FILE" ]]; then
   rm -f "$PAUSE_FILE"
+  xset s "$BLANK_TIMEOUT" "$BLANK_TIMEOUT"
+  xset +dpms
+  xset dpms "$BLANK_TIMEOUT" "$BLANK_TIMEOUT" "$BLANK_TIMEOUT"
   echo "screensaver: återupptagen"
 else
   touch "$PAUSE_FILE"
+  xset s off
+  xset -dpms
   echo "screensaver: pausad"
 fi