Skip to content

Instantly share code, notes, and snippets.

@singulared
Created February 12, 2020 15:37
Show Gist options
  • Star 2 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save singulared/7c6d53c1b84fbb7cf22d07c5c7d3e945 to your computer and use it in GitHub Desktop.
Save singulared/7c6d53c1b84fbb7cf22d07c5c7d3e945 to your computer and use it in GitHub Desktop.
swaylock with image per-output
#!/bin/bash
# Dependencies:
# imagemagick
# swaylock
# grim
IMAGE=/tmp/i3lock.png
LOCK=~/.config/sway/lock.png
LOCKARGS=""
# All options are here: http://www.imagemagick.org/Usage/blur/#blur_args
#BLURTYPE="0x5" # 7.52s
#BLURTYPE="0x2" # 4.39s
#BLURTYPE="5x3" # 3.80s
BLURTYPE="2x8" # 2.90s
#BLURTYPE="2x3" # 2.92s
for OUTPUT in `swaymsg -t get_outputs | jq -r '.[].name'`
do
IMAGE=/tmp/$OUTPUT-lock.png
grim -o $OUTPUT $IMAGE
convert $IMAGE -blur $BLURTYPE -font Liberation-Sans -pointsize 26 -fill white -gravity center -comment 'Type password to unlock' - | composite -gravity center $LOCK - $IMAGE
LOCKARGS="${LOCKARGS} --image ${OUTPUT}:${IMAGE}"
IMAGES="${IMAGES} ${IMAGE}"
done
swaylock --text-color=ffffff00 --inside-color=ffffff1c --ring-color=ffffff3e --line-color=ffffff00 --key-hl-color=00000080 --ring-ver-color=00000000 --inside-ver-color=0000001c --ring-wrong-color=00000055 --inside-wrong-color=0000001c $LOCKARGS
rm $IMAGES
@stratosgear
Copy link

Had to make some slight changes:

  • Iterate over only active outputs
  • Use a different blurring program, to make it a little faster.

This is my edited version:

#!/bin/bash
 
# Dependencies:
# imagemagick
# swaylock
# grim
# corrupter (https://github.com/r00tman/corrupter)
 
IMAGE=/tmp/i3lock.png
LOCK=~/stow/bin/assets/stop.png
LOCKARGS=""

for OUTPUT in `swaymsg -t get_outputs | jq -r '.[] | select(.active == true) | .name'`
do
    IMAGE=/tmp/$OUTPUT-lock.png
    grim -o $OUTPUT $IMAGE
    corrupter -mag 1 -boffset 1  -meanabber 20 $IMAGE $IMAGE
    composite -gravity center $LOCK $IMAGE $IMAGE
    LOCKARGS="${LOCKARGS} --image ${OUTPUT}:${IMAGE}"
    IMAGES="${IMAGES} ${IMAGE}"
done
swaylock $LOCKARGS
rm $IMAGES

@singulared
Copy link
Author

Nice, thanks!

@fuzunspm
Copy link

fuzunspm commented Aug 5, 2020

how do i run this script from below sway config file?

exec swayidle -w \
         timeout 600 'swaylock -f -c 000000' \
         timeout 900 'swaymsg "output * dpms off"' \
              resume 'swaymsg "output * dpms on"' \
         before-sleep 'swaylock -f -c 000000'

@singulared
Copy link
Author

@fuzunspm replace swaylock -f -c 000000 with full path to this script.
Or place this script in one of your $PATH directory such as /usr/local/bin/ and call as sway-lock.sh.

@fuzunspm
Copy link

fuzunspm commented Aug 5, 2020

Thank you

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment