diff --git a/dot_bin/executable_screenlock b/dot_bin/executable_screenlock index ebc89de..a98af77 100644 --- a/dot_bin/executable_screenlock +++ b/dot_bin/executable_screenlock @@ -1,6 +1,8 @@ #! /bin/bash -## lock the screen using i3lock +## lock the screen using i3lock (and maybe suspend) + +## usage: screenlock [SUSPEND] # WORKAROUND make the date show up in the right place on 2+ monitor setups # I want it to only show up on the primary screen, so use xrandr to get the @@ -12,6 +14,7 @@ xpos=$(echo "$geometry" | cut -f2 -d" ") xoffset=$(("$xpos" + "$width" / 2)) datepos="$xoffset:600" +# lock and fork so we can suspend with the screen locked i3lock --color=000000 \ --pass-media-keys \ --nofork \ @@ -42,4 +45,17 @@ i3lock --color=000000 \ --wrong-size=72 \ --verif-size=72 \ --radius=300 \ - --ring-width=25 + --ring-width=25 & + +# suspend if we want, and if this machine is currently using a battery +batpath=/sys/class/power_supply/BAT0/status + +if [ -f "$batpath" ] && \ + [ "$(cat $batpath)" == "Discharging" ] && \ + [ "$1" == "true" ]; then + systemctl suspend +fi + +# block until the screen is unlocked (since xss-lock expects the locker to exit +# only when unlocked) +wait