Skip to content

ZTF666/Vanadinite

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

1 Commit
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

Vanadinite crystals

VANADINITE

A Bubble Tea TUI replacement for argonone-config

Raspberry Pi 5 · Argon ONE case · Go + Charm stack

Go Raspberry Pi 5 Argon ONE Charm


What it is

vanadinite is a full rewrite of the argonone-config shell script into a self-contained TUI binary. It covers every one of the original tool's seven menu items — fan configuration, IR, Argon Industria UPS, BLSTR DAC, unit preferences, system information, and uninstall — but rendered as a live dashboard instead of a numbered CLI prompt.

The argonone daemon (argononed) keeps running the fan in the background as normal. Vanadinite only replaces the configuration interface, not the daemon itself.

Everything in the "safe" paths (fan config, unit toggle, system info) is reimplemented directly in Go — no shelling out, no gopsutil, no Python. Hardware-specific paths that need TTY-driven i²c / LIRC / audio dialogs (IR, UPS, DAC, uninstall, dashboard) suspend the TUI cleanly and hand off to the original argon40 scripts.

Features

  • Live left panel — hostname, Pi model, uptime, CPU temp, computed fan speed, daemon status. Refreshes every 2 seconds.
  • Menu-driven right panel — mirrors the argonone-config menu layout, with instant sub-screens for every option.
  • Fan config — three modes: fixed always-on, preset 55°C/60°C/65°C curve, or custom TEMP=SPEED pairs (up to 5).
  • Unit toggle — Celsius ↔ Fahrenheit, honored across every temp reading.
  • System info — temperatures for every thermal zone, per-core CPU %, storage per real mount, RAM, IP per interface, current fan speed.
  • Embedded logo — the 1024×1024 pixel-art vanadinite crystal renders as colored half-block Unicode art right in your terminal.
  • Zero external Go deps beyond Bubble Tea + Lip Gloss.

Palette

The whole UI walks a single vanadinite-red gradient — the same colors that the mineral itself weathers through.

Swatch Hex Role
#4a0000 #4a0000 Inactive borders, empty bars, cool-temp fills
#cc0000 #cc0000 Active borders, section headers, warn-temp fills
#ff2b47 #ff2b47 Focus, critical alerts, hot-temp fills, byline
#a86060 #a86060 Labels, hints
#e8e8f0 #e8e8f0 Active values, selected text

Install

./install.sh

The installer preflights the argononed daemon (offers to run download.argon40.com/argon1.sh if it's missing), Go, and i2c-tools, then builds and drops the binary at /usr/local/bin/vanadinite.

Build from source

go build -o vanadinite .

Requires Go 1.24+. Charm's Bubble Tea + Lip Gloss are the only runtime deps.

Usage

vanadinite                 # interactive TUI
vanadinite --fan-speed 70  # headless: set always-on 70% and exit

Saving fan config writes /etc/argononed.conf via sudo tee and restarts argononed.service via sudo systemctl. The user running vanadinite needs passwordless sudo for those two commands, or expect a password prompt to interleave with the TUI redraw.

Menu

1. Configure Fan
    ├─ Always on (fixed 30–100%)
    ├─ Preset curve (55°C / 60°C / 65°C)
    └─ Custom curve (arbitrary TEMP/SPEED pairs)
2. Configure IR              → /etc/argon/argonone-ir
3. Argon Industria UPS       → /etc/argon/argonone-upsconfig.sh
4. Configure BLSTR DAC       → /etc/argon/argon-blstrdac.sh
5. Configure Units           → Celsius / Fahrenheit toggle
6. System Information
    ├─ Temperatures (all thermal zones)
    ├─ CPU Utilization (per-core % from /proc/stat)
    ├─ Storage Capacity (per real mount)
    ├─ RAM (from /proc/meminfo)
    ├─ IP Address (per interface)
    ├─ Fan Speed (computed from config + temp)
    └─ Dashboard              → /etc/argon/argondashboard.py
7. Uninstall                 → /etc/argon/argon-uninstall.sh

Options 2, 3, 4, 6 (Dashboard), and 7 suspend the TUI and drop into the original argon40 script — they need direct TTY control of hardware. When the script exits, vanadinite restores the alt-screen and picks back up.

Keybindings

Key Action
Navigate menu / prompt steps
17 Jump to numbered option
Enter Select · confirm · advance
Esc b q Back one screen
digits + Backspace Enter numeric values
Ctrl+D or blank Enter Finish custom-curve entry
Y / N Confirm / cancel a hand-off prompt
Ctrl+C Force quit

Config format

/etc/argononed.conf uses TEMP=SPEED lines:

  • Always-On → one line: 1=SPEED (matches argonone-config's format)
  • Preset / Custom curve → one TEMP=SPEED per threshold, sorted ascending

/etc/argonunits.conf stores temperature=C or temperature=F.

Why not read fan speed from i²c?

The Argon ONE's fan-controller register at 0x1a on bus 1 is write-only. The daemon writes the desired duty cycle there; i2cget against it always returns 0x00. Vanadinite computes the current fan speed the same way the daemon does — replaying the config against the current CPU temp — so the readout is always live and accurate.

Deliverable

  • Single static binary: vanadinite
  • Installed at: /usr/local/bin/vanadinite
  • Depends on: argononed running (installed separately via argon40 script), i2c-tools optional for future use
  • Does not replace: argononed — only the config interface

by ZTF666

About

A live Bubble Tea TUI replacement for argonone-config on the Raspberry Pi 5 Argon ONE case. Reimplements all seven original menu options fan control, IR, UPS, BLSTR DAC, unit toggle, system info, uninstall with a persistent stats panel and a vanadinite-red palette. Pure Go stdlib + Charm, no gopsutil.

Topics

Resources

Stars

0 stars

Watchers

0 watching

Forks

Releases

No releases published

Packages

 
 
 

Contributors