Files

89 lines
3.4 KiB
Markdown

# enne2-caffeine
Widget per il pannello di **KDE Plasma 6** che impedisce lo spegnimento dello schermo, il
blocco schermo e la sospensione automatica: l'equivalente Plasma di **Caffeine** di GNOME.
![tazza piena = attivo, tazza vuota = inattivo](contents/icons/caffeine-on.svg)
## Funzioni
- **Clic sinistro sull'icona** → attiva/disattiva immediatamente (come Caffeine su GNOME).
Tazza piena = inibizione attiva, tazza vuota = inibizione assente.
- **Clic centrale** → popup con le opzioni rapide.
- **Due modalità**:
- *Schermo + sospensione* (default, come Caffeine): blocca spegnimento/dim dello schermo,
blocco schermo e sospensione automatica;
- *Solo sospensione* (come Amphetamine): il computer non si sospende ma lo schermo può
spegnersi normalmente.
- **Timer di disattivazione automatica** (5/15/30/60/120/240 minuti, oppure mai), con
countdown nel tooltip e nell'icona di pannello; notifica opzionale alla scadenza.
- Il widget è "stateless": dopo un riavvio Caffeine è spento, come ci si aspetta.
## Come funziona
Il backend sono due unità **systemd utente** che lanciano `systemd-inhibit` (logind) e restano
vive finché l'inibizione è attiva:
| Modalità | Unità | systemd-inhibit |
|---|---|---|
| schermo + sospensione | `enne2-caffeine-screen.service` | `--what=sleep:idle` |
| solo sospensione | `enne2-caffeine-sleep.service` | `--what=sleep` |
PowerDevil/PolicyAgent traduce le inibizioni logind in policy interne:
- `sleep` → `InterruptSession` (niente sospensione automatica);
- `idle` → `ChangeScreenSettings` (niente dim/spegnimento dello schermo, niente blocco schermo).
Perché non si usa direttamente `org.kde.Solid.PowerManagement.PolicyAgent.AddInhibition`?
Perché il cookie di quell'API è legato al chiamante D-Bus: una chiamata da un processo
effimero verrebbe rilasciata subito (e l'inibizione ha 5 s di delay prima di essere applicata).
Usando unità systemd l'inibizione sopravvive anche al riavvio di plasmashell e si rilascia da
sola alla fine della sessione.
## Installazione
```bash
git clone ssh://git@git.enne2.net:222/enne2/kde-caffeine.git
cd kde-caffeine
./install.sh
```
Poi: tasto destro sul pannello → *Aggiungi widget* → **Caffeine** (categoria *Utilità*).
Per averlo vicino all'orologio trascinalo a sinistra dell'orologio.
## CLI e scorciatoia da tastiera
```bash
bin/enne2-caffeine status # state=on|off, mode=screen|sleep, deadline=<epoch>
bin/enne2-caffeine on 30 # attiva per 30 minuti (modalità schermo + sospensione)
bin/enne2-caffeine toggle # inverti
bin/enne2-caffeine sleep on 60 # solo sospensione, 60 minuti
bin/enne2-caffeine off
```
Per una scorciatoia globale: *Impostazioni di sistema → Tastiera → Scorciatoie → Aggiungi →
Comando o script*, comando `enne2-caffeine toggle` (o il percorso completo dello script).
## Verifica
```bash
systemd-inhibit --list | grep enne2-caffeine
busctl --user get-property org.kde.Solid.PowerManagement \
/org/kde/Solid/PowerManagement/PolicyAgent \
org.kde.Solid.PowerManagement.PolicyAgent ActiveInhibitions | grep -i caffeine
```
La seconda mostra che PowerDevil ha recepito l'inibizione logind (`what=idle:sleep`).
## Configurazione del widget
Tasto destro sull'icona → *Configura Caffeine…*:
- **Impedisci anche lo spegnimento e il blocco dello schermo** (default: attivo);
- **Disattiva automaticamente dopo N minuti** (0 = mai);
- **Notifica quando scade il timer**.
## Licenza
MIT — vedi [LICENSE](LICENSE).