elenapan/config/eww/scripts/input-sink-lockscreen.sh
2024-12-14 01:41:23 +02:00

40 lines
1.4 KiB
Bash
Executable file

#!/usr/bin/env bash
eww="$HOME/.config/eww/scripts"
if [[ -z "$1" ]]; then
echo You did not specify a key
exit 1
fi
key=$1
current_input="$(eww get screen-lock-input)"
current_input_length=${#current_input}
if [[ "$key" == "backspace" ]]; then
if (( current_input_length == 0 )); then
exit 1
fi
eww update \
screen-lock-input="${current_input::-1}" \
screen-lock-input-masked="$(printf '%*s\n' "$((current_input_length - 1))" '' | tr ' ' '*')" \
screen-lock-input-last-action="$([[ $((current_input_length - 1)) == 0 ]] && echo clear || echo delete)" \
screen-lock-auth-failed=false
elif [[ "$key" == "c-backspace" || "$key" == "escape" ]]; then
eww update \
screen-lock-input= \
screen-lock-input-masked= \
screen-lock-input-last-action=clear \
screen-lock-auth-failed=false
elif [[ "$key" == "return" ]]; then
if [[ "$(eww get screen-lock-input)" == "$(eww get screen-lock-password)" ]]; then
"${eww}/manage" hide powermenu
eww update screen-locked=false screen-lock-input-last-action=clear
else
eww update screen-lock-auth-failed=true
fi
elif (( current_input_length < 16 )); then
eww update \
screen-lock-input="${current_input}${key}" \
screen-lock-input-masked="$(printf '%*s\n' "$((current_input_length + 1))" '' | tr ' ' '*')" \
screen-lock-input-last-action=insert \
screen-lock-auth-failed=false
fi