#!/bin/bash source $HOME/.config/sway/bin/sway_helpers LOCK_IMAGE=$HOME/.config/sway/bin/lock.png MEDIA_APP=playerctl SCROT_APP=grim SCROT_APP_ARGS=" -t png -l 0" SCROT_FILE_BASE=$HOME/.lockscreen SCROT_FILE_EXT=png LOCK_APP=swaylock LOCK_ARGS=" -f -F -e -s fill -c 000000 --indicator-radius 100 --indicator-thickness 20" INHIBIT_FILE=$HOME/.inhibit_lock function _clean() { for output in $(_outputs); do SCROT_FILE=${SCROT_FILE_BASE}_${output}.${SCROT_FILE_EXT} rm -vf $SCROT_FILE done } function _lock() { _check_inhibit $INHIBIT_FILE $MEDIA_APP pause _check_running $LOCK_APP for output in $(_outputs); do SCROT_FILE=${SCROT_FILE_BASE}_${output}.${SCROT_FILE_EXT} LOCK_ARGS+=" -i ${output}:$SCROT_FILE" done $LOCK_APP $LOCK_ARGS } function _off() { swaymsg "output * dpms off" } function _on() { swaymsg "output * dpms on" } function _outputs() { swaymsg -t get_outputs | jq '.[] |select(.active == true) | .name' | while read line; do echo ${line//\"/} done } function _screenshot() { for output in $(_outputs); do SCROT_FILE=${SCROT_FILE_BASE}_${output}.${SCROT_FILE_EXT} echo $SCROT_FILE $SCROT_APP $SCROT_APP_ARGS -o $output $SCROT_FILE # convert -blur 0x5 $SCROT_FILE $SCROT_FILE # convert -motion-blur 15x15 $SCROT_FILE $SCROT_FILE convert -scale 20% -blur 2x2 -resize 500% $SCROT_FILE $SCROT_FILE convert -composite -gravity center $SCROT_FILE $LOCK_IMAGE $SCROT_FILE done } ## main _log LOCK INFO args: $* _check_app $LOCK_APP _check_app $SCROT_APP _check_app $MEDIA_APP case "$1" in i*) _set_inhibit $INHIBIT_FILE $2 ;; lock) _on _screenshot _lock _clean ;; lockonly) _lock _clean ;; off) _screenshot _off ;; on) _on _clean ;; screenshot) _on _screenshot ;; *) echo "invalid argument \"$1\"" echo "arguments: [inhibit [on|off]|lock|lockonly|off|on|screenshot]" esac