aboutsummaryrefslogtreecommitdiffstatshomepage
diff options
context:
space:
mode:
-rw-r--r--dot_config/sway/executable_resume-lock-grace.sh35
-rw-r--r--dot_config/systemd/user/swayidle.service13
2 files changed, 6 insertions, 42 deletions
diff --git a/dot_config/sway/executable_resume-lock-grace.sh b/dot_config/sway/executable_resume-lock-grace.sh
deleted file mode 100644
index 212eaa1..0000000
--- a/dot_config/sway/executable_resume-lock-grace.sh
+++ /dev/null
@@ -1,35 +0,0 @@
-#!/bin/sh
-# resume-lock-grace: lock the screen if the user stays idle for $1
-# (default 30) seconds after waking from suspend. Designed to be invoked
-# from swayidle's `after-resume` so a quick wake-and-keep-using doesn't
-# require typing the password, while a wake-and-walk-away still locks.
-#
-# Implementation: spawn a one-shot swayidle that locks once and exits.
-# A watchdog kills it as soon as swaylock is detected, and a hard cap
-# guarantees we never linger competing with the main swayidle.
-set -eu
-
-GRACE="${1:-30}"
-LOCK_CMD='swaylock -f -e -c 282828'
-HARD_CAP=$((GRACE * 4))
-
-# If a lock is already up (e.g. main swayidle already fired), do nothing.
-pgrep -x swaylock >/dev/null && exit 0
-
-swayidle -w timeout "$GRACE" "$LOCK_CMD" >/dev/null 2>&1 &
-PID=$!
-
-elapsed=0
-while [ "$elapsed" -lt "$HARD_CAP" ]; do
- if pgrep -x swaylock >/dev/null; then
- break
- fi
- if ! kill -0 "$PID" 2>/dev/null; then
- exit 0
- fi
- sleep 1
- elapsed=$((elapsed + 1))
-done
-
-kill "$PID" 2>/dev/null || true
-wait 2>/dev/null || true
diff --git a/dot_config/systemd/user/swayidle.service b/dot_config/systemd/user/swayidle.service
index 7f60847..dc84fe5 100644
--- a/dot_config/systemd/user/swayidle.service
+++ b/dot_config/systemd/user/swayidle.service
@@ -1,22 +1,21 @@
[Unit]
-Description=Idle manager for Wayland (lock + DPMS + post-resume grace)
+Description=Idle manager for Wayland (lock + DPMS)
PartOf=graphical-session.target
After=graphical-session.target
ConditionEnvironment=WAYLAND_DISPLAY
[Service]
Type=simple
-# We deliberately do NOT lock on `before-sleep`; instead we lock only
-# after a grace period post-resume, so a quick wake-and-keep-using
-# doesn't require the password. `before-sleep` only pauses media so the
-# call/track doesn't run on into suspend. The `lock` action still
-# handles explicit `loginctl lock-session` immediately.
+# `before-sleep` deliberately only pauses media -- it does not lock.
+# sway pauses its idle counter during suspend and resets on the first
+# input event after resume, so the existing `timeout 300` already
+# gives a 5-minute grace post-wake without a separate mechanism. The
+# `lock` action still handles explicit `loginctl lock-session`.
ExecStart=/usr/bin/swayidle -w \
timeout 300 'swaylock -f -e -c 282828' \
timeout 360 'swaymsg "output * power off"' \
resume 'swaymsg "output * power on"' \
before-sleep 'playerctl -a pause' \
- after-resume '%h/.config/sway/resume-lock-grace.sh 30' \
lock 'swaylock -f -e -c 282828'
Restart=on-failure
RestartSec=2s