summaryrefslogtreecommitdiffstats
path: root/.scripts/lockscreen
diff options
context:
space:
mode:
Diffstat (limited to '.scripts/lockscreen')
-rwxr-xr-x.scripts/lockscreen37
1 files changed, 37 insertions, 0 deletions
diff --git a/.scripts/lockscreen b/.scripts/lockscreen
new file mode 100755
index 0000000..eba33d3
--- /dev/null
+++ b/.scripts/lockscreen
@@ -0,0 +1,37 @@
+#!/bin/bash
+
+# Approximate timeout rate in milliseconds (checked every 5 seconds).
+timeout="10000"
+
+# Take a screenshot of every screen available:
+scrot -m -z /tmp/lock.png
+xdpyinfo -ext XINERAMA | sed '/^ head #/!d;s///' |
+{
+ cmd="convert /tmp/lock.png"
+ cmdend=""
+ while IFS=' :x@,' read i w h x y; do
+ cmd+=" -region ${w}x$h+$x+$y -paint 1 -swirl 360"
+ xc=$((x+(w/2)-79))
+ yc=$((y+(h/2)-79))
+ cmdend+=" ~/.scripts/lock.png -geometry +${xc}+${yc} -composite -matte"
+ done
+ cmd+="${cmdend} /tmp/screen.png"
+
+ eval $cmd
+} &
+
+prompt "Are you sure you want to lock the computer?" "" || exit
+
+# Pause music (mocp and mpd):
+mocp -P
+mpc pause
+pauseallmpv
+
+# Lock it up!
+i3lock -e -f -c 000000 -i /tmp/screen.png
+
+# If still locked after $timeout milliseconds, turn off screen.
+while [[ $(pgrep -x i3lock) ]]; do
+ [[ $timeout -lt $(xssstate -i) ]] && xset dpms force off
+ sleep 5
+done