1
1
Fork 0

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.
Esse commit está contido em:
John Mertz 2021-01-17 21:54:21 -05:00
commit 978a6aef4b
2 arquivos alterados com 48 adições e 0 exclusões

43
sway/idle.sh Executable file
Ver arquivo

@ -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 Executable file
Ver arquivo

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