diff --git a/PKGBUILD b/PKGBUILD index 8f10397..02ba722 100644 --- a/PKGBUILD +++ b/PKGBUILD @@ -27,5 +27,6 @@ build() { package() { cd "$pkgname" install -Dm755 "target/release/$pkgname" "$pkgdir/usr/bin/$pkgname" + install -Dm755 "scripts/corsairctl-waybar.sh" "$pkgdir/usr/bin/corsairctl-waybar" install -Dm644 "udev/99-corsair.rules" "$pkgdir/usr/lib/udev/rules.d/99-corsair.rules" } diff --git a/scripts/corsairctl-waybar.sh b/scripts/corsairctl-waybar.sh new file mode 100755 index 0000000..6922bbd --- /dev/null +++ b/scripts/corsairctl-waybar.sh @@ -0,0 +1,23 @@ +#!/bin/bash +# ABOUTME: Waybar-Wrapper für corsairctl — cached JSON-Output. +# ABOUTME: Verhindert dass mehrere Waybar-Bars gleichzeitig das HID-Gerät ansprechen. + +CACHE="/tmp/corsairctl-waybar.json" +LOCK="/tmp/corsairctl-waybar.lock" +MAX_AGE=10 + +# Cache frisch genug? +if [[ -f "$CACHE" ]]; then + age=$(( $(date +%s) - $(stat -c %Y "$CACHE") )) + if (( age < MAX_AGE )); then + cat "$CACHE" + exit 0 + fi +fi + +# Lock holen und aktualisieren +( + flock -n 9 || { [[ -f "$CACHE" ]] && cat "$CACHE"; exit 0; } + corsairctl json > "$CACHE" 2>/dev/null + cat "$CACHE" +) 9>"$LOCK"