sway: add screensaver: lock and turn off display

This commit is contained in:
Konstantin Koslowski 2025-01-03 13:56:06 +01:00
parent 6c50990ed6
commit b6fcc08f61
3 changed files with 30 additions and 12 deletions

View file

@ -2,19 +2,20 @@
TERM_CMD="foot -T float"
LOCK_CMD="$HOME/.config/sway/bin/sway_lock"
SUS_CMD="$HOME/.config/sway/bin/sway_suspend"
PWR_CMD="$HOME/.config/sway/bin/sway_power"
### Idle configuration
# 9 min warning
# 10 min screen off
# 15 min lock
# 30 min suspend on battery
# 60 min suspend on battery
# 120 min suspend
pkill -x swayidle
swayidle -w \
timeout 1500 "$TERM_CMD bash -c 'dunstify -r 123 -u critical -t 300 display\ will\ turn\ off\ soon'" \
resume "$LOCK_CMD on" \
timeout 1800 "$LOCK_CMD off" \
timeout 2700 "$LOCK_CMD lockonly" \
timeout 3600 "$SUS_CMD suspend-battery" \
timeout 7200 "$SUS_CMD suspend" \
before-sleep "$LOCK_CMD lock"
timeout 540 "echo $TERM_CMD bash -c 'dunstify -r 123 -u critical -t 300 display\ will\ turn\ off\ soon'" \
resume "echo $LOCK_CMD on" \
timeout 600 "echo $LOCK_CMD off" \
timeout 900 "echo $LOCK_CMD lockonly" \
timeout 3600 "echo $PWR_CMD suspend-battery" \
timeout 7200 "echo $PWR_CMD suspend" \
before-sleep "echo $LOCK_CMD lock"

View file

@ -1,8 +1,10 @@
#!/bin/bash
export PATH=$PATH:$HOME/.config/sway/bin
IMG_BASE=$HOME/.local/share/icons/Tela-circle-dark
IMG_LOCK=$IMG_BASE/scalable/apps/system-log-out.svg
IMG_LOCK=$IMG_BASE/scalable/apps/preferences-desktop-screensaver.svg
CMD_LOCK="sway_lock lock"
IMG_SCREENSAVER=$IMG_BASE/scalable/apps/preferences-desktop-screensaver.svg
CMD_SCREENSAVER="sway_lock screensaver"
IMG_SUSPEND=$IMG_BASE/scalable/apps/system-suspend.svg
CMD_SUSPEND="sway_power suspend"
IMG_SUSPEND_HIB=$IMG_BASE/scalable/apps/system-suspend.svg
@ -15,6 +17,7 @@ IMG_EXIT=$IMG_BASE/scalable/apps/system-restart.svg
CMD_EXIT="swaymsg exit"
echo -e "img:$IMG_LOCK:text:$CMD_LOCK
img:$IMG_SCREENSAVER:text:$CMD_SCREENSAVER
img:$IMG_SUSPEND:text:$CMD_SUSPEND
img:$IMG_SUSPEND_HIB:text:$CMD_SUSPEND_HIB
img:$IMG_POWEROFF:text:$CMD_POWEROFF

View file

@ -7,7 +7,8 @@ SCROT_APP_ARGS=" -t png -l 0"
SCROT_FILE_BASE=$HOME/.lockscreen
SCROT_FILE_EXT=png
LOCK_APP=swaylock
LOCK_ARGS=" -f -F -e -s fill -c 000000 --indicator-radius 100 --indicator-thickness 20"
# LOCK_ARGS=" -f -F -e -s fill -c 000000 --indicator-radius 100 --indicator-thickness 20"
LOCK_ARGS=" -F -e -s fill -c 000000 --indicator-radius 100 --indicator-thickness 20"
INHIBIT_FILE=$HOME/.inhibit_lock
CONVERT=convert
@ -70,6 +71,9 @@ case "$1" in
i*)
_set_inhibit $INHIBIT_FILE $2
;;
clean)
_clean
;;
lock)
_on
_screenshot
@ -88,13 +92,23 @@ case "$1" in
_on
_clean
;;
screensaver)
_screenshot
swayidle -w \
timeout 5 'swaymsg "output * dpms off"' \
resume 'swaymsg "output * dpms on"' &
PID=$!
_lock
_clean
kill $PID
;;
screenshot)
_on
_screenshot
;;
*)
echo "invalid argument \"$1\""
echo "arguments: [inhibit [on|off]|lock|lockonly|off|on|screenshot]"
echo "arguments: [inhibit [on|off]|lock|lockonly|off|on|screensaver|screenshot]"
esac