mirror of
https://github.com/elenapan/dotfiles.git
synced 2026-01-08 01:37:38 +08:00
40 lines
1.4 KiB
Bash
Executable file
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
|