A simulacrum of a functional swayidle script.

Working: A proper countdown to idle works and is cancelled on resume.
Displays are dimmed if possible at countdown start and restorted at
resume. The screens properly lock. The power to the displays is turned
off. The power is restore upon first resume. Layout and brightness
restored on unlock.

Known issue: Displays are not restored if the system idles again while
on lock screen. This shouldn't really happen and is a possible indicator
of tampering, which is kind of cool, but it's janky. Power needs to be
restored with the toggle_displays hotkey.
这个提交包含在:
John Mertz 2021-01-17 21:54:21 -05:00
父节点 41ebb871d6
当前提交 978a6aef4b
共有 2 个文件被更改,包括 48 次插入0 次删除

43
sway/idle.sh 可执行文件
查看文件

@ -0,0 +1,43 @@
#!/bin/bash
BLFILE="/home/jpm/.config/blc.last"
OPFILE="/home/jpm/.config/active_outputs"
if [ -z $1 ]; then
echo "Missing argument: run, warn, sleep or" \
" wake"
elif [ $1 == "start" ]; then
swayidle -w timeout 270 "/home/jpm/scripts/sway/idle.sh warn" \
resume "/home/jpm/scripts/sway/idle.sh resume" \
timeout 300 "/home/jpm/scripts/sway/idle.sh sleep" \
resume "/home/jpm/scripts/sway/idle.sh wake" \
before-sleep "/usr/bin/swaylock -c 323232"
elif [ $1 == "warn" ]; then
# Store current brightness
echo $(/home/jpm/scripts/thinkpad/blc.pl %) > $BLFILE
# Dim display
/home/jpm/scripts/thinkpad/blc.pl = 1
# Warning notifications
/home/jpm/scripts/sway/idlecountdown.sh
elif [ $1 == "sleep" ]; then
# Change nick to AFK
ssh jpm@john.me.tz -i /home/jpm/.ssh/no_pass -t \
'screen -S irssi -X stuff "/nick jpmAFK^M"'
# Turn off monitor
for i in `cat $OPFILE`; do swaymsg "output $i dpms off"; done
elif [ $1 == "wake" ]; then
# Kill additional counters that might have been started
/home/jpm/scripts/sway/idle.sh resume
# Restore output(s)
/home/jpm/scripts/sway/displays.pl
#for i in `cat $OPFILE`; do swaymsg "output $i dpms on"; done
# Lock screen
swaylock -c 323232
# Restore brightness level
/home/jpm/scripts/thinkpad/blc.pl = $(cat $BLFILE)
elif [ $1 == "resume" ]; then
# Kill warning
for i in `pgrep idlecountdown`; do kill $i; done
else
echo "Invalid argument: run, sleep or wake"
fi

5
sway/idlecountdown.sh 可执行文件
查看文件

@ -0,0 +1,5 @@
#!/bin/bash
for i in `seq 0 30`; do
notify-send -t 999 "Sleeping" $(expr 30 - $i); sleep 1
done