What is bottom?
bottom (the command is btm) is a graphical process and system monitor for the terminal, written in Rust and inspired by gtop, gotop and htop. By default it behaves like a dashboard: CPU, memory, network, disk, temperature and process widgets share one screen, and any of them can be sorted, zoomed or expanded to fill the terminal.
⚡ Key Features of bottom
📈 Live Graphs
CPU (per core or averaged), memory, network throughput, disk I/O and temperatures as scrolling charts you can zoom with + and -.
🔍 Process Search
/ filters the process table, with regex, whole-word and case-sensitivity toggles, and one keystroke each to sort by CPU, memory, PID or name.
🌲 Tree Mode
t turns the process table into a tree, so a runaway worker shows up underneath the parent that spawned it instead of floating alone in the list.
🎛️ Custom Layouts
The config file describes rows, columns and widget ratios, so the dashboard shows the four things you actually watch instead of the default nine.
🎨 Built-in Themes
--theme gruvbox, nord and their light variants ship inside the binary, and every element's colour can be overridden in bottom.toml.
🖥️ Basic Mode
btm --basic drops the graphs for a compact numeric readout that stays readable over a slow SSH link or in a small tmux pane.
apt upgrade keeps you on the latest version.
📦 Installation from deb.griffo.io
Step 1: Add Repository
sudo install -d -m 0755 /etc/apt/keyrings
curl -fsSL https://deb.griffo.io/EA0F721D231FDD3A0A17B9AC7808B4DD62C41256.asc | sudo gpg --dearmor --yes -o /etc/apt/keyrings/deb.griffo.io.gpg
echo "deb [signed-by=/etc/apt/keyrings/deb.griffo.io.gpg] https://deb.griffo.io/apt $(lsb_release -sc 2>/dev/null) main" | sudo tee /etc/apt/sources.list.d/deb.griffo.io.list > /dev/null
sudo apt updateinstall -d -m 0755 /etc/apt/keyrings
curl -fsSL https://deb.griffo.io/EA0F721D231FDD3A0A17B9AC7808B4DD62C41256.asc | gpg --dearmor --yes -o /etc/apt/keyrings/deb.griffo.io.gpg
echo "deb [signed-by=/etc/apt/keyrings/deb.griffo.io.gpg] https://deb.griffo.io/apt $(lsb_release -sc 2>/dev/null) main" | tee /etc/apt/sources.list.d/deb.griffo.io.list > /dev/null
apt updatesudo apt install extrepo
sudo extrepo enable griffo
sudo apt update🆓 There is an always-free mirror. deb-free.griffo.io serves packages free forever, no account, no subscription, at most 2 months behind upstream, security fixes immediately. It currently carries cliamp, Ghostty, lazydocker, Oh My Posh and Zed; bottom is not one of them, so the repository above is the only way to get it today, ask and it can be enrolled.
🧩 About the extrepo option. extrepo is Debian's own tool for external repositories: it writes the sources file and installs the signing key for you, checking the key against signed metadata first. This repository is registered with it as griffo, and the always-free mirror as griffo-free, so on Debian (bookworm, trixie, forky and sid) the commands above are the whole setup.
extrepo sets up the sources file and the key only, so a subscription's credentials still go in /etc/apt/auth.conf.d/deb.griffo.io.conf. Ubuntu is not covered, because extrepo publishes metadata for Debian suites only: there, use the sudo or root commands.
Step 2: Install bottom
# Install latest bottom
sudo apt install btm
# Verify installation
btm --version# Install latest bottom
apt install btm
# Verify installation
btm --versionStep 3: First run and configuration
# Start the dashboard
btm
# A compact, graph-free readout for small terminals and slow links
btm --basic
# Point bottom at a config file. It is created with defaults if missing
mkdir -p ~/.config/bottom
btm --config_location ~/.config/bottom/bottom.toml
# The manual page and bash, zsh and fish completions ship with the package
man btm🎯 Basic Usage Examples
Everyday monitoring:
# The full dashboard
btm
# Refresh twice a second and keep ten minutes of history
btm --rate 500ms --retention 10m
# Start on the process widget, already expanded
btm --default_widget_type proc --expanded
# Process tree, grouped, showing full command lines
btm --tree --process_commandInside the dashboard:
# Keys that do the work
# ? in-app help with every keybinding
# e expand the selected widget to the whole terminal
# f freeze the display while you read it
# + - = zoom a graph in, out, or back to the default
# / search the process table
# c m p n sort processes by CPU, memory, PID or name
# dd stop the selected process
# t toggle the process treeFitting it to your machine:
# Fahrenheit, no average CPU row, dot markers instead of braille
btm --fahrenheit --hide_avg_cpu --dot_marker
# Count cache and buffers as their own memory line
btm --enable_cache_memory
# Battery widget on a laptop
btm --battery
# A colour theme that matches the rest of your terminal
btm --theme gruvbox🔧 Tool Integrations
bottom is built to live in a terminal-first setup:
- Config file:
~/.config/bottom/bottom.tomlkeeps layout, widget ratios, colours and your usual flags in one reviewable place - Desktop entry: the package installs
bottom.desktopand an icon, so it also appears in the application menu as a system monitor - tmux and Zellij: happy in a narrow pane;
--basickeeps it readable when the pane gets small - GPUs: NVIDIA and AMD usage appears in the memory widget when the drivers are present, and
--disable_gputurns the collection off - Servers: the amd64 build is statically linked, so a bare Debian or Ubuntu box needs nothing but the package
🚀 Why Choose deb.griffo.io?
- Official Debian: ships
btm, but frozen several minor releases back, new widgets, themes and sensor fixes only arrive with the next Debian release - cargo install bottom: current, but it compiles for several minutes, lands outside apt, and brings no man page, completions or desktop entry
- Upstream tarball: the official binary, which you then re-download by hand for every release
- deb.griffo.io: latest version with automatic updates
- ✅ Current Widgets: the newest release, with the widgets, themes and sensor fixes upstream added after the archive froze
- ✅ Drop-in for bottom: the package is named
btmafter the command and declaresProvides/Replacesforbottom, so it slots in where the archive package was - ✅ Automatic Updates: packages updated within hours of upstream releases
- ✅ Complete Package: the upstream binary plus the
btm.1man page, bash, zsh and fish completions, the desktop entry and its icon - ✅ Five Architectures: amd64, arm64, armhf, i386 and riscv64, the same monitor on a laptop, a Raspberry Pi and a RISC-V board
- ✅ Multi-Distribution: works on Bookworm, Trixie, Forky and Sid
- ✅ Easy Maintenance: standard apt commands for updates
📦 Package Build Repository
The Debian packages are automatically built and maintained in this GitHub repository:
- 📊 bottom-debian - Latest release builds
🔗 Related Packages
Also available from deb.griffo.io:
- Fastfetch - One-shot system information summary
- lazydocker - Docker containers and images in the same terminal style
- k9s - The same dashboard idea, for Kubernetes clusters
- Zellij - Terminal multiplexer to keep bottom in a pane
💝 Support This Project
If this repository saves you time and effort, please consider supporting it!