From 61a34f40614d9bef11ec9b57f66a1338fb3bbd5d Mon Sep 17 00:00:00 2001 From: Ahwx Date: Fri, 11 Oct 2024 21:23:42 +0200 Subject: [PATCH] feat: adds script for yubikey-touch-detector to show in waybar --- modules/home/waybar/scripts.nix | 43 +++++++++++++++++++++++++++++++++ 1 file changed, 43 insertions(+) diff --git a/modules/home/waybar/scripts.nix b/modules/home/waybar/scripts.nix index 29a485e..43d327a 100644 --- a/modules/home/waybar/scripts.nix +++ b/modules/home/waybar/scripts.nix @@ -2,6 +2,49 @@ { home.file = { + "/home/${username}/.local/bin/waybar-yubikey" = { + executable = true; + text = '' + 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 + if [ "$1" == "0" ]; then + printf '{"text": ""}\n' + else + printf '{"text":"%s"}\n' "''${touch_reasons[@]}" + fi + fi + done + + sleep 1 + done + ''; + }; "/home/${username}/.local/bin/waybar-screenrecord" = { executable = true; text = ''