martes, 22 de septiembre de 2015

Usar un móvil o tablet como pantalla auxiliar

Actualización (05/11/2015): Cambios incluídos en el repositorio de TigerVNC, será posible ejecutar vncserver con distintos scripts tan pronto como se divulguen los cambios a las distros.

Seguro que ya empieza a haber más de un dispositivo móvil o tablet guardado en algún cajón sin saber qué hacer con él.

Aun existen varias opciones, por ejemplo se podría usar de control remoto para un media center. O como propongo, se puede utilizar para visualizar aplicaciones de nuestro ordenador. Algo así como un monitor extra.

Para ello, es necesario un servidor VNC capaz de crear sesiones virtuales como tigerVNC (hubiera preferido x2go pero no he encontrado cliente para android). Esto nos permite no ver lo mismo que en el resto de pantallas y controlar mejor las dimensiones de la superficie.

Se puede lanzar la aplicación deseada sin usar ningún gestor de ventanas, aunque es más recomendable usar uno para tener mayor control sobre el tamaño, posición, decoración...

Depende mucho del tamaño de la pantalla que vayamos a usar, en una de 4" probablemente nos interese mostrar una sola aplicación a través de un gestor de ventanas extremadamente minimalista. Por ejemplo ratpoison. Es un gestor de ventanas de mosaico (al menos así traduce la wikipedia el término tiling window manager) por lo que las aplicaciones abiertas se organizarán en forma de mosaico ocupando el máximo de pantalla disponible. Si sólo se abre 1, pues el 100%. Además ratpoison no añade nada de nada, ni bordes ni barra de título ni múltiples escritorios ni hora...

También podríamos usar i3 y asignar cada aplicación a un escritorio (1,2,3,4...), se pierde un poco de superficie a cambio de un selector de escritorio en la parte inferior. Y hay que modificar un poco la configuración para reducir los bordes de las ventanas.

Vamos allá.

En el PC es necesario instalar (Arch Linux) las aplicaciones tigervnc y ratpoison.

Para configurar TigerVNC crearemos el directorio .vnc
$ mkdir ~/.vnc
$ chmod 700 ~/.vnc
La configuración por defecto se establece en el archivo ~/.vnc/xstartup pero vamos a crear un archivo para cada servidor virtual. Por ejemplo, un servidor virtual en el que mostrar el control de volumen de PulseAudio y otro para Conky.

Dado que el script vncserver actual sólo lee ~/.vnc/xstartup he hecho un par de modificaciones, añadiendo la opción -xstartup para poder indicar qué archivo usar. He probado a hacer un pull request a la versión 1.5 de TigerVNC. A ver si con suerte logro que se integren los cambios al proyecto.
Después de unos cuantos cambios en el Pull Request original, TigerVNC ya incluye la posibilidad de ejecutar un script distinto para cada instancia, entre otras cosas. Si en tu distro aún no está incluido puedes descargar y compilar TigerVNC desde Github o actualizar sólo el script vncserver (con suerte no entrará en conflicto con tu versión actual).
# mv /usr/bin/vncserver /root/
# curl https://raw.githubusercontent.com/TigerVNC/tigervnc/master/unix/vncserver -o /usr/bin/vncserver
# chmod +x /usr/bin/vncserver
Y creamos los ficheros
$ nano ~/.vnc/xstartup_pavucontrol
#!/bin/sh

/usr/bin/pavucontrol &
/usr/bin/ratpoison &
$ chmod 755 ~/.vnc/xstartup_pavucontrol
$ nano ~/.vnc/xstartup_conky
#!/bin/sh

/usr/bin/conky &
/usr/bin/ratpoison &
$ chmod 755 ~/.vnc/xstartup_pavucontrol
Por el lado del cliente, la tablet o móvil (Android), se necesita saber la resolución de pantalla y tener instalado un cliente VNC.

Para averiguar la resolución se puede usar la app Screen Resolution Info.

Como cliente VNC se puede usar la app bVNC: Secure VNC Viewer

Con todo listo ya se puede proceder a iniciar la primera sesión virtual con el comando:
$ vncserver -geometry 800x480 -xstartup xstartup_pavucontrol :10
-geometry indica la resolución de la pantalla del dispositivo móvil obtenida de las especificaciones o usando la app. En este caso la de un Orange Monte Carlo en horizontal.
-xstartup indica el script que se ejecutará al iniciar la sesión.
:10 indica el display que usará el servidor. El puerto por defecto es 5900 con lo que el display :10 escuchará en el puerto 5910.

Para la conexión habrá que indicarle a bVNC que debe conectarse a la dirección ip del ordenador y al puerto 5910. Debería mostrar la aplicación de gestión del volumen de PulseAudio a pantalla completa en el terminal.

Procedemos igual para Conky, en este caso imaginemos que vamos a conectarnos desde un dispositivo con resolución 1080x1920 en posición vertical.
$ vncserver -geometry 1080x1920 -xstartup xstartup_conky :11
En este caso usamos el siguiente display libre, por lo que bVNC deberá conectarse al puerto 5911.

Puede ser útil poder mantener la pantalla del terminal siempre encendida, como indican en Gizmodo.com se puede usar una app (WakeyStay Alive!Keep Screen On!) o mediante la opción "Pantalla activa" (mientras está cargando) de las opciones del desarrollador en los ajustes de Android.

¿Qué otras aplicaciones se te ocurren?

Fuente: Displaying conky on an old android phone

Si lo deseas te puedo enviar un correo electrónico cada vez que publique algo en Mi backup tan sólo debes inscribir tu dirección de correo. Tú dirección de correo será confidencial y sólo te enviaré información que crea que te puede interesar.

No hay comentarios:

Publicar un comentario