# Yoinky :: System Monitor
Yoinky is a Linux system monitor built with Rust and `ratatui`. The interface now behaves more like a compact dashboard instead of a static snapshot: it keeps live history, shows per-core activity, highlights busy processes, and surfaces system context such as load, uptime, storage pressure, and network throughput.
## Features
- **Live pulse panels**: CPU, memory, and network sparklines update continuously.
- **Per-core histogram**: Core activity is rendered as grouped bars for quick hotspot detection.
- **Tabbed workspace**: Split the interface into `Overview`, `Processes`, `Devices`, and `I/O` pages.
- **Process spotlight**: Processes are now scrollable and can be sorted by CPU, memory, or PID.
- **System signature panel**: Host, OS, kernel, CPU model, frequency, uptime, load averages, and task summary are all visible together.
- **Memory and swap pressure**: Separate gauges for RAM and swap.
- **Storage telemetry**: Root filesystem usage with totals and utilization percentage.
- **Disk throughput lanes**: Read and write rates per physical disk.
- **Network throughput**: Active interface plus live download and upload rates, with per-interface tables.
- **GPU awareness**: NVIDIA and AMD temperature support, with extra utilization and VRAM details when `nvidia-smi` is available.
- **Device telemetry**: Battery state and `hwmon` temperature sensors when the host exposes them.
- **Responsive layout**: Falls back to a compact summary view on smaller terminals.
## 🛠️ Technology Stack
- **[Rust](https://www.rust-lang.org/)**: The core programming language, chosen for its safety and performance.
- **[ratatui](https://ratatui.rs/)**: A TUI (Terminal User Interface) library for creating rich, interactive terminal applications.
- **[crossterm](https://github.com/crossterm-rs/crossterm)**: A terminal manipulation library used as a backend for `ratatui`.
- **[procfs](https://github.com/eminence/procfs)**: A library to access system and process information from the `/proc` filesystem on Linux.
## 🚀 Getting Started
### Prerequisites
- [Rust](https://www.rust-lang.org/tools/install) (and Cargo) installed on your system.
- On NVIDIA systems: `nvidia-smi` command-line tool must be installed and in your PATH.
- On AMD systems: `rocm-smi` may be required for temperature readings on newer cards.
### Run From Source
```bash
cargo run
```
### Optional Flags
```bash
cargo run -- --tick-rate-ms 500 --history 180
```
- `--tick-rate-ms`: refresh interval in milliseconds.
- `--history`: number of samples stored for the sparkline charts.
### Controls
- `Tab`, `l`, `Right`: next tab
- `Shift+Tab`, `h`, `Left`: previous tab
- `j`, `Down`: scroll process list
- `k`, `Up`: scroll process list upward
- `s`: cycle process sorting mode
- `q`, `Esc`: quit
### Installation
1. Install Yoinky using Cargo:
```bash
cargo install yoinky
```
2. Run the application:
```bash
yoinky
```
3. Press `q` or `Esc` to exit.
### Development Notes
- The TUI must run inside a real terminal because raw mode and the alternate screen are required.
- `cargo check` is enough for non-interactive CI validation, but `cargo run` should be tested in a terminal emulator.
## Screenshot
