cat ~/projects/piwnica-dashboard/README
PiwnicaStyleDashboard
Animowana warstwa pulpitu dla Arch Linuksa (X11) z panelami stanu sprzętu, aktualizacji, Proxmoxa i homelabu. Działa bez roota i nie zjada zasobów w trakcie gier.
Cel
Mieć stały podgląd CPU, GPU, pamięci, sieci, dysków, temperatur, aktualizacji i stanu homelabu na pulpicie, bez obciążania komputera w czasie gry i bez zasłaniania tapety.
Rozwiązanie
Przezroczyste okno GTK pod innymi oknami, przepuszczające kliknięcia do pulpitu. Rysuje ścieżki jak na płytce drukowanej z impulsami i panele w stylu terminala, omija obszar postaci na tapecie dzięki masce alfa i gasi animacje na czas gry, zostawiając panele.
Architektura
- Okno GTK 3 w warstwie „below” z kompozycją okien, przepuszczające zdarzenia wejścia.
- Rysowanie wektorowe w Cairo, około 30 klatek na sekundę, przemalowywane są tylko zmienione obszary.
- Maska PNG z kanałem alfa chroni wybrany obszar tapety.
- Kolektory próbkują /proc, /sys, lsblk, API Proxmoxa i inwentarz ariku.pl.
- Wykrywanie gier (Steam/Proton, Lutris, Wine, gamescope) wyłącza animacje ścieżek.
Decyzje techniczne
- Bez uprawnień roota
- Wszystkie metryki pochodzą z odczytu /proc, /sys, logów i API. Panel nie potrzebuje żadnych podniesionych uprawnień.
- Renderowanie po stronie klienta
- Serwer X11 tylko kopiuje gotowe powierzchnie, co przy trzech monitorach daje około 20% jednego rdzenia.
Problemy i rozwiązania
- Obciążenie w trakcie gier
- Najpierw panel wyłączał się na czas gry. Potem zmieniłem to tak, że gasną tylko animacje ścieżek, a panele z danymi działają dalej.
- Dwa mechanizmy aktualizacji tych samych hostów
- Skrypt panelu przestał sam wykonywać aktualizacje przez SSH i pokazuje stan updatera z ariku.pl, żeby dwa narzędzia nie działały na tych samych maszynach niezależnie.