40 lines
1.1 KiB
Bash
Executable file
40 lines
1.1 KiB
Bash
Executable file
#!/usr/bin/env bash
|
|
#
|
|
# Copied from:
|
|
# https://github.com/maximbaz/dotfiles/blob/40c0f7e/.local/bin/waybar-yubikey
|
|
|
|
socket="${XDG_RUNTIME_DIR:-/run/user/$UID}/yubikey-touch-detector.socket"
|
|
|
|
while true; do
|
|
touch_reasons=()
|
|
|
|
if [ ! -e "$socket" ]; then
|
|
printf '{"text": "Waiting for YubiKey socket"}\n'
|
|
while [ ! -e "$socket" ]; do sleep 1; done
|
|
fi
|
|
printf '{"text": ""}\n'
|
|
|
|
nc -U "$socket" | while read -n5 cmd; do
|
|
reason="${cmd:0:3}"
|
|
|
|
if [ "${cmd:4:1}" = "1" ]; then
|
|
touch_reasons+=("$reason")
|
|
else
|
|
for i in "${!touch_reasons[@]}"; do
|
|
if [ "${touch_reasons[i]}" = "$reason" ]; then
|
|
unset 'touch_reasons[i]'
|
|
break
|
|
fi
|
|
done
|
|
fi
|
|
|
|
if [ "${#touch_reasons[@]}" -eq 0 ]; then
|
|
printf '{"text": ""}\n'
|
|
else
|
|
tooltip="uwubikey wants to be touched, because ${touch_reasons[@]}"
|
|
printf '{"text": " 🔐 ", "tooltip": "%s"}\n' "$tooltip"
|
|
fi
|
|
done
|
|
|
|
sleep 1
|
|
done
|