In daily development and server management, real-time monitoring of system resource usage is essential. While htop and top are classic system monitoring tools, today we're introducing a more modern alternative — Bottom (btm).

What Is Bottom?

Bottom (invoked as btm on the command line) is a cross-platform, graphical system/process monitor written in Rust. It supports Linux, macOS, and Windows, drawing inspiration from gtop, gotop, and htop, but offering richer features and a more polished interface.

Key Features

  • 🦀 Written in Rust - Memory-safe, high-performance, low resource footprint
  • 🖥️ Cross-Platform - Full coverage of Linux, macOS, and Windows
  • 📊 Visual Charts - Real-time graphs for CPU, memory, and network usage
  • 🎨 Highly Customizable - Support for custom layouts, colors, and filters
  • ⌨️ Intuitive Shortcuts - Vim-like keyboard operations with a shallow learning curve
  • 🔍 Powerful Search - Quickly filter and locate processes
  • 📈 Historical Data - View trends in resource usage over time

Installation

Linux

Install via package manager:

# Ubuntu/Debian
sudo apt install bottom

# Fedora/RHEL
sudo dnf install bottom

# Arch Linux
sudo pacman -S bottom

# openSUSE
sudo zypper install bottom

Install via Cargo (recommended for the latest version):

cargo install bottom

Install precompiled binary:

# Download the latest release
wget https://github.com/ClementTsang/bottom/releases/latest/download/bottom_x86_64-unknown-linux-gnu.tar.gz
tar -xzf bottom_x86_64-unknown-linux-gnu.tar.gz
sudo mv btm /usr/local/bin/

macOS

# Via Homebrew
brew install bottom

# Or via MacPorts
sudo port install bottom

Windows

# Via Chocolatey
choco install bottom

# Or via Scoop
scoop install bottom

# Or via winget
winget install ClementTsang.bottom

Getting Started

Basic Usage

After installation, simply run in your terminal:

btm

And you'll see the full system monitoring dashboard.

Common Keyboard Shortcuts

Bottom uses a vim-like keyboard navigation model:

Shortcut Description
? or h Open the help menu
q Quit the program
g Jump to the top
G Jump to the bottom
/ Search for a process
dd Kill the selected process
Tab Switch between widgets
Mouse click Select a widget directly

Command-Line Options

# Set refresh interval (milliseconds)
btm --rate 2000

# Show CPU widget by default
btm --default_widget_type cpu

# Hide average CPU display
btm --hide_avg_cpu

# Use a custom config file
btm --config /path/to/config.toml

# View full help
btm --help

Custom Configuration

Bottom supports deep customization through a configuration file. Config file locations:

# Linux/macOS
~/.config/bottom/bottom.toml

# Windows
%APPDATA%\bottom\bottom.toml

Example Configuration

# Refresh interval (milliseconds)
rate = 2000

# Default widget layout
[[row]]
  [[row.widget]]
    type = "cpu"
  [[row.widget]]
    type = "memory"

[[row]]
  [[row.widget]]
    type = "network"
  [[row.widget]]
    type = "process"

# Color theme
[colors]
  table_header_color = "#00d7ff"
  cpu_core_colors = ["#ff5555", "#50fa7b", "#f1fa8c"]

# Process filters
[flags]
  hide_kernel_threads = true
  show_cpu_cores = true

Bottom vs. htop

Feature Bottom (btm) htop
Language Rust C
Cross-platform ✅ Linux/macOS/Windows ⚠️ Primarily Linux/Unix
Visual charts ✅ Built-in ❌ Requires extra setup
Historical data ✅ Supported ❌ Real-time only
Configuration ✅ TOML config ⚠️ Limited
Resource usage Low Low
Community momentum 🔥 Rapidly growing Stable

Real-World Use Cases

1. Server Performance Monitoring

Run btm on a remote server to get a clear view of: - CPU core load distribution - Memory usage and swap space - Real-time network interface traffic - Disk I/O read/write speeds

2. Development Environment Debugging

When running resource-intensive applications, use btm to quickly pinpoint: - Which process is consuming the most CPU - Suspected processes with memory leaks - Network connection anomalies

3. System Optimization Analysis

Use historical charts to analyze: - Peak resource usage periods - Long-term resource trends - The effectiveness of optimization efforts

Advanced Tips

Custom Widget Layouts

Bottom lets you fully customize the interface layout, creating a monitoring panel that best fits your workflow:

# Layout focused on CPU and processes
[[row]]
  [[row.widget]]
    type = "cpu"
    ratio = 2
  [[row.widget]]
    type = "process"
    ratio = 3

Press / to open the search box, which supports regular expressions:

# Search for a specific process
python

# Using a regex pattern
^node.*

# Filter by user
user:kevin

Monitor Specific CPU Cores

# Show only specific CPU cores
btm --cpu_core 0 --cpu_core 1

Summary

Bottom (btm) is a modern system monitoring tool that, thanks to Rust's performance benefits, cross-platform support, rich visualization features, and high customizability, is becoming a strong alternative to htop.

Whether you're a system administrator, a DevOps engineer, or just a developer, btm provides an intuitive and efficient way to monitor your system's resources. Best of all, it's completely open-source and free, with an active community and continuous updates.

Give it a try: Visit the GitHub repository to start your modern system monitoring journey!


References: