gander / compared with bottom
The closest comparison of the three: both are Rust, both cover Linux, macOS and FreeBSD, and both refuse htop's layout. They differ in what the screen is for.
bottom gives you a dashboard of widgets you arrange. gander gives you htop's process list with the details moved onto the same screen. If you want graphs and configurability, bottom is further along. If you want htop's muscle memory and a scriptable output, gander is.
| gander | bottom | |
|---|---|---|
| Written in | Rust | Rust |
| Linux and macOS, officially supported | yes | yes |
| FreeBSD | supported, libkvm backend | unofficial, may miss features |
| Windows | no | yes |
| Keeps htop's keybindings | yes | no |
Reads an existing htoprc | yes | no |
| Selected process's details beside the list | yes | no |
| Graphs over time (CPU, memory, network, disk, temperature) | CPU, memory, disk, network, PSI | all five |
| Layout rearranged at runtime | two built-in layouts | widgets, fully configurable |
--json batch mode without the TUI | yes | no |
| Config file format | TOML, plus htoprc import | TOML |
Two rows deserve the detail rather than a checkmark.
bottom's README is explicit about this. Its official platforms are macOS, Linux and Windows. FreeBSD x86_64 appears in a second list, introduced like this:
Might not be tested in CI to build or pass tests. Might not be properly tested by maintainers prior to a stable release. May only receive limited support, such as missing features or bugs that may not be fixed.
That is an honest description, not a criticism — it is exactly the kind of statement this project tries to make about its own gaps. But it means FreeBSD is not a platform you can depend on bottom for.
gander has a dedicated FreeBSD backend that reads sysctl and libkvm, and a CI job that runs the whole test suite in a FreeBSD 14 VM on QEMU, comparing its figures against ps(1), sysctl(8), swapinfo(8) and netstat(1) inside the guest. The capabilities that are genuinely missing there are listed rather than implied: no container columns, no PSS, no GPU columns, no disk throughput meter. See htop on FreeBSD.
If you run FreeBSD, that is the most concrete difference on this page.
bottom is a screen. For automated collection you read /proc (or the equivalent) yourself, which is fine until you want the same formatting the TUI uses.
gander's batch mode is the same binary with the interface turned off, so the numbers a script sees are the numbers the screen would have drawn:
gander --json --limit 10
gander --sort PERCENT_MEM --limit 20
gander -F "python|node" -n 5
Exit status is meaningful: a failed scan is a non-zero exit, not an empty array.
Neither tool reads htoprc except gander. If you have years of tuned columns and sort order in htop, that is the difference you notice first:
gander --import-htoprc ~/.config/htop/htoprc --save
The import is a dry run without --save, and htoprc is never modified. See vs htop for the keys that differ.
brew install pandasir/tap/gander # macOS
cargo install gander-bin # any platform with Rust
Signed apt and dnf repositories, and archives including x86_64-unknown-freebsd, are on the install section.