Binario ottimizzato 33MB: spec PyInstaller con potatura temi icona e lingue

- da 244MB a 33MB (-86%): l'hook PyGObject raccoglieva tutti i temi
  icona di sistema (~70MB Papirus/Breeze/Adwaita) e 122 lingue
- a runtime GTK usa i temi di sistema, i bundlati erano peso morto
- spec con potatura post-analisi (share/icons/*, locale solo it/en)
- release v0.1.0 su Gitea con binario allegato (33.4MB)
This commit is contained in:
2026-08-19 13:27:18 +02:00
parent 0c4b0fde3c
commit 2fe75f29d7
+8 -7
View File
@@ -40,19 +40,19 @@ Le sessioni **con nome** (`/name` in pi) sono mostrate in **grassetto**.
## Eseguibile portabile
Build dell'eseguibile singolo (PyInstaller, non richiede `python3-dev`):
Build dell'eseguibile singolo ottimizzato (33 MB, PyInstaller + potatura):
```bash
python3 -m pip install --user --break-system-packages pyinstaller
python3 -m PyInstaller --onefile --windowed --name pi-session-launcher \
--collect-all gi --collect-all cairo \
--hidden-import gi.repository.Gtk --hidden-import gi.repository.Gdk \
--hidden-import gi.repository.Gio --hidden-import gi.repository.GLib \
--hidden-import gi.repository.Pango \
pi-session-launcher.py
# build da spec (vedi pi-session-launcher.spec): pota temi icona di sistema
# (GTK usa quelli di sistema a runtime) e tiene solo lingue it/en
python3 -m PyInstaller --clean --noconfirm pi-session-launcher.spec
./dist/pi-session-launcher
```
Il file `.spec` contiene la potatura post-analisi: rimuove `share/icons/*`
(tutti i temi installati sul sistema, ~70 MB) e `share/locale/*` eccetto it/en.
> Nota: Nuitka richiede gli header `python3-dev` (non installabili senza sudo);
> PyInstaller è la via raccomandata dalla documentazione PyGObject per app GTK.
@@ -60,6 +60,7 @@ python3 -m PyInstaller --onefile --windowed --name pi-session-launcher \
Mirror pubblico su Gitea: https://git.enne2.net/enne2/pi-session-launcher
Release: https://git.enne2.net/enne2/pi-session-launcher/releases/tag/v0.1.0
## Come funziona
- Ogni sessione è un file JSONL in `~/.pi/agent/sessions/--<percorso>--/<timestamp>_<uuid>.jsonl`.