From 186a65ee86be8c15120d477e817d1594fe4320e7 Mon Sep 17 00:00:00 2001 From: nevaforget Date: Fri, 27 Mar 2026 23:46:19 +0100 Subject: [PATCH] fix: Waybar-Wrapper gibt immer Output aus MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Fallback-JSON wenn corsairctl fehlschlägt oder Cache leer ist. flock -w 5 statt -n damit der zweite Prozess wartet statt sofort aufzugeben. Atomares mv statt direktem Schreiben in Cache. --- scripts/corsairctl-waybar.sh | 18 ++++++++++++------ 1 file changed, 12 insertions(+), 6 deletions(-) diff --git a/scripts/corsairctl-waybar.sh b/scripts/corsairctl-waybar.sh index 6922bbd..0e3bd17 100755 --- a/scripts/corsairctl-waybar.sh +++ b/scripts/corsairctl-waybar.sh @@ -5,9 +5,10 @@ CACHE="/tmp/corsairctl-waybar.json" LOCK="/tmp/corsairctl-waybar.lock" MAX_AGE=10 +FALLBACK='{"text":"󰋋 ?","tooltip":"HS80: nicht erreichbar","class":"offline","percentage":0}' -# Cache frisch genug? -if [[ -f "$CACHE" ]]; then +# Cache frisch genug? Direkt ausgeben. +if [[ -f "$CACHE" ]] && [[ -s "$CACHE" ]]; then age=$(( $(date +%s) - $(stat -c %Y "$CACHE") )) if (( age < MAX_AGE )); then cat "$CACHE" @@ -15,9 +16,14 @@ if [[ -f "$CACHE" ]]; then fi fi -# Lock holen und aktualisieren +# Lock holen, abfragen, cachen. ( - flock -n 9 || { [[ -f "$CACHE" ]] && cat "$CACHE"; exit 0; } - corsairctl json > "$CACHE" 2>/dev/null - cat "$CACHE" + flock -w 5 9 || { cat "$CACHE" 2>/dev/null || echo "$FALLBACK"; exit 0; } + if corsairctl json > "${CACHE}.tmp" 2>/dev/null; then + mv "${CACHE}.tmp" "$CACHE" + cat "$CACHE" + else + rm -f "${CACHE}.tmp" + echo "$FALLBACK" + fi ) 9>"$LOCK"