jueves, 14 de enero de 2010

Suspender temporalmente screensaver en KDE SC 4.3

A veces estamos trabajando sobre varias computadoras simultáneamente y no queremos que el screensaver bloquee en ningún momento la pantalla de una que no estamos atendiendo, menos aún si se bloquea el acceso al escritorio al ejecutarse el screensaver (una medida de protección típica).

Con el comando:

qdbus org.kde.krunner /ScreenSaver SimulateUserActivity

Se puede simular actividad del usuario y por lo tanto el screensaver no entrará en funcionamiento ni bloqueará la pantalla si se corre este comando cada cierto intervalo menor que el tiempo máximo de espera para activar el screensaver (unos minutos normalmente).

Una posibilidad manual rápida es correrlo con watch:

watch -n 120 qdbus org.kde.krunner /ScreenSaver SimulateUserActivity

Que correrá el comando automáticamente cada 2 minutos; si nuestro screensaver está configurado para activarse en 3 minutos, no lo podrá hacer mientras esté corriendo este watch.

Otra posibilidad es usar un script que podamos invocar desde un ícono en el escritorio. El script sería así:

### copiar desde aquí ######
#!/bin/sh
if [ -f $HOME/.screensaver-suspendido ]
then
rm -f $HOME/.screensaver-suspendido
killall screensaver-suspendido.sh
else
touch $HOME/.screensaver-suspendido
while true; do
qdbus org.kde.krunner /ScreenSaver SimulateUserActivity
sleep 120
done
fi
exit
### copiar hasta aquí ######

Lo creamos con un editor de texto (kwrite, etc.), en un lugar del PATH (en $HOME/bin por ejemplo), con el nombre "screensaver-suspendido.sh" (se lo pueden cambiar, pero modifiquen el script con el nuevo nombre), y damos los permisos de ejecución apropiados (chmod +x $HOME/bin/screensaver-suspendido.sh).

Uso del script
Si lo corremos una vez, activa la suspensión del screensaver, si lo corremos una 2da. vez, desactiva la suspensión. Es ideal para usar dentro de un ícono en el escritorio.

Explicación del script
El script busca un archivo de referencia ".screensaver-suspendido" en nuestro $HOME (típicamente sería un cierto /home/nombre-de-usuario), el "." delante del nombre es para que no aparezca listado en Dolphin u otros administradores de archivos. Si lo encuentra, lo borra y mata cualquier proceso con el nombre del script (lo que sería un apagado factual del programa). Si no encuentra el ".screensaver-suspendido", entonces lo crea y luego corre el comando qdbus en un loop - infinito - que lo ejecuta una vez cada 120 segundos.

Que les sea util.

1 comentario:

Emperador del Mundo dijo...

¿No funciona en otros entornos de escritorios?