From 373bfd4a9bc6b0a0e08b5f02a4f5611bf4f87987 Mon Sep 17 00:00:00 2001 From: nevaforget Date: Wed, 22 Apr 2026 08:23:25 +0200 Subject: [PATCH] fix(moonup): keep terminal open on errors via EXIT trap MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit The previous end-of-script `read` never ran when `set -e` aborted mid-way (pacman conflict, paru failure, Ctrl+C), so foot closed on errors — exactly when the user most needs to see the output. Move the pause into a trap on EXIT, gated by `MOONUP_WAIT=1` so CLI use stays non-interactive. Waybar on-click now sets the env var. --- defaults/xdg/waybar/config | 2 +- scripts/moonarch-update | 21 +++++++++++++++------ 2 files changed, 16 insertions(+), 7 deletions(-) diff --git a/defaults/xdg/waybar/config b/defaults/xdg/waybar/config index 7022f6c..63ee4c0 100644 --- a/defaults/xdg/waybar/config +++ b/defaults/xdg/waybar/config @@ -217,7 +217,7 @@ }, "exec": "moonarch-waybar-updates", "interval": 60, - "on-click": "foot moonarch-update" + "on-click": "foot env MOONUP_WAIT=1 moonarch-update" }, "custom/notification": { "tooltip": true, diff --git a/scripts/moonarch-update b/scripts/moonarch-update index bccb51b..327d381 100755 --- a/scripts/moonarch-update +++ b/scripts/moonarch-update @@ -19,6 +19,21 @@ _t() { esac } +# Pause on exit when launched from a GUI (Waybar sets MOONUP_WAIT=1). +# Runs via trap so it fires even when `set -e` aborts the script mid-way. +_pause_on_exit() { + local rc=$? + if [[ -n "${MOONUP_WAIT:-}" && -t 0 ]]; then + echo + if (( rc != 0 )); then + echo -e "\e[1;31m[Moonarch ERROR]\e[0m $(_t "Exited with error (code $rc)" "Mit Fehler beendet (Code $rc)")" >&2 + fi + read -n 1 -s -r -p "$(_t "Press any key to close..." "Beliebige Taste drücken zum Schließen …")" || true + echo + fi +} +trap _pause_on_exit EXIT + # --- Helper functions --- log() { @@ -120,9 +135,3 @@ log "" log "============================================" log " $(_t "Moonarch update complete!" "Moonarch-Aktualisierung abgeschlossen!")" log "============================================" - -# Keep terminal open when launched from a GUI (e.g. Waybar on-click) -if [[ -t 0 ]]; then - echo - read -n 1 -s -r -p "$(_t "Press any key to close..." "Beliebige Taste drücken zum Schließen …")" -fi