Deutsch • English • Español • Français • Italiano • Polska • Portuguese • Български • Русский • Українська • やまと • 中国 • فارsi
Architettura, Requisiti e Sviluppo
penguins-gui è progettata secondo una rigorosa separazione tra presentazione grafica e logica di dominio dei tool sottostanti.
🧩 Architettura a Livelli
L'applicazione è organizzata in livelli distinti per garantire manutenibilità e testabilità:
flowchart TD
UI["Vista Fyne (main.go, chef_dialog.go, toolbar.go)"] --> APP["Workflow Applicativi"]
APP --> ADAPTER["CLIAdapter (internal/tools/eggs)"]
ADAPTER --> EGGS["Processo esterno: eggs"]
ADAPTER --> CHEF["Processo esterno: chef"]
- Livello di Presentazione (Fyne): Gestisce finestre, dialoghi, temi, zoom dei font e stato visivo. Tutte le mutazioni della UI avvengono in sicurezza sul thread grafico tramite
fyne.Do, mentre le operazioni di lunga durata girano in goroutine asincrone senza mai bloccare la finestra. - CLIAdapter (
internal/tools/eggs): Isola il rilevamento degli eseguibili inPATH, la costruzione degli argomenti CLI, l'elevazione dei privilegi per-processo (pkexec), la pulizia delle sequenze ANSI dallo stream di output e la ricerca dell'artefatto.isogenerato. - Confini di Sicurezza (Polkit): L'interfaccia grafica non gira mai come
root. Include le regole PolicyKit (49-penguins-gui.rules) per richiedere l'autorizzazione amministrativa solo nel momento in cui viene lanciato un comando che modifica il sistema.
📋 Requisiti di Sistema
- Sistema Operativo: Distribuzione Linux con sessione grafica X11 o Wayland attiva.
- Autenticazione: Polkit (
pkexec) osudoper le operazioni amministrative. - Grafica: Driver video con supporto OpenGL (richiesto dal toolkit Fyne) e
xorg-xrandrsu ambienti X11/Arch. - Dipendenze di utilità:
curlegpg(per la configurazione automatica dei repository). I binarieggsechefpossono essere installati direttamente tramite la GUI.
💻 Compilazione da Sorgente e Pacchettizzazione
Il codice sorgente è ospitato nel repository ufficiale:
👉 https://github.com/pieroproietti/penguins-gui
Sviluppo Locale
Per clonare, eseguire i test ed effettuare il run locale:
git clone https://github.com/pieroproietti/penguins-gui.git
cd penguins-gui
go mod tidy
go test ./...
go run .
Generazione Pacchetti Nativi e AppImage
Il progetto include un sistema di build autonomo in Go (senza richiedere privilegi di root durante la creazione dei pacchetti) e il supporto per AppImage:
# Compila il binario penguins-gui
make build
# Genera i pacchetti nativi (.deb, .rpm, .pkg.tar.zst) nella cartella dist/
make package
# Genera il bundle portatile AppImage
make appimage