Introduction
gotop is a terminal-based graphical activity monitor written in Go. It renders real-time system metrics as ASCII line graphs and sparklines, providing an at-a-glance overview of CPU, memory, disk, network, and process activity in a visually compact layout.
What gotop Does
- Displays per-core CPU usage as scrolling line graphs
- Shows memory and swap consumption with visual bars
- Monitors network I/O with real-time bandwidth graphs
- Lists processes sortable by CPU, memory, or PID
- Renders disk usage and temperature sensors when available
Architecture Overview
gotop is written in Go using the termui library for terminal rendering. It polls system metrics via gopsutil (a Go port of psutil) at regular intervals and renders them as terminal widgets. The layout is responsive and adapts to terminal size. Each widget runs independently, allowing selective display of components.
Self-Hosting & Configuration
- Install via Homebrew, AUR, Nix, or download prebuilt binaries from GitHub
- Configuration file at ~/.config/gotop/gotop.conf (created on first run)
- Customize which widgets appear using the -l layout flag
- Set update interval with -r flag (default 1 second)
- Color schemes can be specified with -c flag (monokai, default, solarized, etc.)
Key Features
- Single static binary with zero dependencies
- Configurable layouts to show only the metrics you care about
- Multiple built-in color schemes with custom theme support
- Battery level widget for laptops
- Minimal CPU overhead compared to GUI monitoring tools
Comparison with Similar Tools
- btop++ — More polished UI with mouse support; gotop is simpler and lighter
- htop — Process-focused only; gotop adds CPU/memory/network graphs
- glances — Feature-rich with web UI; gotop is more visually focused on terminal charts
- bottom — Rust-based with similar features and active maintenance
- bpytop — Python version with similar aesthetics; gotop is a single Go binary
FAQ
Q: Is gotop still maintained? A: The original repo by cjbassi is archived. Community forks (xxxserxxx/gotop) continue active development.
Q: Does gotop work on macOS? A: Yes, it supports Linux, macOS, and FreeBSD.
Q: Can I use gotop over SSH? A: Yes. It works in any terminal emulator that supports 256 colors and Unicode.
Q: How do I show only specific widgets? A: Use the -l flag with a layout string, e.g., gotop -l minimal to show CPU and memory only.