Advanced-menu installs go quiet: fix stdin theft + silent wiring
YuKu on the VM: menu installs were not quiet — the ONE place dnf's full output still scrolled. Root cause: the per-item install loop read picks with 'while read ... <<< "$sel"' — a herestring REPLACES stdin for its whole body, so ui_quiet_run's tty gate saw 'piped' inside the loop and every menu install ran in plain mode. Picks are now read into an array first (herestring fills ONLY that); installs run in a for-loop that never touches stdin. Also silenced the remaining raw output in the menu path: - Chrome repo wiring -> install_optional (quiet) + setopt silenced, direct-rpm fallback via ui_quiet_run - Brave addrepo -> ui_quiet_run - flatpak installs -> ui_quiet_run; ui_quiet_run now also matches flatpak's 'Installing...' progress (Unicode ellipsis) for the live line and count, sanitized to printable ASCII (tr -cd) so a non-UTF8 console never sees garbage bytes. Pty-verified: live block lines + green summaries for chrome/gimp/ vscodium picks, flatpak progress only in the log, zero raw dnf or flatpak text on screen.
This commit is contained in:
+7
-3
@@ -140,9 +140,13 @@ ui_quiet_run() {
|
||||
local pid=$!
|
||||
local f=0 cur
|
||||
while kill -0 "$pid" 2>/dev/null; do
|
||||
# Match dnf ('Installing: pkg') AND flatpak ('Installing... id', a
|
||||
# Unicode ellipsis) progress lines; sanitize to printable ASCII so a
|
||||
# non-UTF8 console never sees garbage bytes in the live line.
|
||||
cur=$(sed -n "$((before+1)),\$p" "$log" 2>/dev/null \
|
||||
| grep -E '^(Installing|Upgrading|Downgrading|Removing|Verifying|Preparing|Cleanup):' \
|
||||
| tail -n 1 || true)
|
||||
| grep -aE '^Installing|^Upgrading|^Downgrading|^Removing|^Verifying|^Preparing|^Cleanup' \
|
||||
| tail -n 1 \
|
||||
| tr -cd '\11\12\40-\176' || true)
|
||||
# Compose ONCE, then clamp to the terminal width: a live line longer
|
||||
# than the screen wraps on every redraw and floods the screen with
|
||||
# duplicate partial lines (VM-proven on the 80-col TTY).
|
||||
@@ -172,7 +176,7 @@ ui_quiet_run() {
|
||||
printf '\r%*s\r' 100 '' >&2
|
||||
|
||||
if (( rc == 0 )); then
|
||||
n=$(sed -n "$((before+1)),\$p" "$log" 2>/dev/null | grep -c '^Installing:' || true)
|
||||
n=$(sed -n "$((before+1)),\$p" "$log" 2>/dev/null | grep -ac '^Installing' || true)
|
||||
local plural="s"
|
||||
(( n == 1 )) && plural=""
|
||||
if (( depth == 256 )); then
|
||||
|
||||
Reference in New Issue
Block a user