lunes, 23 de junio de 2014

Evitar el apagado de pantalla viendo videos

En mi ordenador principal, con Debian y entorno Cinnamon, que habitualmente lo enciendo al levantarme y lo apago cuando me acuesto, normalmente tengo marcado que se me apague la pantalla cuando haya inactividad en la misma durante más de 10 minutos.

Además, me tengo montado un tingladillo, en mi casa, para ver las pelis que me bajo, a base de haber pasado un cable HDMI por la pared, hasta el salón, donde me pongo cómodo en mi sofá, con mi 'güiskito' y mis palomitas, reproduzco la peli en mi PC... y lo veo tan tranquilo, en la tele del salón.
Pero...
... pero sucede que, no se por qué, en mi entorno Cinnamon, el VLC, que es un extraordinario reproductor de videos, y es el que uso... no da 'actividad', al menos cuando reproduzco un video a plena pantalla... y a los diez minutos se oscurece y tengo que ir al PC a dar a una tecla, para que se vuelva a encender la dichosa pantalla. Por cierto que también me pasa viendo algún video largo, con Youtube, si lo pongo a 'pantalla completa'.

La solución 'manual' es muy fácil: antes de ver la peli, voy a Menu - Administración - Opciones avanzadas (Cinnamon-Settings) y ahí, en 'Opciones de salvapantallas y bloqueo' me basta elegir, en 'Apagar la pantalla cuando esté inactiva durante...' en vez de los 10 minutos que tengo por defecto... 'NUNCA'.

Así no me molesta más y lo único que tengo que hacer es acordarme, al acabar la reproducción, de volver a poner ese parámetro en los consabidos '10 minutos'.

Pero hay una forma más 'elegante': el maestro 'neurus', en los Foros de Espacio Linux me proporcionó un sencillo script que lo que hace, simple y llanamente, es 'ordenar' que se pulse la tecla Ctrl por ejemplo cada 9 minutos (9m)... con lo cual ya no tengo que levantarme a hacerlo... y sobre todo me evita recordar que hay que volver a poner lo de los 10 minutos, porque este script solo actúa... mientras esté abierta la consola.
(Y, además, pienso que el invento puede ser útil para más cosas, en las que haya que activar alguna tecla cada cierto tiempo). 

Este es el script:
 #!/bin/bash 
num=1 && while [ $num -gt 0 ]; do xdotool key Ctrl && sleep 9m; done 
y basta lanzarlo, en una consola, para que se ponga a funcionar, evitando que se oscurezca la pantalla... y termine su actividad cuando cierre la consola.

Para no andar acordándose del texto del script, lo que hay que hacer es copiar el script en un editor de textos (gedit, nano...), ponerle un nombre (por ejemplo 'script_pantalla') y guardarlo en la raiz de tu /home.
Y, para invocarlo, simplemente abres una consola, tecleas
sh nombre_script 
y ya se activa (y se desactivará, como dije, cuando se cierre la consola).

Un buen invento...

(además, si eres 'viciosillo' de las pelis, lo puedes hacer más sencillo, creándote un lanzador en el Escritorio. Aquí decía cómo hacerlo. Sólo que ahora, al menos en Cinnamon, quizás también en la versión actual de gnome-shell, hay un método más fácil: Basta editar el Menú Principal (en Gnome sería 'alacarte') y, por ejemplo en 'Herramientas de Sistema', se añade un Nuevo Item (o elemento) donde le doy un nombre, elijo el icono que me apetezca, le pongo, como comando la mencionada orden 'sh nombre_script' y marco que se lance desde la terminal, o consola. Algo así:


Una vez hecho esto, ya me aparece en el Menu-Herramientas de Sistema.
Y ahora, si quiero, con botón derecho ratón puedo indicar que se copie en el Escritorio, en Favoritos, en el Panel... y basta dar un clic en él para que se abra la consola (por cierto, en blanco...) y quede activado el script que elimina el apagado de la pantalla... mientras esa consola siga abierta.

NOTA FINAL
'Maese' Neurus, gurú del foro EspacioLInux, me sugiere este 'perfeccionamiento': 
"se podría agrupar en un único script la función de desactivar el oscurecimiento de pantalla y la de lanzar el VLC para reproducir un video, de manera que con un solo gesto se hace todo".

Pues bien, para ello (y gracias a sus aclaraciones, ver 'Comentarios') habría que hacer esto:
a) seleccionar el texto y copiar el siguiente script en (por ejemplo) el editor Gedit, ponerle un nombre y guardarlo en la carpeta /usr/local/bin
El script es este (no me preguntéis lo que significa cada cosa, que no tengo ni remota idea de programación. Yo solo tengo 'fe' en Neurus, y en algún que otro 'maestro')
#!/bin/bash
IFS=$'\x0A'$'\x0D'
vlc "$1" &
temp=`tempfile`
top -b -n 2 >> $temp
while cat $temp|grep vlc
do xdotool key Ctrl && sleep 9m && top -b -n 2 > $temp


done



