r-top is a terminal-based, Rust-powered system resource viewer for UNIX-like systems. Inspired by tools like bashtop
and htop
, b-top
provides a visually impressive process monitoring and management tool with shader-like implementations by using TachyonFX.
- Per-Core CPU Usage: Real-time usage display for each CPU core with color-coded indicators.
- CPU Usage Graph: Sparkline graph showing historical average CPU usage.
- Memory Monitoring: Visual gauge showing used vs. total memory in GB.
- Network Stats: Displays RX/TX bytes for interfaces like
eth0
andlo
. - Process Table: Sortable list of top processes by CPU, memory, or network usage (WIP).
- Smooth Animations: Powered by
tachyonfx
for subtle UI transitions. - Keyboard Navigation: Scroll, jump, sort, and switch interfaces with intuitive keybindings.
- Disk Usage: Track disk usage with a visual gauge and switch between disks for active monitoring.
- Tree View: See parent and child processes for each running/sleeping process.
- Search Filter: Filter and find specific processes in the process table
- Daemon Supervisor: Create your own service profiles to run a
b-daemon
in either integrated or active modes
- Rust
- ratatui – Terminal UI rendering
- sysinfo – System information
- crossterm – Terminal input handling
- tachyonfx – Animation effects
Key | Action |
---|---|
↑ / ↓ |
Scroll through process list |
PgUp / PgDn |
Jump up/down in process list |
Home |
Jump to top of process list |
← / → |
Change sorting category |
b / n |
Switch between lo and eth0 |
q |
Quit the application |
ENTER |
View more process info |
k |
Kill selected process |
u / i |
Switch between disks |
tab |
Open tree view during show_info |
/ |
Use the search filter |
- Rust toolchain (
cargo
,rustc
) - A UNIX-like OS (Linux, macOS)
git clone https://github.com/asian-mario/r-top.git
cd r-top
cargo run --release
wget https://github.com/asian-mario/r-top/releases/download/[VERSION]/r-top-linux-x86_64.tar.gz
tar -xzf r-top-linux-x86_64.tar.gz
sudo mv r-top /usr/local/bin/
$$\ $$\
$$ | $$ |
$$$$$$$\ $$$$$$$ | $$$$$$\ $$$$$$\ $$$$$$\$$$$\ $$$$$$\ $$$$$$$\
$$ __$$\ $$$$$$\ $$ __$$ | \____$$\ $$ __$$\ $$ _$$ _$$\ $$ __$$\ $$ __$$\
$$ | $$ |\______|$$ / $$ | $$$$$$$ |$$$$$$$$ |$$ / $$ / $$ |$$ / $$ |$$ | $$ |
$$ | $$ | $$ | $$ |$$ __$$ |$$ ____|$$ | $$ | $$ |$$ | $$ |$$ | $$ |
$$$$$$$ | \$$$$$$$ |\$$$$$$$ |\$$$$$$$\ $$ | $$ | $$ |\$$$$$$ |$$ | $$ |
\_______/ \_______| \_______| \_______|\__| \__| \__| \______/ \__| \__|
The r-top daemon (or b-daemon
) active and integrated modes use a TOML configuration file to define the services you want to monitor and manage, the configuration file is automatically created at ~/.config/r-top/services.toml
when you first run r-top -d
. The integrated mode is still highly experimental, the daemon may run even when r-top is shut down. Please use it at your own risk.
- Linux/macOS:
~/.config/r-top/services.toml
- Custom location: Use
r-top -d -c /path/to/your/config.toml
Each service is defined in the [[services]]
array with the following fields
[[services]]
name = "my-service" # Unique service name
command = "/usr/bin/python3" # Executable path
args = ["app.py", "--port", "8080"] # Command arguments
working_dir = "/home/user/myapp" # Optional working directory
restart_policy = "always" # Restart behavior: always, on_failure, never
max_restarts = 5 # Maximum restart attempts
restart_delay_secs = 10 # Seconds to wait before restart
b-daemon has multiple restart policies depending on how you want to treat the service you are monitoring
always
: Restart the service whenever it stopson_failure
: Only restart if the service exits with a non-zero status codenever
: Never automatically restart the service
If you are struggling on how to set up your services.toml (or other custom configuration files) look at the examples within ./example-services/
# HTTP service health check
curl -f http://localhost:8080/health
# Process existence check
pgrep -f "my-service"
# File freshness check (modified within last 5 minutes)
find /path/to/output -mmin -5 | grep -q output
# Database connection check
pg_isready -h localhost -p 5432
# Docker container health
docker exec container-name health-command
# Log file activity (new entries in last 2 minutes)
find /var/log/myapp.log -mmin -2 | grep -q myapp.log
MIT License
Thanks to ratatui
and TachyonFX
repositories for maintaining their projects for for the UI animations.