aboutsummaryrefslogtreecommitdiffstatshomepage
diff options
context:
space:
mode:
authorLibravatar sommerfeld <sommerfeld@sommerfeld.dev>2026-05-13 13:43:11 +0100
committerLibravatar sommerfeld <sommerfeld@sommerfeld.dev>2026-05-13 13:43:11 +0100
commite1bea3564e395c0dd7f046ca30327977065a5eb9 (patch)
treee8d16cdc8a45e200055c3fd409edb3c823be4e23
parent867070246609a3ec05a42cccde8cbf91897fde52 (diff)
downloaddotfiles-e1bea3564e395c0dd7f046ca30327977065a5eb9.tar.gz
dotfiles-e1bea3564e395c0dd7f046ca30327977065a5eb9.tar.bz2
dotfiles-e1bea3564e395c0dd7f046ca30327977065a5eb9.zip
feat(sway): auto-lock on idle and before suspend
- logind: IdleAction=lock, IdleActionSec=5min. systemd emits a lock signal at 5min idle (session becomes locked from logind PoV; swayidle listens and invokes swaylock). - swayidle: lock at 5min, blank display at 6min, lock before sleep. Closes the gap where lid-close or manual suspend would wake to an unlocked session. - swaylock: add -i (--ignore-empty-password) to ignore accidental Enter. - meta/wayland: add swayidle.
-rw-r--r--dot_config/sway/config9
-rw-r--r--etc/systemd/logind.conf57
-rw-r--r--meta/wayland.txt1
3 files changed, 66 insertions, 1 deletions
diff --git a/dot_config/sway/config b/dot_config/sway/config
index 119849d..d780023 100644
--- a/dot_config/sway/config
+++ b/dot_config/sway/config
@@ -136,7 +136,7 @@ bindsym Print exec grim -g "$(slurp)" ~/pics/screenshots/$(date +%Y-%m-%d-%H-%M-
bindsym Shift+Print exec grim ~/pics/screenshots/$(date +%Y-%m-%d-%H-%M-%S).png
# Lock & pause
-bindsym $mod+Shift+s exec "playerctl -a pause; swaylock -f -c 282828"
+bindsym $mod+Shift+s exec "playerctl -a pause; swaylock -f -i -c 282828"
# Notifications
bindsym $mod+n exec makoctl dismiss
@@ -155,3 +155,10 @@ exec systemctl --user import-environment DISPLAY WAYLAND_DISPLAY SWAYSOCK XDG_CU
exec dbus-update-activation-environment --systemd DISPLAY WAYLAND_DISPLAY SWAYSOCK XDG_CURRENT_DESKTOP
exec "sleep 2 && ~/.config/sway/display-toggle.sh init"
exec systemctl --user start sway-session.target
+
+# Idle: lock at 5min (matches IdleActionSec), blank at 6min, lock before sleep.
+exec swayidle -w \
+ timeout 300 'swaylock -f -i -c 282828' \
+ timeout 360 'swaymsg "output * power off"' \
+ resume 'swaymsg "output * power on"' \
+ before-sleep 'playerctl -a pause; swaylock -f -i -c 282828'
diff --git a/etc/systemd/logind.conf b/etc/systemd/logind.conf
new file mode 100644
index 0000000..37c0b1f
--- /dev/null
+++ b/etc/systemd/logind.conf
@@ -0,0 +1,57 @@
+# This file is part of systemd.
+#
+# systemd is free software; you can redistribute it and/or modify it under the
+# terms of the GNU Lesser General Public License as published by the Free
+# Software Foundation; either version 2.1 of the License, or (at your option)
+# any later version.
+#
+# Entries in this file show the compile time defaults. Local configuration
+# should be created by either modifying this file (or a copy of it placed in
+# /etc/ if the original file is shipped in /usr/), or by creating "drop-ins" in
+# the /etc/systemd/logind.conf.d/ directory. The latter is generally
+# recommended. Defaults can be restored by simply deleting the main
+# configuration file and all drop-ins located in /etc/.
+#
+# Use 'systemd-analyze cat-config systemd/logind.conf' to display the full config.
+#
+# See logind.conf(5) for details.
+
+[Login]
+#NAutoVTs=6
+#ReserveVT=6
+#KillUserProcesses=no
+#KillOnlyUsers=
+#KillExcludeUsers=root
+#InhibitDelayMaxSec=5
+#UserStopDelaySec=10
+#SleepOperation=suspend-then-hibernate suspend
+#HandlePowerKey=poweroff
+#HandlePowerKeyLongPress=ignore
+#HandleRebootKey=reboot
+#HandleRebootKeyLongPress=poweroff
+#HandleSuspendKey=suspend
+#HandleSuspendKeyLongPress=hibernate
+#HandleHibernateKey=hibernate
+#HandleHibernateKeyLongPress=ignore
+#HandleLidSwitch=suspend
+#HandleLidSwitchExternalPower=suspend
+#HandleLidSwitchDocked=ignore
+#HandleSecureAttentionKey=secure-attention-key
+#PowerKeyIgnoreInhibited=no
+#SuspendKeyIgnoreInhibited=no
+#HibernateKeyIgnoreInhibited=no
+#LidSwitchIgnoreInhibited=yes
+#RebootKeyIgnoreInhibited=no
+#HoldoffTimeoutSec=30s
+#IdleAction=ignore
+IdleAction=lock
+#IdleActionSec=30min
+IdleActionSec=5min
+#RuntimeDirectorySize=10%
+#RuntimeDirectoryInodesMax=
+#RemoveIPC=yes
+#InhibitorsMax=8192
+#SessionsMax=8192
+#StopIdleSessionSec=infinity
+#DesignatedMaintenanceTime=
+#WallMessages=yes
diff --git a/meta/wayland.txt b/meta/wayland.txt
index 773b901..1ca642c 100644
--- a/meta/wayland.txt
+++ b/meta/wayland.txt
@@ -16,6 +16,7 @@ poweralertd
# Lock screen
swaylock
+swayidle
# Clipboard
wl-clipboard