Removing Rust-based Programs on Arch Linux

Why?

There is usually no practical advantage to removing Rust-based software, mainly because rust is not a runtime, it statically compiles the program into a single binary, maybe only a a storage size concern.

However, some users may want to audit their system for personal preference, minimalism, curiosity, or ideological reasons.

Problem

On Arch-based distributions, Rust is often only a makedepend, so it is not listed in pacman -Q or similar package queries. That means there is no single command that can reliably detect which installed packages were built with Rust, because that information gets stripped from the package metadata.

Possible Way

Most compilers leave some kind of watermark or signature in the binaries they produce, so maybe we can use that.

rustc usually leaves a trace in the .comment section:

readelf -p .comment /usr/bin/tokei
String dump of section '.comment':
  [     0]  GCC: (GNU) 15.2.1 20251112
  [    1b]  rustc version 1.92.0 (ded5c06cf 2025-12-08) (Arch Linux rust 1:1.92.0-1)
  [    65]  Linker: LLD 21.1.6

[!IMPORTANT]
This method is heuristic, not authoritative. It detects many Rust-built binaries, but not all of them.

Since Arch Linux usually places binaries in /usr/bin, we can do:

find /usr/bin -maxdepth 1 -type f -executable -print0 |
xargs -0 -P"$(nproc)" -n50 readelf -p .comment 2>/dev/null |
awk '
/File:/ {file=$0}
/rustc/ {print file; print}
'

Or, a slower but more compatible way:

readelf -p .comment /usr/bin/* 2>/dev/null | grep -E "(File:|rustc)" | grep -B 1 "rustc"

This will print something like:

File: /usr/bin/bat
  [    1c]  rustc version 1.93.0 (254b59607 2026-01-19) (Artix Linux rust 1:1.93.0-1)
File: /usr/bin/paru
  [    1b]  rustc version 1.92.0 (ded5c06cf 2025-12-08) (Arch Linux rust 1:1.92.0-1)
File: /usr/bin/resvg
  [    1c]  rustc version 1.93.1 (01f6ddf75 2026-02-11) (Artix Linux rust 1:1.93.1-1)
File: /usr/bin/bluetui
  [    14]  rustc version 1.94.0 (4a4ef493e 2026-03-02) (Arch Linux rust 1:1.94.0-3)

Then you can manually evaluate whether you really need that software, or check Arch/Artix Package list to confirm whether the package was actually built with Rust or if it is a false positive.

For example, if you want to replace bat (Rust), since it is not a core program, one option could be ccat (Go).

Common alternatives

If you want to switch, i list some common alternatives (Please see notes below):

ProgramDescriptionAlternative(s)
paruAUR Helperyay (Go), pakku (Nim)
batPrint a file with highlightingccat (Go), core cat
lsd / ezaList files with icons/colorscolorls (Ruby), Core ls
tokeiCount lines of codescc (Go)
ripgrep (rg)Fast recursive text searchCore grep, ack (Perl), ag (C)
fdSimplified file finderCore find
zoxideSmarter cd (frecency-based)cd, autojump (Python)
bottom (btm)System/process monitorhtop (C), btop (C++)
dustVisual disk usagedu, ncdu (C), gdu (Go) (TUI)
xhUser-friendly HTTP clientcurl (C), httpie (Python)
bandwhichNetwork utilizationiftop (C), nethogs (C++)
deltaSyntax-highlighting pagerStandard git diff, diff-so-fancy (Perl)
starshipMinimal, fast shell promptOh My Zsh (Shell)
zellijTerminal multiplexertmux (C), screen (C)

While find is more powerful for complex logical expressions, fd is significantly faster and uses regex by default, which is why most people prefer it for daily use.

zoxide is generally considered the fastest “jump” tool because it’s written in Rust and hooks into your shell more efficiently than the older Python-based autojump.

bat is often used as a man page pager or a git previewer because it handles syntax highlighting and paging in one go, whereas standard cat simply dumps text to the terminal, if you use nvim you may prefer using it as manpager: MANPAGER=nvim +Man!.

bottom (btm) and btop provide a much higher “glance value” than htop due to their integrated live graphing of CPU and network spikes, which normally requires separate tools.

eza It’s usually preferred for modern workflows because it supports “hyperlinks” (clickable file paths) and has better support for Git status symbols directly in the file list.

ripgrep (rg) is built on Rust’s regex engine that uses finite automata; it avoids backtracking, which means it won’t “hang” or slow down exponentially on complex search patterns compared to standard grep.

delta is specifically designed to make code reviews in the terminal easier; it provides side-by-side diffs and “within-line” highlighting (showing exactly which characters changed), which the standard git diff lacks.

zellij includes a “built-in” discovery UI at the bottom of the screen, making it much more approachable for beginners than tmux, which usually requires memorizing a “prefix” key (like Ctrl+b) and several shortcuts just to split a window.

xh is often preferred over httpie because it is a single native binary. This eliminates the “startup lag” common with Python-based tools, which is noticeable when scripts make hundreds of sequential API calls.

dust provides a “tree-like” visual representation of disk space. Unlike du -h, it automatically sorts the largest directories to the bottom of your screen so you don’t have to scroll back up to find what is eating your storage.


Avatar

ItsZariep

Youtuber / Programmer, using Linux since 2015

About me

© 2026 Zariep's portfolio

Powered by Tessera for Hugo