Skip to content

bottom (btm)

bottom (command: btm) is a cross-platform graphical system monitor written in Rust. It provides real-time CPU, memory, network, disk, process, temperature, and battery monitoring in a customizable terminal UI.

Installation

# Using cargo (Rust)
cargo install bottom

# macOS
brew install bottom

# Ubuntu/Debian
curl -sSfL https://github.com/ClementTsang/bottom/releases/latest/download/bottom_amd64.deb \
  -o bottom.deb
sudo dpkg -i bottom.deb

# Arch Linux
sudo pacman -S bottom

# Fedora/RHEL
sudo dnf install bottom

# Nix
nix-env -i bottom

# Snap
sudo snap install bottom

# Verify installation
btm --version

Basic Usage

# Launch bottom
btm

# Launch with specific update rate (milliseconds)
btm -r 500

# Launch with Celsius temperatures (default is Celsius)
btm -C

# Launch with Fahrenheit
btm -f

# Launch with basic mode (simplified view)
btm -b

Keyboard Shortcuts

q / Ctrl+c    Quit
Esc           Close dialog / Return to normal mode
?             Open help menu
Tab           Move to next widget
Shift+Tab     Move to previous widget
e             Toggle process search
/             Open process search

Process View

dd            Kill selected process (sends SIGTERM)
Enter         Expand/collapse process tree
s             Sort menu
I             Invert current sort
%             Toggle percentage display for CPU/memory
P             Sort by PID
N             Sort by process name
C             Sort by CPU usage
M             Sort by memory usage
T             Toggle tree mode

Graph Views

h / Left      Scroll left (zoom in on time axis)
l / Right     Scroll right (zoom out on time axis)
+             Zoom in
-             Zoom out
=             Reset zoom
Up/Down       Navigate items in lists
g             Jump to top of list
G             Jump to bottom of list

Process View

# Process view shows:
# - PID
# - Process name
# - CPU usage (%)
# - Memory usage (% and absolute)
# - Read/Write disk I/O
# - Total CPU time
# - User
# - State

# Process tree mode
# Press 'T' to toggle tree view
# Shows parent-child process relationships

# Search processes
# Press '/' or 'e' to open search
# Type process name to filter
# Supports regex patterns:
#   /nginx.*worker
#   /^python

CPU Widget

# CPU widget shows:
# - Per-core CPU usage graphs over time
# - Average CPU usage line
# - Color-coded per core

# Toggle CPU display
# Tab to CPU widget
# Press 'a' to toggle average CPU line
# Press 'l' to toggle legend

Memory Widget

# Memory widget shows:
# - RAM usage graph over time
# - Swap usage graph over time
# - Percentage and absolute values

# Memory display format:
# RAM: 8.2 GiB / 16.0 GiB (51.2%)
# SWP: 0.5 GiB / 8.0 GiB (6.3%)

Network Widget

# Network widget shows:
# - Upload and download rates over time
# - Total data transferred
# - Per-interface breakdown

# Network units toggle
# Press 'b' to toggle between bits and bytes

Disk Widget

# Disk widget shows:
# - Mount point
# - Used / Total space
# - Read/Write rates
# - Filesystem type

# Example:
# /      ext4   45.2 GiB / 100.0 GiB (45.2%)  R: 1.2 MB/s  W: 0.5 MB/s
# /home  ext4   120.5 GiB / 500.0 GiB (24.1%)  R: 0.0 MB/s  W: 0.1 MB/s

Battery Widget

# Battery widget (laptops only) shows:
# - Charge percentage
# - Charge/discharge rate
# - Time to full/empty
# - Battery health

# Enable battery widget
btm --battery

Temperature Widget

# Temperature widget shows:
# - CPU core temperatures
# - GPU temperature (if available)
# - Other hardware sensors

# Switch temperature unit
btm -C     # Celsius (default)
btm -f     # Fahrenheit
btm -k     # Kelvin

Filtering

# In process view, press '/' to search
# Search supports:

# Simple text match
/nginx

# Regex patterns
/^python3

# Case-insensitive search (default)
/NGINX

# Case-sensitive search
/cs:Nginx

# Search by PID
/pid:1234

# Search by user
/user:root

# Combine filters with OR
/nginx|apache

# Press Esc to close search
# Press Ctrl+u to clear search

Configuration File

# Configuration file location:
# Linux:   ~/.config/bottom/bottom.toml
# macOS:   ~/Library/Application Support/bottom/bottom.toml

# Create config directory
mkdir -p ~/.config/bottom
# ~/.config/bottom/bottom.toml

# General settings
[flags]
rate = "1s"                    # Update rate
temperature_type = "celsius"   # celsius, fahrenheit, kelvin
default_widget_type = "proc"   # Default focused widget
show_table_scroll_position = true
enable_gpu = false
enable_cache_memory = true
tree = true                    # Start in tree mode
battery = true                 # Show battery widget

# Process columns
[processes]
columns = ["PID", "Name", "CPU%", "Mem%", "R/s", "W/s", "User"]

# Colors
[colors]
table_header_color = "LightBlue"
cpu_core_colors = ["Red", "Green", "Yellow", "Blue", "Magenta", "Cyan"]
ram_color = "Green"
swap_color = "Yellow"
rx_color = "Green"
tx_color = "Red"
border_color = "Gray"
highlighted_border_color = "LightBlue"
selected_text_color = "Black"
selected_bg_color = "LightBlue"

Custom Layouts

# Custom layout in bottom.toml
# Create a 3-row layout

[[row]]
  ratio = 30
  [[row.child]]
    type = "cpu"

[[row]]
  ratio = 40
  [[row.child]]
    ratio = 50
    type = "mem"
  [[row.child]]
    ratio = 50
    type = "net"

[[row]]
  ratio = 30
  [[row.child]]
    type = "proc"
    default = true  # Start focused on this widget
# Side-by-side layout
[[row]]
  [[row.child]]
    ratio = 60
    [[row.child.child]]
      type = "cpu"
    [[row.child.child]]
      type = "proc"
  [[row.child]]
    ratio = 40
    [[row.child.child]]
      type = "mem"
    [[row.child.child]]
      type = "net"
    [[row.child.child]]
      type = "disk"

Command-Line Flags

# Basic mode (no graphs, just tables)
btm -b

# Grouped processes (aggregate by name)
btm -g

# Start with process tree view
btm -T

# Specific default widget
btm --default_widget_type cpu
btm --default_widget_type mem
btm --default_widget_type net
btm --default_widget_type proc

# Dot marker style instead of braille
btm --dot_marker

# Disable mouse support
btm --disable_click

# Use specific config file
btm -C /path/to/config.toml

# Left legend for CPU
btm --cpu_left_legend

# Whole-word search default
btm -W

# Show average CPU in row
btm -a

Tips

# Alias for quick access
alias top='btm'
alias htop='btm'

# Compare with other monitors
# btm vs htop: btm has network/disk graphs, htop has more process control
# btm vs glances: btm is lighter, glances has more plugins
# btm vs gotop: btm is more configurable, actively maintained

# Remote monitoring via SSH
ssh server 'btm -b'  # Basic mode works best over SSH

# Export process list (use procs or ps for that)
# btm is interactive-only, not designed for scripting