Skip to content

Latest commit

 

History

87 Commits

Folders and files

NameName
Last commit message
Last commit date
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

Pulse

License Rust Platform

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.

Screenshot

✨ Features

  • 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 tokio for async I/O and ratatui for efficient rendering.

🚀 Installation

Arch Linux (AUR)

You can install Pulse from the AUR using an AUR helper:

yay -S pulse-tui

Or for the development version:

yay -S pulse-tui-git

Snap (Ubuntu/Universal)

Pulse is available on the Snap Store:

sudo snap install pulse-tui

From Source

Ensure you have Rust installed (1.75+ recommended).

git clone https://github.com/OminduD/pulse.git
cd pulse
cargo install --path .

🛠️ Usage

Run the application:

pulse

Server Mode

Run Pulse in headless server mode to stream metrics as JSON (useful for remote monitoring or piping to other tools):

pulse --server --interval 1000

⌨️ Keybindings

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

⚙️ Configuration

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

🏗️ Architecture

  • Core: Async event loop coordinated by tokio, decoupling data collection from UI rendering.
  • Rendering: Uses ratatui with custom widgets for charts, gauges, and the CRT post-processing effect pipeline.
  • Data: Uses sysinfo for cross-platform system data, nix for low-level process management, and custom modules for GPU/Container metrics.

🤝 Contributing

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.

📄 License

This project is licensed under the MIT License - see the LICENSE file for details.

About

Pulse is a high-performance, asynchronous system monitoring tool written in Rust that features a visually striking "cyberpunk" terminal user interface (TUI).

Topics

Resources

Contributing

Stars

0 stars

Watchers

0 watching

Forks

Releases

Packages

Contributors

Languages