Appunti su Gentoo Linux. Screensaver, screenlocker e risparmio energetico in X.

Sotto X ci sono molti programmi che hanno funzionalità di screensaver, screenlocker e per gestire lo stand-by o lo spegnimento del monitor. Alcuni di questi integrano tutte queste funzionalità.

Le funzionalità del risparmio energetico dipendeno dal supporto della scheda video e del monitor per il protocollo DPMS. Praticamente questo standard è supportato ovunque.

La scelta minimale: Xorg e slock

Partiamo dalla situazione più semplice. Vogliamo usare le funzionalità già comprese nel server grafico X. Questo comprende già uno screensaver (solo schermo nero) e un gestore per il risparmio energetico. Dovremo usare invece un programma esterno per fare il lock dello schermo.

Dentro la sezione Server Flags di xorg.conf (questi sono i valori di default), i valori sono espressi in minuti:

Section "ServerFlags"
...
  Option      "BlankTime"     "10"
  Option      "StandbyTime"   "20"
  Option      "SuspendTime"   "30"
  Option      "OffTime"       "40"
...
EndSection

Le ultime 3 opzioni funzionano solo se il DPMS è attivato nella sezione monitor (di default lo è):

Section "Monitor"
...
  Option "DPMS" "true"
...
EndSection

Per il significato degli stati DPMS si rimanda a questo link e alla voce DPMS di Wikipedia linkata sopra.

Ricordiamo che il programma xset può cambiare e mostrare le opzioni di X a runtime. Pertanto potete fare degli esperimenti senza riavviare tutte le volte il server X. Attenzione però che i tempi specificati con xset sono in secondi mentre in xorg.conf sono in minuti. A questo link trovate anche la spiegazione di alcuni problemi che si hanno con alcuni monitor.

In ogni caso un semplice test è questo (eseguire da un xterm o analoghi):

sleep 1; xset dpms force off

Se il monitor si spegne completamente (comprese le lampade nel caso di un LCD) allora funziona tutto. Altrimenti leggete il link detto sopra.

Uno strumento indipendente dal server X e che quindi può essere usato anche da console è vbetool. È ottimo per fare dei debug o per creare dei propri script. Si può usare di default solo da root.

Io consiglio queste impostazioni:

  Option      "BlankTime"     "3"
  Option      "StandbyTime"   "0"
  Option      "SuspendTime"   "0"
  Option      "OffTime"       "10"

Se volete cambiare le impostazioni di default di sistema e siete un semplice utente è sufficiente modificare il file ??? nella vostra home inserendo (credo) gli opportuni comandi di xset.

Veniamo ora al lock della sessione. Il più semplice strumento è slock. Che però deve essere lanciato manualmente. Per esempio da xterm oppure con un launcher apposito sul proprio desktop. Un altro strumento è xlockmore (sostituisce il vecchio xlock).

Per avviarli automaticamente dopo un certo tempo di inattività bisogna usare xautolock.

Un'ultima nota sullo screensaver di xorg e su xautolock. Questi strumenti così semplici e funzionali purtroppo soffrono di un problema molto grave. Spesso i mouse, soprattutto quelli ottici, generano causalmente spostamenti di un pixel che resettano il conteggio per l'inattività. I programmi più avanzati come XScreensaver e gli altri invece ignorano movimenti inferiori o uguali a 2 pixel. Non c'è modo, che io sappia, per dire allo screensaver di xorg di fare la stessa cosa. Si potrebbe cercare di eliminare questi movimenti fantasma ma bisogna agire sui parametri del mouse (non so quali parametri toccare) e in più si rischia di rendere il mouse inusabile. È stata fatta anche una richiesta sulla mailing list di xorg due anni fa ma non c'è stata risposta.

Xscreensaver

XScreensaver è uno storico screensaver, molto sicuro. È abbastanza pesante ma comprende anche il locker automatico dello schermo. XScreensaver viene installato di default con l'ebuild xfce-utils se viene abilitata la use flag lock. Oppure, sempre in xfce, se viene abilitata la use flag xscreensaver.

Non supporta purtroppo le chiamate XSuspendScreensaver e XResetScreensaver, che sono dei modi standard per interagire con X. Per ovviare a questo problema, i programmi che necessitano di dover interrompere lo screensaver, come per esempio i lettori video, devono avere il supporto appositamente per Xscreensaver. In mplayer esiste un comando apposito per sospendere uno screensaver che non supporta i metodi visti sopra. Tale comando può essere settato a piacere.

heartbeat-cmd="nice -n 19 xscreensaver-command -deactivate >&- 2>&- &"

Questo comando va messo nel file /home/utente/.mplayer/config. Ho provato anche a metterlo nel file di configurazione globale /etc/mplayer/mplayer.conf ma in questo caso non funziona. Non so perché.

Notate la presenza del nice -n 19. Serve per ridurre la possibilità che questo comando, richiedendo risorse di sistema per essere eseguito, faccia saltare il video che state guardando.

Poi ci sono gli screensaver di KDE e Gnome. Sono più "moderni" ma meno sicuri di XScreensaver e sempre pesanti.