All checks were successful
release / release (push) Successful in 16s
PyQt6 QSystemTrayIcon: green=running, red=stopped, yellow=transition. Pause/resume the node via the API (frees/reclaims the GPU, no sudo) so you can free the 4060 Ti before gaming. Playbook standard: README (per-OS prereqs + build/run/test), doc/plan.md, .gitignore (build/ first), VS Code build task -> ./build, install.sh + one-line curl (clone or release), Gitea Actions rolling-latest release. Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_011YPrEZVBpPVoCRyJz2exkZ
1.5 KiB
1.5 KiB
Tdarr-tray — plan
Goal
En systray-applet på workstationen som visar om Tdarr-noden (den som kör NVENC på 4060 Ti) transkoderar, och låter dig pausa/återuppta den med ett klick — så du snabbt kan frigöra GPU:n innan du spelar och återuppta efteråt.
Stack
- Python 3 + PyQt6 (
QSystemTrayIcon). KDE/Plasma, Wayland. - Pratar med Tdarrs API (
x-api-key), samma auth som tdarr-cli.
Deploy target
Pattern A (installerbar). install.sh → ~/.local/bin/tdarr-tray + autostart
(~/.config/autostart/). Release-CI publicerar tdarr-tray.py + install.sh till
rullande latest; en-rads curl … | sh.
Design
- Pollar
GET /api/v2/get-nodesvar 5:e sekund, matchar noden på namn (id ändras vid varje nod-restart). - Läge → ikonfärg: körs (grön) / körs inte = pausad|offline (röd) / övergång (gul).
- Aktiva transkodningar =
workersmedidle:false. - Paus/återuppta:
POST /api/v2/update-node {nodeUpdates:{nodePaused:…}}(ingen sudo; paus dödar ffmpeg → encoder 0 %).
Roadmap / expansions
- Notis (ntfy/knotify) när kön är klar eller noden felar.
- Visa kö-längd / sparat diskutrymme i tooltip.
- Snabbval: pausa i X minuter, eller auto-paus när ett spel körs (t.ex. via gamemode/process-watch).
- Stöd att styra flera noder (inte bara workstationen).
Open questions
- Ska "stäng av" även kunna stoppa container (kräver docker/sudo) eller räcker paus (frigör GPU:n redan)? Nuläge: paus räcker.