89 lines
3.4 KiB
Markdown
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.
|
|
|
|

|
|
|
|
## 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).
|