bash

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

Bash: Ejecutar un proceso en domingo

Tenemos un proceso configurado en CRON para ejecutar un script de bash. Sin embargo, ciertas partes de dicho proceso solo deben ejecutarse un dia a la semana.

Para eso vamos a programar nuestro script en bash para solo se ejecute en domingo.

day=`date +%u`
if [ $day eq 0 ]; then
# Proceso que se ejecuta solo en domingo
fi

El comando date +%u nos devuelve el numero de dia de la semana.
Siendo 0 domingo, 1 Lunes, 2 Martes, 3 Miercoles, 4 Jueves, 5 Viernes, 6 Sabado.

#HappyCoding

bash Archives - Mario Uriarte