You've probably already found Swaylock, but the configuration is a bit confusing. Here's my setup.
All of these codes are meant to be put in ~/.config/sway/config, unless stated otherwise
Idle lock
- Turn screen off in 9min30sec
- Lock screen in 10min (so 30sec after screen off)
- Lock screen when going to sleep
set $lock swaylock -c 550000
exec swayidle -w \
timeout 600 $lock \
timeout 570 'swaymsg "output * dpms off"' \
resume 'swaymsg "output * dpms on"' \
before-sleep $lock
Manual lock
Win + l
to lock the screen immediately- in 10 sec also switch the screen off
set $lockman exec bash ~/.config/sway/lockman.sh
bindsym $mod+l exec $lockman
And the file ~/.config/sway/lockman.sh
:
#!/bin/sh
# Times the screen off and puts it to background
swayidle \
timeout 10 'swaymsg "output * dpms off"' \
resume 'swaymsg "output * dpms on"' &
# Locks the screen immediately
swaylock -c 550000
# Kills last background task so idle timer doesn't keep running
kill %%
Fancy lock screen
Just remove swaylock
and instead install swaylock-effects
. In case you're in Arch that's yay -S swaylock-effects-git
. The command will stay the same. And here's my command to use all the effects:
swaylock --clock --indicator --screenshots --effect-scale 0.4 --effect-vignette 0.2:0.5 --effect-blur 4x2 --datestr "%a %e.%m.%Y" --timestr "%k:%M"