Files
fluxo-rs/README.md
nvrl a932e6b422
CI / Lint and Test (pull_request) Successful in 2m11s
CI / Version Check (pull_request) Failing after 3s
updated documentation + readme and seperated bt modules
2026-04-01 18:16:22 +02:00

2.9 KiB

fluxo-rs

fluxo-rs is a high-performance system metrics daemon and client designed specifically for Waybar. It replaces standard shell scripts with a compiled Rust binary that collects data via a background polling loop and serves it over a Unix socket.

Key Features

  • Asynchronous Architecture: Built on Tokio, the daemon handles concurrent IPC requests and background tasks with zero latency and minimal CPU overhead.
  • Native Library Integrations:
    • Audio: Direct libpulse integration for event-driven, instant volume and device updates.
    • Bluetooth: Native bluer integration for robust device monitoring.
    • Pixel Buds Pro: Custom native RPC implementation for real-time battery and ANC control.
    • Network: Native nix and /proc inspection for high-speed interface monitoring.
    • Hyprland: Direct IPC Unix socket communication for gamemode and animation status.
  • Circuit Breaker (Failsafe): Automatically detects failing modules and enters a "Cool down" state to prevent resource waste and log spam.
  • Multi-threaded Polling: Decoupled subsystem threads ensure that a hang in one system (e.g., a slow GPU probe) never freezes your entire bar.

Modules

Command Description Tokens
cpu CPU usage and temperature {usage}, {temp}, {model}
mem Memory usage {used}, {total}
net Network status & speeds {interface}, {ip}, {rx}, {tx}
sys System load and uptime {uptime}, {load1}, {load5}, {load15}, {procs}
disk Disk usage {mount}, {used}, {total}
pool Btrfs aggregate storage {used}, {total}
vol Audio output (sink) {name}, {volume}, {icon}
mic Audio input (source) {name}, {volume}, {icon}
bt Bluetooth status & plugins {alias}, {mac}, {left}, {right}, {anc}
power Battery and AC status {percentage}, {icon}
game Hyprland status active/inactive icons

Setup

  1. Build: cargo build --release
  2. Configure: Create ~/.config/fluxo/config.toml (see example.config.toml).
  3. Daemon: Start fluxo-rs daemon. It's recommended to run this as a systemd user service.

Waybar Configuration

To achieve zero-latency updates, use Waybar Signals:

"custom/audio": {
    "exec": "fluxo vol",
    "return-type": "json",
    "interval": 5,
    "signal": 8,
    "on-click": "fluxo audio cycle sink && pkill -RTMIN+8 waybar"
},
"custom/bluetooth": {
    "exec": "fluxo bt",
    "return-type": "json",
    "interval": 5,
    "signal": 9,
    "on-click": "fluxo bt menu && pkill -RTMIN+9 waybar",
    "on-click-right": "fluxo bt cycle_mode && pkill -RTMIN+9 waybar"
}

Debugging

Start the daemon with RUST_LOG=debug to see detailed logs of library interactions and circuit breaker status:

RUST_LOG=debug fluxo-rs daemon