aboutsummaryrefslogtreecommitdiff
path: root/docs/2026-06-10-modern-cli-tools-evaluation.org
blob: 29031ada60071dba499f426e272a2d7f1491e896 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
#+TITLE: Modern CLI Tool Replacements — 2026 Evaluation
#+DATE: 2026-06-10
#+DESCRIPTION: Survey of modern Unix-tool replacements; what to adopt, what to skip. Adoption decisions pending.

* Current state
Arch + Hyprland/foot/zsh, Emacs-centric. Already adopted: eza, zoxide, ripgrep, fd,
duf, difftastic, fzf, plus btop (installed already — counts as adopted). bat is in
the repos but not installed. Nothing in the adopted set has been superseded as of
mid-2026; no replacements recommended there.

* Candidates
| tool       | replaces        | verdict   | why                                                         | packaging     |
|------------+-----------------+-----------+-------------------------------------------------------------+---------------|
| bat        | cat/less-ish    | adopt     | syntax-highlit file views, git diff gutter, fzf previews    | extra 0.26.1  |
| dust       | du              | adopt     | instant visual tree of what's eating disk                   | extra 1.2.4   |
| dua-cli    | du/ncdu         | optional  | interactive variant of the same job; dust covers most of it | extra 2.34.0  |
| hyperfine  | time loops      | adopt     | statistical benchmarking with warmup; ideal for scripts     | extra 1.20.0  |
| tealdeer   | man (lookup)    | adopt     | <15ms tldr pages; active releases into 2026                 | extra 1.8.1   |
| doggo      | dig/dog         | adopt     | DoH/DoT/DoQ, table output; dog itself is dead (2020)        | extra 1.1.7   |
| xh         | curl/httpie     | optional  | httpie syntax, single fast binary; only if you do API work  | extra 0.25.3  |
| jless      | less+jq viewing | optional  | great JSON pager; upstream quiet since ~2023 (fx is active) | extra 0.9.0   |
| sd         | sed (simple)    | optional  | sane find/replace syntax; stable but low-activity upstream  | extra 1.1.0   |
| bottom     | top             | skip      | btop already installed and more polished                    | extra 0.12.3  |
| procs      | ps              | skip      | maintained, but btop + pgrep covers it                      | extra 0.14.11 |
| yazi       | ranger/mc       | skip      | excellent and very active, but dired owns this workflow     | extra 26.5.6  |
| broot      | tree/cd-nav     | skip      | overlaps dired + zoxide + eza --tree                        | extra 1.57.0  |
| gping      | ping            | skip      | a graph adds little over ping/mtr                           | extra 1.20.1  |
| choose     | cut/awk fields  | skip      | tiny win; awk muscle memory already there                   | extra 1.3.7   |
| television | fzf             | skip      | active and interesting, but no reason to leave fzf          | extra 0.15.7  |
| ouch       | tar/unzip/etc.  | optional  | one verb for all archive formats; small quality-of-life win | extra 0.8.0   |

* Top recommendations
- bat — the one gap in the current stack. Highlighted file views with line numbers
  and git markers, and it slots straight into fzf preview windows and as a
  MANPAGER/git pager. sharkdp maintains it actively (0.26.x, 2026). Works fine in
  foot; set BAT_THEME to match the dupre palette once.
- dust — answers "what filled this disk" in one command with a proportional tree,
  where du -sh * | sort needs piping and rereading. Complements duf (filesystems)
  exactly: duf for mounts, dust for directories.
- hyperfine — statistically sound benchmarking (warmup runs, outlier detection,
  comparison mode). Directly useful for timing archsetup script changes and shell
  startup (hyperfine 'zsh -i -c exit').
- tealdeer — tldr pages with ~15ms startup, so it's actually faster than recalling
  a flag. Active through 2026 (1.8.1, fixes landing Jan 2026). Pairs with man
  rather than replacing it.
- doggo — dig with readable output plus DoH/DoT/DoQ support, useful when debugging
  resolution across wireguard/tailscale where the resolver path is the question.
  The Rust "dog" it descends from is unmaintained since 2020; doggo is the live one.

* Skip list
- bottom/procs — btop is already installed and covers both niches better.
- yazi — superb tool, wrong user: file management lives in dired. (If ever adopted,
  previews work in foot via sixel.)
- broot — tree navigation already covered by zoxide + dired + eza --tree.
- gping — novelty over ping/mtr, no daily win.
- choose — not enough over cut/awk to earn a new habit.
- television — fzf is adopted, deeply integrated (zoxide, shell widgets), and still
  the ecosystem default; no migration payoff.
- jless — fine to install ad hoc, but upstream is quiescent; fx (v39, active) is the
  better bet if JSON browsing becomes frequent.
- sd — works and is stable, but Emacs query-replace + sed cover the use case.

* Sources
- https://github.com/tealdeer-rs/tealdeer
- https://github.com/mr-karan/doggo
- https://github.com/ogham/dog
- https://github.com/aristocratos/btop
- https://github.com/chmln/sd
- https://github.com/PaulJuliusMartinez/jless
- https://github.com/alexpasmantier/television
- https://itsfoss.com/rust-alternative-cli-tools/
- https://sumguy.com/btop-vs-htop-vs-bottom-top-replacements/
- Local verification: pacman -Si on all candidates (all in Arch extra, 2026-06-10)