Skip to content

Whitepaper ​

Tento dokument podrobne skúma architektúru návrhu WSL Dashboard, voľbu technológií a základnú logiku implementácie kľúčových funkcií a má poskytnúť pohľad do technickej hĺbky pre vývojárov a pokročilých používateľov.

1. Prehľad architektúry ​

WSL Dashboard používa klasickú architektúru UI riadené reaktívne + asynchrónne úlohy na pozadí a vďaka systému typov a modelu vlastníctva jazyka Rust zaisťuje bezpečnosť pamäte a vysoký výkon pri súbehu.

Hlavné komponenty ​

  • Frontend (UI): deklaratívne rozhranie založené na Slint. Vlákno UI zaisťuje vykresľovanie a interakciu s používateľom.
  • Backend (Runtime): asynchrónne bežecké prostredie založené na Tokio. Zaisťuje distribúciu a spúšťanie systémových príkazov (CLI), súborové I/O a sieťové načúvanie.
  • Komunikácia: vlákno UI a asynchrónne úlohy komunikujú efektívne a bezpečne z hľadiska súbehu prostredníctvom Channel (MPSC) a Shared State (Arc/Mutex/RwLock).

2. Dôvody voľby technológií ​

Prečo Rust? ​

  • Výkon: abstrakcie s nulovými nákladmi, kompilácia do natívneho strojového kódu, bez GC trhania.
  • Bezpečnosť pamäte: v čase kompilácie sa eliminujú pretečenia vyrovnávacej pamäte a dátové súperenia — to je kľúčové pre nástroje zasahujúce do nízkoúrovňových operácií systému (napr. migrácia diskov, konfigurácia siete).
  • Veľkosť binárky: statické prepojenie všetkých závislostí vytvára jediný prenosný spustiteľný súbor.

Prečo Slint + Skia? ​

  • Deklaratívna syntax: popis rozhrania je oddelený od logiky, kód sa ľahko udržiava.
  • Vykresľovanie Skia: priame využitie akcelerácie GPU (cez engine Skia), poskytuje text s presnosťou pod úroveň pixelov a plynulé animácie.
  • Nízka réžia: v porovnaní s Electronom alebo WPF je bežecká réžia Slintu minimálna.

3. Kľúčové technické implementácie ​

3.1 Zisťovanie a parsovanie inštancií WSL ​

Aplikácia volá wsl.exe --list --verbose a parsuje jeho výstup (spracúva kódovanie UTF-16), aby v reálnom čase získala stav inštancií.

  • Nízkoúrovňové dekódovanie: vlastný efektívny kodek zaisťuje správne parsovanie výstupu v prostrediach Windows s rôznymi miestnymi nastaveniami.
  • Synchronizácia stavu: dvojitý synchronizačný mechanizmus — periodické dopytovanie + operáciami spúšťaná synchronizácia.

3.2 Migrácia obrazu disku (VHDX Move) ​

Funkcia migrácie využíva import/export mechanizmus WSL, ale s vysokou mierou abstrakcie a atomickým spracovaním.

  • Transakčné záruky: pred začatím migrácie aplikácia pomocou zámku (Mutex) uzamkne cieľovú distribúciu, aby súbežné operácie nepoškodili dáta.
  • Automatická registrácia: po dokončení migrácie aplikácia automaticky presmeruje cestu VHDX a znova zaregistruje distribúciu; používateľ nemusí zasahovať manuálne.

3.3 Presmerovanie portov a automatizácia brány firewall ​

Sieťová funkcia nie je len jednoduché volanie netsh interface portproxy.

  • Správa životného cyklu pravidiel: aplikácia automaticky zisťuje existujúce pravidlá brány firewall. Keď používateľ vytvorí presmerovanie, aplikácia pomocou Windows API alebo CLI synchrónne vytvorí pravidlo pre prichádzajúcu výnimku.
  • Automatické získavanie IP: parsovaním výsledku wsl hostname -I automaticky mapuje virtuálne sieťové IP medzi hostiteľom a inštanciami.

3.4 Integrácia USBIP ​

Využíva rozhranie príkazového riadka usbipd-win.

  • Spracovanie zvýšenia oprávnení: viazanie vyžaduje oprávnenia správcu; logika na pozadí elegantne sprostredkúva žiadosť o zvýšenie oprávnení UAC.
  • Stavový stroj: interne sa udržiava stavový stroj pripojenia USB zariadení, aby bol proces Attach/Detach sledovateľný.

3.5 Monitorovanie prostriedkov a odľahčenie ​

Aplikácia monitoruje vlastnú spotrebu prostriedkov volaním natívnych API Windows (napr. GetProcessMemoryInfo).

  • Extrémne odľahčenie: v tichom režime na lište aplikácia aktívne uvoľňuje nepotrebné prostriedky UI. Pre štandardné znakové sady, ako je angličtina, môže pamäť klesnúť až na 10MB; pre zložité znakové sady, ako je čínština/japončina/kórejčina, je kvôli načítavaniu väčších vykresľovacích vyrovnávacích pamätí písiem spotreba okolo 38MB.

4. Metriky optimalizácie výkonu ​

MetrikaCieľ/meranieSpôsob optimalizácie
Rýchlosť spustenia< 500 mspredkompilované rozhranie Slint, menej runtime parsovania.
Základná pamäť (lišta)~10MBminimalizácia frekvencie dopytovania na pozadí, uvoľňovanie vykresľovacích vyrovnávacích pamätí podľa potreby.
Zaťaženie CPU (v pokoji)< 0,1 %model riadený udalosťami Windows, bez prázdneho slučkového dopytovania.
Snímková frekvencia vykresľovania60 FPSakcelerácia GPU v Skia, antialiasing s presnosťou pod úroveň pixelov.

5. Logika distribúcie úloh na pozadí ​

Pre plynulosť UI sa všetky časovo náročné operácie (napr. export VHDX) distribuujú ako asynchrónne úlohy:

  1. Zapuzdrenie požiadavky: vlákno UI zapuzdrí používateľskú operáciu ako správu Command.
  2. Správový kanál: cez tokio::sync::mpsc sa odošle spracovateľovi úloh na pozadí.
  3. Spätné odovzdanie stavu: po dokončení úlohy na pozadí sa UI aktualizuje cez callback alebo zdieľaný stav. Tento návrh zaisťuje, že aj pri spracovaní záloh o veľkosti GB rozhranie okamžite reaguje na klikania používateľa.

6. Bezpečnostné aspekty ​

  • Atomické operácie: pre kľúčové odinštalovania a migrácie inštancií je implementované predbežné overenie.
  • Správa zvýšenia oprávnení UAC: oprávnenia sa vyžadujú iba v nevyhnutných prípadoch (napr. viazanie USB zariadení), v súlade s princípom minimálnych oprávnení.
  • Lokálne úložisko: konfigurácia sa ukladá iba lokálne do ~\.wsldashboard; žiadna synchronizácia do cloudu, ochrana súkromia používateľa.