Three conky panels (main, dayz, doge) plus all widgets, NUT config templates, and the systemd timer that drives the qwen2.5:1.5b vibe report on maeth-storage. Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
4.0 KiB
maeth-dashboard
Conky-based desktop dashboard for the homelab. Three transparent panels:
- Main (top-left): Home Assistant energy, UDM router throughput/clients, local machine (CPU/mem/GPUs/UPS), maeth-storage (CPU/mem/disks/GPU), k8s cluster.
- DAYZ (top-right): live A2S query against the personal DayZ server.
- DogeBot (right of main): qwen2.5:1.5b running on maeth-storage commentates on the homelab + Jellyfin activity + time-of-day with rotating mood prompts. Refreshes every 3 min.
Smart-home / green-tech aesthetic — emerald accents, Inter for UI, Adwaita Mono for numbers, Twemoji Mozilla for emoji glyphs that work under Xft.
Layout
conky/ conky panel configs (→ ~/.config/conky/)
home-assistant-energy.conf
dayz.conf
doge.conf
widgets/ scripts called via ${execpi} from conky
ha-energy-widget.py Home Assistant power/voltage/current
router-widget.py UDM-SE WAN throughput + speedtest + clients
system-widget.sh local CPU/mem + nvidia-smi + UPS (NUT)
storage-widget.sh ssh to maeth-storage for cpu/mem/disks/GPU
k8s-widget.sh kubectl nodes/pods + top memory
dayz-widget.py A2S query (Source Engine)
gpu-widget.sh local nvidia-smi (legacy; merged into system)
vibe-collector.py metrics → ollama qwen → 3-line vibe report
vibe-widget.sh renders the cached report with emoji-aware font runs
start-widget.sh launcher for all three conky instances
setup-ups.sh one-shot NUT install/configure for Hikvision UPS
nut/ NUT config templates
systemd/user/ vibe-report timer (every 60s)
vibe-report.service
vibe-report.timer
External dependencies
conky≥ 1.18 with Xft + Cairopython≥ 3.11python-pillow,python-dbus,python-gobject(the last two only if you bring back screen capture)nvidia-smi(NVIDIA GPUs) — optional, widget falls back if missingkubectlwith a working kubeconfig — optionalnut(upscclient) — optional, for Hikvision UPS- Fonts: Inter, Adwaita Mono, Twemoji Mozilla
- Twemoji Mozilla:
curl -fsSL -o ~/.local/share/fonts/Twemoji.Mozilla.ttf https://github.com/mozilla/twemoji-colr/releases/download/v0.7.0/Twemoji.Mozilla.ttf && fc-cache -f
- Twemoji Mozilla:
Install
git clone git@github.com:dezmaeth/maeth-dashboard.git ~/code/maeth-dashboard
cd ~/code/maeth-dashboard
cp widgets/env.example ~/.config/home-assistant-energy-widget/env # fill in HA url + token
# (optional) drop UDM creds at ~/.udm:
# username=<udm-local-admin>
# password=<...>
./install.sh
install.sh symlinks every file under conky/, widgets/, and systemd/user/ into the matching ~/.config/... location, backing up any pre-existing file as <path>.bak.
After install:
systemctl --user enable --now vibe-report.timer
conky -c ~/.config/conky/home-assistant-energy.conf -d
conky -c ~/.config/conky/dayz.conf -d
conky -c ~/.config/conky/doge.conf -d
For autostart, hook widgets/start-widget.sh into your session (GNOME → Tweaks → Startup Applications, or a .desktop in ~/.config/autostart/).
NUT / UPS
Edit widgets/nut/* first (password in upsd.users + upsmon.conf), then:
sudo bash widgets/setup-ups.sh
The Hikvision UPS at vendor 0665:5161 auto-detects the Megatec/Voltronic-QS subdriver. After install:
sudo systemctl enable --now nut.target
upsc hikvision@localhost
Secrets
widgets/env (HA url+token) and ~/.udm (UDM admin creds) are gitignored — keep them outside the repo.
Remote services referenced
- Home Assistant — URL in
widgets/env - UDM-SE —
192.168.1.1(creds in~/.udm) maeth-storage.local— SSH for storage stats / ollama / jellyfindezmaeth.root.sx:27016— public DayZ A2S query- Jellyfin on
maeth-storage:8096— token bootstrapped from its sqlite DB
If you install this on a machine outside the LAN, you'll need Tailscale (or similar) so those hostnames resolve from the road.