aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--AGENTS.md5
-rwxr-xr-xinstall.sh11
2 files changed, 11 insertions, 5 deletions
diff --git a/AGENTS.md b/AGENTS.md
index 90f4bdc..329a20e 100644
--- a/AGENTS.md
+++ b/AGENTS.md
@@ -186,8 +186,9 @@ tab, so each producer reports on every run and a consumer that caught up
disappears by itself. The producers are `udt-grub`, `udt-homepage`,
`install.sh`'s SDDM block (only the steps still missing), and `install.sh`
itself, which reruns itself as a child and hands its whole output to an
-`install` tab on every run, whoever called it: the usual caller is the
-appearance panel, not a terminal. So its output is written for that tab, a
+`install` tab whenever it failed or printed a command, whoever called it, and
+clears the tab otherwise, so a login's wallpaper restore does not reopen an
+old recap. The usual caller is the appearance panel, not a terminal. So its output is written for that tab, a
summary rather than a file list. A line indented two spaces is a command with
a copy button; the rest is prose. It replaced notification balloons, which could not be kept open while
pasting into a root shell.
diff --git a/install.sh b/install.sh
index 7b6ca28..95d3325 100755
--- a/install.sh
+++ b/install.sh
@@ -8,14 +8,19 @@ repo="$(cd "$(dirname "${BASH_SOURCE[0]}")" && pwd)"
target="$HOME/.config/rofi/udt"
# Everything this prints also becomes the install tab of quickshell's steps
-# window, from whichever caller: the usual one is the appearance panel, not a
-# terminal, so the hints are assumed wanted on screen. The script reruns
-# itself as a child so the output can be both shown live and kept whole.
+# window when there is something to do, from whichever caller: the usual one
+# is the appearance panel, not a terminal, so the hints are assumed wanted on
+# screen. The script reruns itself as a child so the output can be both shown
+# live and kept whole.
if [ -z "${UDT_INSTALL_CHILD:-}" ]; then
log="$(mktemp)"
trap 'rm -f "$log"' EXIT
rc=0
UDT_INSTALL_CHILD=1 "$repo/install.sh" "$@" 2>&1 | tee "$log" || rc=$?
+ # Only a failure or a command to run (a line indented two spaces) is
+ # something to do; otherwise the tab is cleared, so a login's wallpaper
+ # restore, which pokes the window, does not reopen a stale recap.
+ if [ "$rc" -eq 0 ] && ! grep -q '^ ' "$log"; then : > "$log"; fi
"$repo/bin/udt-steps" install < "$log"
exit "$rc"
fi