diff --git a/tree/.local/bin/screenlock b/tree/.local/bin/screenlock new file mode 100755 index 0000000..34e7fb6 --- /dev/null +++ b/tree/.local/bin/screenlock @@ -0,0 +1,50 @@ +#!/usr/bin/fish + +# configured for wayland +set LOCKPROG swaylock +set OPTIONAL_CMDS rg sed grim lockscreen-blur +set CONFIG "$HOME/.config/sway/swaylock.config" +set DEFAULT_ARGS --daemonize --ignore-empty-password --show-failed-attempts --color 302f3b --config $CONFIG +set BLUR_FACTOR 40 + +# check if lock program is running +if ps -e | grep " $LOCKPROG\$" + echo "$LOCKPROG is already running" + exit 1 +end + +# check if we have programs required to take a screenshot and do cool stuff with it +for cmd in $OPTIONAL_CMDS + if not command -v $cmd &>/dev/null + echo "$cmd could not be found, falling back to basic mode." + $LOCKPROG $DEFAULT_ARGS + exit 0 + end +end + +# get a list of outputs/monitors +switch $XDG_CURRENT_DESKTOP + case Hyprland + set outputs (hyprctl monitors | rg Monitor | sed 's/Monitor //' | sed 's/ (ID.*$//') + case sway + set outputs (swaymsg -t get_outputs -r | rg "name" | sed 's/^.*"name": "//' | sed 's/",$//') + case niri + set outputs (niri msg outputs | rg --pcre2 -o '[^" ]+(?=")') + case '*' + echo "unsupported compositor, falling back to basic mode." + $LOCKPROG $DEFAULT_ARGS + exit 0 +end + +# take one screenshot of each output +for output in $outputs + set img "/tmp/lock-$output.png" + grim -o $output -t ppm - | lockscreen-blur -o $img -b $BLUR_FACTOR --stamp ~/.config/wallpapers/ferris-stamp.png & + set -a images --image + set -a images "$output:$img" +end + +# wait for all screenshot jobs to complete +wait + +$LOCKPROG $DEFAULT_ARGS $images diff --git a/tree/.local/bin/screenlock.tpl b/tree/.local/bin/screenlock.tpl deleted file mode 100755 index 38e3382..0000000 --- a/tree/.local/bin/screenlock.tpl +++ /dev/null @@ -1,47 +0,0 @@ -#!/usr/bin/fish - -# configured for wayland -set LOCKPROG swaylock -set OPTIONAL_CMDS grep sed grim lockscreen-blur -set CONFIG "$HOME/.config/sway/swaylock.config" -set DEFAULT_ARGS --daemonize --color "302f3b" --config $CONFIG -set BLUR_FACTOR 40 - -# check if lock program is running -if ps -e | grep " $LOCKPROG\$" - echo "$LOCKPROG is already running" - exit 1 -end - -for cmd in $OPTIONAL_CMDS - if not command -v $cmd &>/dev/null - echo "$cmd could not be found, falling back to basic mode." - $LOCKPROG $DEFAULT_ARGS - exit 0 - end -end - - -{% if hostname == "buran" %} -# list display outputs using hyprctl -set outputs (hyprctl monitors | rg Monitor | sed 's/Monitor //' | sed 's/ (ID.*$//') -{% elif hostname == "sputnik" %} -# list display outputs using hyprctl -set outputs (hyprctl monitors | rg Monitor | sed 's/Monitor //' | sed 's/ (ID.*$//') -{% else %} -# list display outputs using swaymsg -set outputs (swaymsg -t get_outputs -r | grep "name" | sed 's/^.*"name": "//' | sed 's/",$//') -{% end %} - -# take one screenshot of each output -for output in $outputs - set img "/tmp/lock-$output.png" - grim -o $output -t ppm - | lockscreen-blur -o $img -b $BLUR_FACTOR --stamp ~/.config/wallpapers/ferris-stamp.png & - set -a images "--image" - set -a images "$output:$img" -end - -wait - -$LOCKPROG $DEFAULT_ARGS $images -