Yo le he puesto como nombre 'VLC.sh' y lo he guardado (abriéndola, por supuesto, con permisos administrativos, que en Nemo basta dar botón derecho ratón sobre la carpeta, y seleccionar esta opción, para poder hacerlo), en la mencionada ruta /usr/local/bin
b) Ahora, si quiero que los videos en MPG se me abran con VLC, selecciono un archivo MPG, le doy a Abrir con... elijo 'Otra Aplicación', en la ventana que se me abre, donde pone 'introduzca una orden personalizada...' pongo el script, con su ruta completa y luego le doy a (por ejemplo) 'Predeterminada'. Y a Aceptar, claro.
Algo así:
Y desde este momento, siempre que quiera abrir un video MPG, usaría esta opción (botón derecho ratón... Abrir con... VLC.sh), que automáticamente reproduce el video, con VLC, y ya incluida la desactivación del oscurecimiento de pantalla.
(Por supuesto, si también suelo abrir con VLC los videos en AVI, tendría que repetir con un AVI el punto b), para que en ellos también apareciese esta opción)

7 comentarios:

  1. Se puede deshabilitar el salvapantallas mientras reproduces una película en vlc.
    Herramientas preferencias todo vídeo deshabilitar salvapantallas

    Saludos

    ResponderEliminar
  2. No sé qué ocurre en tu caso, además de que no uso vlc, sino mplayer. Y no tengo problemas con el apagado de la pantalla.

    De todos modos, en caso de requerir el uso de ese script, puedes ahorrarte incluso ese paso, incorporando al script el lanzado del programa con que quieras reproducir el video.

    Postear el código aquí da como resultado algo ilegible. Lo pego en el thread original en espacio linux,y ves si te convence incluirlo en el post.



    ResponderEliminar
  3. bueno, 'Neurus', ya lo he añadido (naturalmente, gracias a tus aclaraciones en el Foro) y me parece una excelente (y muy elegante) solución

    ResponderEliminar
  4. Pero el script que copiaste no es el que corresponde al caso que presentas. En ese script, la acción se ejecuta sólo una vez, por lo que sólo serviría los primeros diez minutos.

    El script correcto es el que ejecuta un bucle while:

    #!/bin/bash
    IFS=$'\x0A'$'\x0D'
    vlc "$1" &

    temp=`tempfile`

    top -b -n 2 >> $temp
    while cat $temp|grep vlc
    do xdotool key Ctrl && top -b -n 2 > $temp && sleep 9m

    done

    ResponderEliminar
  5. Y para aclarar lo que hace el script:

    IFS... Cambia el delimitador de campos sólo a retornos de carro. Esto evita que en caso de que un archivo llamado, por ejemplo, "archivo de video.avi", sea leído por el script como "archivo" "de" "video.avi" (sin conseguir abrir el archivo en cuestión). Los espacios son leídos como caracteres comunes.

    vcl... obviamente, allí abre el archivo, mientras en segundo plano (&) carga el resto del script.

    temp... define una variable como un archivo temporal.

    top... detecta que esté en uso (o no) vlc, y lo graba en la variable que definimos arriba.

    while... lee la variable, selecciona la línea que dice "vlc". Si tal línea existe, entonces ejecuta xdotool key Ctrl. Inmediatamente vuelve a detectar la presencia activa de vlc y lo envía a la variable, y espera 9 minutos.

    Cuando vlc deje de estar activo (la lectura de la variable: cat $temp|grep vlc dará una salida vacía) el script termina.

    Ahora que lo pienso, sería más prolijo invertir los comandos:

    do xdotool key Ctrl && sleep 9m && top -b -n 2 > $temp

    ResponderEliminar
  6. me 'abrumas', neurus, (y te lo agradezco vivamente) con tu esfuerzo en mejorar nuestro conocimiento. Lo que pasa es que yo, en temas de programación, ya dije que ando como un pulpo en un garaje. En todo caso, me apresuro a actualizar, en el cuerpo de esta entrada, la mejor versión del famoso script que acabas de poner.

    ResponderEliminar
  7. Gracias por el aporte, yo tengo el mismo problema, tengo puesto el salvapantallas a 30 minutos y ni por esas, el VLC oscurece la pantalla en unos 10. Lo que hice inicialmente es deshabilitar el salvapantallas mediante un script, pero tu enfoque me ha dado otra idea. He hecho un script que corre constantemente y si detecta el vlc en marcha toca el botón ctrl cada 9 minutos, mi idea es ponerlo para que se ejecute al inicio de la sesión. No soy un experto en shell ni en linux. Así que si a alguien se le ocurre una mejora o motivo por el que no debo usar este enfoque, espero sus comentarios.

    Este es el script, NO necesita permisos de superusuario:

    #!/bin/bash
    num=1
    while [ $num -gt 0 ]; do
    palabra=$(pgrep -l vlc)
    if [ -n "$palabra" ]; then
    xdotool key Ctrl
    fi
    sleep 9m
    done

    ResponderEliminar