#!/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