Como apagar los monitores cuando se activa el screensaver en GNOME

En mi configuracion de Workspace yo tengo 3 monitores ( esperemos muy pronto 4 ) y como tengo prendida la PC todo el dia ... muchas veces los monitores se quedan prendidos TODO EL DIA. Ademas de esto, cuando finalmente se apagan los monitores mi perro roza el escritorio, yo llego a buscar un papel y se mueve ligeramente el mouse y listo monitores prendidos y que se niegan a apagarse. Ya habiamos tocado este tema en una entrada anterior Como apagar los monitores cuando se activa el screensaver en KDE, pero yo no soy mucho de usar KDE.  En ese articulo vimos, que para apagar los monitores solo teniamos que ejecutar el comando
xset dpms force off
El problema era ejecutarlos en el momento adecuado ( al bloquear la session, posiblemente con CTRL + L o por inactividad ) sin embargo, recientemente encontre un codigo que me avisa cuando el screensaver se activa y cuando se apaga. Entonces programe un script para que los monitores se apaguen automaticamente, xq eso de estar ejecutando un comando manualmente cuando me iba a retirar de la PC como que era mucho estress para mi.
MOUSEID=`xinput list | grep Mouse | egrep -o "id=([0-9]{1,2})" | egrep -o "[0-9]{1,2}"` dbus-monitor --session "type='signal',interface='org.gnome.ScreenSaver'" | while read x; do case "$x" in *"boolean true"*) echo SCREEN_LOCKED + `date` sleep 2s xset dpms force off xinput --disable $MOUSEID ;; *"boolean false"*) echo SCREEN_UNLOCKED + `date` xinput --enable $MOUSEID ;; esac done
Ustedes solo deben guardar este script en su $HOME y ejecutarlo al iniciar session. Por ejemplo, añadiendolo al archivo $HOME/.profile Ahora paso a explicar un poco mas a detalle el script para todos los interesados:
MOUSEID=`xinput list | grep Mouse | egrep -o "id=([0-9]{1,2})" | egrep -o "[0-9]{1,2}"`
Esta linea me obtiene el ID del dispositivo mouse en mi sistema. Este id es diferente en cada computadora
dbus-monitor --session "type='signal',interface='org.gnome.ScreenSaver'" |
Esta linea se encarga es escuchar permanentemente el BUS de log del sistema y me avisa cuando sucede un evento de org.gnome.ScreenSaver Este solo puede ser de dos tipos:
  • TRUE cuando se activo el screensaver
  • FALSE cuando se desactivo el screensaver
  Cuando se activa el screensaver, le indico al sistema que espere 2 segundos ( sino lo hago a veces la pantalla no se apaga :( ) y luego le indico a las pantallas que se apaguen. E inmediatamente deshabilito el mouse. Esto, porque basta que me pare bruscamente del escritorio para que se mueva el mouse y por ende se activen las pantallas. Cuando se desactiva el screensaver, le indico al sistema que me reactive el mouse

Add new comment