README: documentazione completa (installazione, uso, build, meccanica sessioni, icona Wayland)
This commit is contained in:
@@ -1,24 +1,49 @@
|
||||
# Pi Session Launcher
|
||||
|
||||
Piccola applicazione GUI (GTK3) per **riprendere le sessioni di Pi Agent**.
|
||||
Piccola applicazione GUI (GTK3) per **elencare, riprendere e rinominare le sessioni di [Pi Agent](https://github.com/earendil-works/pi-mono)**.
|
||||
|
||||
Elenco tutte le sessioni salvate in `~/.pi/agent/sessions/` e, selezionandone una:
|
||||
|
||||
- apre un terminale (Konsole) **nella cartella di lavoro** (`cwd`) in cui la sessione era stata avviata;
|
||||
- riprende la sessione con `pi --session <file sessione>`.
|
||||
|
||||

|
||||
|
||||
## Funzionalità
|
||||
|
||||
- Elenco di tutte le sessioni, **ordinate per ultima modifica** (più recenti prima)
|
||||
- Per ogni sessione: primo messaggio (o **nome** se impostato, in grassetto), cartella di avvio, ultima modifica (tempo relativo)
|
||||
- **Ripresa** con doppio clic / Invio / pulsante: apre Konsole nella cwd della sessione e lancia `pi --session`
|
||||
- **Rinomina** sessione (F2): il nome è quello che pi mostra nel suo selettore (`/resume`)
|
||||
- **Ricerca** per messaggio o cartella
|
||||
- Apertura della cartella della sessione in Dolphin
|
||||
- Aggiornamento dell'elenco (Ctrl+R)
|
||||
- Eseguibile portabile singolo (vedi sotto) con icona integrata
|
||||
|
||||
## Requisiti
|
||||
|
||||
- Python 3 + PyGObject GTK3 (`python3-gi`, `gir1.2-gtk-3.0`)
|
||||
- Konsole (KDE) — fallback: `xterm`
|
||||
- `pi` nel PATH
|
||||
- Per il menu applicazioni: un ambiente desktop con supporto `.desktop` (es. KDE Plasma)
|
||||
|
||||
## Installazione
|
||||
|
||||
```bash
|
||||
./install.sh # copia la voce nel menu applicazioni KDE (.desktop)
|
||||
./install.sh # installa la voce di menu KDE + icone hicolor (48–512 px)
|
||||
./install.sh --uninstall # rimuove la voce di menu
|
||||
```
|
||||
|
||||
L'installer crea:
|
||||
|
||||
- `~/.local/share/applications/it.enne2.pi-session-launcher.desktop` (con `StartupWMClass`)
|
||||
- `~/.local/share/icons/hicolor/{48,64,128,256,512}x*/apps/it.enne2.pi-session-launcher.png`
|
||||
|
||||
> **KDE Plasma/Wayland**: l'icona di finestra/taskbar viene associata tramite
|
||||
> l'**app-id** GTK, che deve coincidere con lo stem del file `.desktop` e con il
|
||||
> nome dell'icona hicolor (`it.enne2.pi-session-launcher`). `set_icon_from_file()`
|
||||
> da solo non basta su Wayland. Vedere `main()` in `pi-session-launcher.py`.
|
||||
|
||||
Avvio manuale:
|
||||
|
||||
```bash
|
||||
@@ -40,32 +65,52 @@ Le sessioni **con nome** (`/name` in pi) sono mostrate in **grassetto**.
|
||||
|
||||
## Eseguibile portabile
|
||||
|
||||
Build dell'eseguibile singolo ottimizzato (33 MB, PyInstaller + potatura):
|
||||
È disponibile un eseguibile singolo Linux x86-64 (~33 MB, GTK/Python inclusi)
|
||||
nella [release v0.1.0](https://git.enne2.net/enne2/pi-session-launcher/releases/tag/v0.1.0):
|
||||
|
||||
```bash
|
||||
curl -L -o pi-session-launcher \
|
||||
https://git.enne2.net/attachments/513a5f44-378e-4fc7-9f9e-89f25a082d66
|
||||
chmod +x pi-session-launcher
|
||||
./pi-session-launcher
|
||||
```
|
||||
|
||||
### Build da sorgente
|
||||
|
||||
```bash
|
||||
python3 -m pip install --user --break-system-packages pyinstaller
|
||||
# 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.
|
||||
Il file `pi-session-launcher.spec` include la **potatura post-analisi**, che riduce
|
||||
il binario da ~244 MB a ~33 MB (−86%):
|
||||
|
||||
- rimuove `share/icons/*`: l'hook PyGObject raccoglie **tutti** i temi icona
|
||||
installati sul sistema (Papirus, Breeze, Adwaita…), ma a runtime GTK usa i temi
|
||||
di sistema — i bundlati sono peso morto;
|
||||
- mantiene solo le lingue `it`/`en` in `share/locale/` (122 → 2).
|
||||
|
||||
> Nota: Nuitka richiede gli header `python3-dev` (non installabili senza sudo);
|
||||
> PyInstaller è la via raccomandata dalla documentazione PyGObject per app GTK.
|
||||
|
||||
## Repository
|
||||
|
||||
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`.
|
||||
- L'header della prima riga contiene il campo `cwd` (cartella di avvio).
|
||||
- Il primo messaggio utente e il nome (`session_info`) vengono letti dal file.
|
||||
- La **rinomina** appende una entry `session_info` al file: pi legge l'**ultima**
|
||||
entry (walk inverso), quindi l'ultima rinomina vince e un nome vuoto cancella.
|
||||
- Il lancio usa:
|
||||
`konsole --workdir <cwd> --hold --separate -e bash -c 'pi --session "$1"; exec bash' _ <file>`
|
||||
— `exec bash` mantiene la shell aperta quando pi termina.
|
||||
— il wrapper `bash -c` è più affidabile del passaggio diretto degli argomenti a
|
||||
Konsole; `exec bash` mantiene la shell aperta quando pi termina.
|
||||
|
||||
## Repository
|
||||
|
||||
- Gitea (pubblico): https://git.enne2.net/enne2/pi-session-launcher
|
||||
- Release: https://git.enne2.net/enne2/pi-session-launcher/releases/tag/v0.1.0
|
||||
- Clone SSH: `git clone ssh://git@git.enne2.net:222/enne2/pi-session-launcher.git`
|
||||
|
||||
L'icona (terminale + freccia di ripristino) è stata generata con AI e verificata;
|
||||
è usata come icona dell'app, icona hicolor e avatar del repository.
|
||||
|
||||
Reference in New Issue
Block a user