A production-grade terminal system monitor with an animated cyberpunk TUI.
Pulse is a high-performance, asynchronous system monitoring tool written in Rust. It combines accurate system metrics with a retro-futuristic CRT aesthetic, providing a visually engaging way to track your system's health.
- Resource Monitoring: Real-time tracking of CPU, Memory, Disk I/O, Network, and GPU usage.
- Process Management: Powerful process list with sorting, filtering (regex supported), and signal sending capabilities (
SIGTERM/SIGKILL). - Cyberpunk Aesthetic: Fully animated UI with customizable themes, CRT effects (scanlines, vignette, chromatic aberration), and fluid transitions.
- Network Inspector: Detailed per-interface statistics and active TCP connection tracking.
- Security Guard: Built-in logic to highlight suspicious processes based on CPU/Memory/Network spikes.
- Container View: Integrated monitoring for running containers and virtual environments.
- History & Analytics: Ring-buffer based historical data visualization with different time windows.
- Remote Monitoring: Supports streaming metrics from remote hosts over SSH and a headless server mode (
--server) to emit JSON metrics. - High Performance: Built on
tokiofor async I/O andratatuifor efficient rendering.
You can install Pulse from the AUR using an AUR helper:
yay -S pulse-tuiOr for the development version:
yay -S pulse-tui-gitPulse is available on the Snap Store:
sudo snap install pulse-tuiEnsure you have Rust installed (1.75+ recommended).
git clone https://github.com/OminduD/pulse.git
cd pulse
cargo install --path .Run the application:
pulseRun Pulse in headless server mode to stream metrics as JSON (useful for remote monitoring or piping to other tools):
pulse --server --interval 1000| Key | Action |
|---|---|
q / Ctrl+c |
Quit application |
s |
Cycle sort mode (CPU, Mem, PID, Name) |
f |
Enter filter mode (type regex/text) |
k |
Kill selected process (SIGTERM) |
K |
Force kill selected process (SIGKILL) |
m |
Cycle layout modes |
t |
Cycle UI themes |
g |
Switch to GPU View |
n |
Switch to Network Inspector |
d |
Switch to Disk View |
c |
Switch to Container View |
h |
Switch to History View (cycle history windows) |
o |
Switch to Overview |
Enter |
Toggle Focus Mode |
e |
Export history to JSON |
Pulse looks for a configuration file at ~/.config/pulse/config.toml. It will be created with default values on the first run.
Example configuration snippet:
[general]
refresh_rate_ms = 500
frame_rate = 60
default_sort = "cpu"
[display]
theme = "tokyonight" # tokyonight, catppuccin, gruvbox, rosepine, nord, etc.
crt_effects = true
crt_scanline_intensity = 0.3
crt_aberration = 0.2
[panels]
cpu = true
memory = true
gpu = true
container = true
[security]
enabled = true
cpu_threshold = 80.0
mem_threshold_mb = 1024.0- Core: Async event loop coordinated by
tokio, decoupling data collection from UI rendering. - Rendering: Uses
ratatuiwith custom widgets for charts, gauges, and the CRT post-processing effect pipeline. - Data: Uses
sysinfofor cross-platform system data,nixfor low-level process management, and custom modules for GPU/Container metrics.
Contributions are welcome! Please feel free to submit a Pull Request.
Please see our Contributing Guidelines for more details on how to get started, set up your development environment, and submit your changes.
This project is licensed under the MIT License - see the LICENSE file for details.
