Introduction
bottom is a terminal system monitor that combines the information of top, htop, and iotop into a single, beautiful interface. Built in Rust with Ratatui, it provides interactive charts for CPU, memory, network, and disk usage alongside a searchable process list with tree view.
With over 13,000 GitHub stars, bottom stands out for its cross-platform support (Linux, macOS, Windows), extensive customization via TOML config, and intuitive keyboard/mouse navigation.
What bottom Does
bottom provides real-time visualization of system resources: CPU usage per core, memory and swap usage, network I/O, disk I/O, temperatures (where available), and a process table with search, sort, and tree view. All displayed as interactive terminal charts.
Architecture Overview
[bottom (btm)]
Rust + Ratatui + crossterm
|
+-------+-------+-------+
| | | |
[CPU] [Memory] [Network]
Per-core RAM/Swap Upload/
usage usage Download
charts charts charts
|
+-------+-------+-------+
| | | |
[Disk] [Temp] [Process]
Read/ CPU/GPU Table with
Write sensors search,
I/O temps sort, treeSelf-Hosting & Configuration
# ~/.config/bottom/bottom.toml
[flags]
rate = 1000 # Update rate in ms
default_widget_type = "proc"
hide_avg_cpu = false
color = "gruvbox"
temperature_type = "celsius"
enable_gpu = true
# Custom layout
[[row]]
[[row.child]]
type = "cpu"
[[row.child]]
type = "mem"
[[row]]
[[row.child]]
type = "net"
[[row.child]]
type = "disk"
[[row]]
[[row.child]]
type = "proc"
default = trueKey Features
- Interactive Charts — CPU, memory, network, disk as live graphs
- Process Manager — search, sort, filter, tree view, kill processes
- Cross-Platform — Linux, macOS, and Windows support
- GPU Monitoring — NVIDIA and AMD GPU utilization (where available)
- Custom Layouts — configure widget arrangement via TOML
- Color Themes — built-in themes (gruvbox, nord, etc.) and custom colors
- Mouse Support — click and scroll to interact with widgets
- Battery — battery status and charge level display
Comparison with Similar Tools
| Feature | bottom (btm) | btop | htop | glances | Netdata |
|---|---|---|---|---|---|
| Language | Rust | C++ | C | Python | C |
| Platform | Linux, macOS, Win | Linux, macOS | Linux, macOS | Cross-platform | Linux, macOS |
| GPU Monitoring | Yes | Yes | No | Via plugin | Yes |
| Charts | Yes (interactive) | Yes | No (bars) | No | Yes (web) |
| Custom Layout | TOML config | Theme config | No | No | Dashboard |
| Mouse Support | Yes | Yes | Yes | No | Yes (web) |
| Resource Usage | Very Low | Low | Very Low | Moderate | Moderate |
FAQ
Q: bottom vs btop vs htop — which should I use? A: bottom for interactive charts and Windows support. btop for the most beautiful TUI with GPU monitoring. htop for a lightweight, universal process viewer. All three are excellent.
Q: How do I kill a process? A: Navigate to the process table, select a process, press dd (Vim-style) or Delete to send SIGTERM. Press dd again on the confirmation to send SIGKILL.
Q: Can I use bottom over SSH? A: Yes. bottom works in any terminal, including SSH sessions. It adapts to the terminal size and uses minimal bandwidth.
Q: How do I customize the layout? A: Edit ~/.config/bottom/bottom.toml and define [[row]] and [[row.child]] sections to arrange widgets. Each child specifies a widget type (cpu, mem, net, disk, proc, temp).
Sources
- GitHub: https://github.com/ClementTsang/bottom
- Documentation: https://clementtsang.github.io/bottom
- Created by Clement Tsang
- License: MIT