Overlap
Terminal for Rust
Terminal tools that run on Rust. The Catch for each, not a winner list.
19 tools · the Catch, not a ranking
- ZellijMIT Rust terminal workspace with layouts and plugins
Rust terminal workspace/layouts/plugins — agent terminal lane; not tmux-clone marketing. Plugin ecosystem younger than tmux. Some SSH/remote habits still assume tmux/screen.
- ripgrepUnlicense/MIT recursive grep that respects .gitignore
Vs grep (POSIX baseline) and ag/The Silver Searcher (predecessor): ripgrep is the modern default, not a POSIX drop-in. If your workflow depends on GNU grep flags exactly, `rg` is similar but not identical. No built-in fuzzy matching — pair with fzf for interactive filtering.
- batMIT/Apache-2.0 cat clone with syntax highlighting and Git integration
Vs cat (POSIX baseline): bat is heavier — startup and memory cost for highlighting. Not a POSIX cat drop-in for scripts expecting raw byte streams. Large files or binary content should still use plain cat. Theme configuration is optional but becomes a rabbit hole.
- fdMIT/Apache-2.0 ignore-aware parallel filename find
Vs ripgrep (content search) and fzf (fuzzy UI): fd finds *names*, not file contents, and it is not an interactive fuzzy picker. Not a POSIX find drop-in for every `-exec`/`-printf` edge case. Large trees still need sensible roots; it is not a content indexer.
- gumMIT scriptable prompts, filters, and spinners for shell UX
Vs Starship (prompt *theme*): gum is scriptable interaction widgets, not your PS1 theme. Adds a Charm binary dependency to scripts that used to be pure POSIX. Non-interactive CI still needs flags/`--` paths that skip the TUI.
- glowMIT Markdown TUI pager from Charm
Vs bat (generic syntax highlight cat): glow is Markdown-*first* presentation, not a drop-in for every source file. Heavier than bat for one-off file peeks. Stash/cloud-adjacent features are optional — local files are the core job.
- hyperfineMIT/Apache-2.0 statistical CLI benchmarker
It benchmarks *process wall time*, not flamegraphs or allocator profiles — pair with a profiler when the hot path is inside one long process. Shell overhead and cold caches still skew naive runs; read the warmup flags. Not a load-test / HTTP soak tool.
- deltaMIT syntax-aware git diff pager
Vs bat (file viewer) and lazygit (TUI Git client): delta is the *diff pager*, not a file cat and not a staging UI. Config lives in gitconfig — wrong pager nesting with less can surprise. Huge binary diffs still want `--stat` or path filters first.
- YaziMIT async terminal file manager with image preview
Vs fzf (fuzzy finder) and zoxide (directory jumper): Yazi is a full *file manager*, not a one-shot picker or frecency cd. Preview depends on terminal image protocols and optional external tools. Learning the keymap is real onboarding versus plain ls/cd.
- watchexecApache-2.0 mature file→command watcher (entr-class)
Vs Tilt (K8s microservice *dev control plane*): watchexec is the entr-class local file watcher, not a cluster live-update UI. Not a build system and not a process supervisor for multi-service graphs. You still write the command and filter extensions yourself.
- tokeiMIT/Apache-2.0 fast LOC and code stats by language
Vs cloc/scc and vs GitHub language bars: tokei is the *local CLI/library* for code stats, not a hosted insights product and not a complexity/churn analyzer. Counts are still heuristics — generated code and vendor trees need excludes. Not a dependency auditor.
- dustApache-2.0 intuitive du tree — see what eats the disk
Vs Yazi (terminal *file manager* / nav ≠ size): dust answers “what is using disk,” not browse/preview/move. Vs plain `du`: opinionated overview, not every POSIX du flag. Permission-denied noise is minimized, but you still need roots you can read.
- naviApache-2.0 interactive cheatsheet runner for the shell
Vs fzf (generic fuzzy finder) and just (recipe runner): navi is cheatsheet *browse + param fill + run*, not a bare fuzzy filter and not a Justfile task graph. You still author or import cheats; empty cheats dirs teach nothing. Depends on a finder binary.
- jlessMIT interactive JSON pager — explore, do not filter
Last commit June 2024 (latest release v0.9.0, July 2023): stable but unmaintained, so expect no fixes or new releases. Vs jq (*filter language*): jless is an interactive *viewer/pager*, not a transform DSL and not a YAML tool. Pair with jq when you need to rewrite; open jless when you need to see.
- xhMIT HTTPie-compatible HTTP client as a Rust single binary
Vs HTTPie (Python CLI UX) and curl: xh is the *Rust single-binary* cousin, not a plugin ecosystem and not every HTTPie feature. Incomplete parity is intentional (#4). curl still wins when the script must assume the OS already has it.
- sdMIT intentional sed subset — search & displace
Vs sed: intentional *subset*, not a full sed dialect — no sed scripts, hold space, or every GNU extension. Vs ripgrep (search) and fd (names): sd *rewrites*, it does not search a tree or find filenames. Keep sed for the ancient one-liners that already work.
- procsMIT modern ps — colors, tree, and JSON
Vs btop (host *resource* TUI with CPU/mem/disk/net/GPU): procs is the modern *ps*, not a live metrics dashboard. Not multi-host observability. Keep `ps` when POSIX scripts expect its exact columns.
- ast-grepMIT structural AST search and rewrite (sg)
Vs Semgrep (SAST/SCA product with Free Edition caps) and ripgrep (text search): ast-grep is the *structural AST CLI/codemod*, not a hosted AppSec platform and not byte/regex grep. You author AST patterns; text-only hunts still belong to rg. Slug is `ast-grep` (binary often `sg`).
- DifftasticMIT structural/AST diff that understands syntax
Vs delta (syntax-highlight *pager* for git diffs): difftastic is a *structural AST diff*, not a pretty pager over unified diff. Unsupported or huge files fall back to line-oriented. Language coverage is wide but not infinite — unknown formats lose the AST trick.