Skip to content

Troubleshooting

Ken Tobias edited this page Aug 24, 2026 · 11 revisions

Troubleshooting

phys-mem / phys-disk fields are empty or missing

On Linux, phys-mem reads DMI memory tables and requires root:

sudo retch

Without root, the field is silently omitted rather than erroring — this is expected, not a bug. On Windows, phys-mem uses Win32_PhysicalMemory and phys-disk uses Get-PhysicalDisk, both via PowerShell — make sure powershell.exe is on PATH.

What sudo retch actually changes

Running under sudo is not simply "retch with more fields" — it trades one set for another, because sudo's default env_reset clears most of the environment. Diffing a sudo retch --full run against a plain one is therefore not a fair before/after.

Field
Root only phys-mem (DMI tables, mode 0400 root); the snapshot count in btrfs (btrfs subvolume list -s)
User only editor ($VISUAL/$EDITOR), desktop and wm (XDG_CURRENT_DESKTOP and friends)

The btrfs snapshot count is omitted, never shown as 0, when it can't be read, so "couldn't check" is never mistaken for "no snapshots".

Packages used to be on the root-only list and no longer is (v0.6.18). It looked like a permissions limit but was a bug: the RPM SQLite database was opened read-write, and since it is root-owned inside a root-owned directory, SQLite could not create its journal sidecars and every query failed with attempt to write a readonly database. It is now opened read-only with immutable=1 and works as a normal user. If you are on an older build, sudo retch --fields packages is the workaround.

weather field is missing or slow

weather requires network access (Open-Meteo for forecast data, ipinfo.io for IP-based auto-location if weather_location isn't set) and has a ~4s timeout. It's shown in --full mode only by default — it won't appear in standard, --short, or --long output even with network access. Set weather_location in config (city name, ZIP code, or lat,lon) to skip the IP geolocation round-trip.

domain-search field is empty

domain-search queries resolvectl status (systemd-resolved) for per-interface DNS search domains. On systems without systemd-resolved (or where it isn't managing DNS), this field will be empty. It's shown in --full mode only.

Logo doesn't appear when output is piped or redirected

This is intentional, not a bug: the logo is automatically suppressed whenever stdout is not a terminal (e.g. retch | bat, retch > file.txt, or when running inside a script). This avoids dumping raw terminal graphics escape sequences into a file or another program's input. Set show_logo = true in config has no effect on this behavior — the piping check always wins.

Logo isn't on the right margin, or a row is misaligned

Both were fixed in v0.9.2 — check yours with retch --version. On earlier builds you may see one or both of:

  • Logo floats in the middle of a wide terminal. The logo was drawn where the text column ended (capped at column 65) rather than at the right margin, so anything wider than roughly 110 columns left a gap. It is now anchored to the terminal's last column.
  • One row's logo sits a few columns further right than the others. Line widths were measured in characters rather than terminal columns, so any field value containing double-width characters — most often a CJK or Hangul track title in media / player — pushed that row's logo right by one column per wide character.

If the logo still stacks above the field list, that is the layout falling back deliberately: it needs at least 95 columns, and enough room for the text column and the logo side by side. Widen the terminal, or use --no-logo if you would rather have the width back.

A wrapped field value looks wrong

Long values wrap onto indented continuation lines. Three defects there were fixed in v0.9.3:

  • The second line is a different colour. Lines are colourised before they are wrapped, so the opening escape stayed on the first line and the closing one on the last — everything between rendered in the terminal's default colour.
  • A comma went missing at the break. American Megatrends International, LLC. wrapped to …International / LLC., which reads as two values. This one changed the value's meaning, not just its appearance, so a BIOS/Audio/DNS Server line read from a build before v0.9.3 may be missing a separator at a line break.
  • A value wrapped early on a wide terminal. Lines beside the logo wrapped to the text column (at most 65) rather than to the space actually available up to the logo, so a 283-column terminal could break a line at ~55 columns and leave the rest of the gap empty.

macOS: binary is quarantined / won't run after download

Prebuilt macOS release binaries are not yet code-signed or notarized (tracked as future work). If macOS blocks the binary after downloading a release asset directly:

xattr -dr com.apple.quarantine /path/to/retch

This isn't needed when installing via cargo install retch-cli, nix run github:l1a/retch, or building from source — only for binaries downloaded directly from a GitHub Release.

AUR install fails with "account registration disabled"

New account registrations on the Arch User Repository are temporarily suspended by Arch Linux (upstream AUR issue, not retch-specific). This blocks first-time package maintainers, not installation via an existing AUR helper. If yay -S retch / paru -S retch themselves fail, build and install locally instead:

git clone https://github.com/l1a/retch.git
cd retch/packaging/aur
makepkg -si

Local benchmarks look slower than expected

If you have FUSE-mounted volumes (e.g. cryfs, EncFS vaults), disk detection can be skewed by slow statvfs calls on those mounts. Standard, --short, and --long modes already skip fuse.* mounts to avoid this; only --full mode probes them. Unmount FUSE volumes before benchmarking, or discount runs where they're mounted.

Clone this wiki locally