bottom
A cross-platform graphical process and system monitor for the terminal, featuring a customizable interface with CPU, memory, disk, and network views.
bottom (invoked as btm) is a feature-rich, cross-platform system monitor for
the terminal. It provides an at-a-glance overview of your system's CPU, memory,
disk, network, and process activity in a clean, interactive TUI — think htop,
but more visually polished and highly configurable.
Features
- Multi-widget layout — simultaneously view CPU usage, memory, disk I/O, network throughput, and process list
- Responsive and resizable — layout adapts to your terminal size; widgets can be navigated with the keyboard
- Filtering — filter the process list in real time by name or command
- Sorting — sort processes by CPU, memory, PID, name, and more
- Grouped mode — group processes by name to see aggregate resource usage
- Battery info — optionally display battery charge and status
- Highly configurable — tweak colours, default widgets, update rate, temperature units, and more via a TOML config file
- Cross-platform — works on Linux, macOS, and Windows
Installation
cargo install bottom --locked
Or via your package manager:
# macOS
brew install bottom
# Arch Linux
pacman -S bottom
# Debian / Ubuntu
apt install bottom
# Fedora
dnf install bottom
# Nix
nix-env -iA nixpkgs.bottomUsage
# Launch with default layout
btm
# Use a basic, more htop-like mode
btm --basic
# Set the update rate to 500ms (default is 1000ms)
btm --rate 500
# Show temperature in Fahrenheit
btm --fahrenheit
# Launch with a specific config file
btm --config ~/.config/bottom/bottom.tomlKeybindings
| Key | Action |
|---|---|
? | Open help menu |
q / Ctrl+c | Quit |
Arrow keys / hjkl | Navigate between widgets and within lists |
dd | Kill the selected process |
f | Freeze the display |
/ | Filter processes |
+ / - | Zoom in/out on graphs |
e | Expand the selected widget to full screen |
Configuration
bottom reads from ~/.config/bottom/bottom.toml. A minimal example:
[flags]
rate = 500 # update every 500ms
temperature_type = "celsius"
default_widget_type = "proc"
[colors]
table_header_color = "LightBlue"
selected_text_color = "Black"
selected_bg_color = "Cyan"