Usar tablet como monitor extra en Linux

Aumentando la vida de un dispositivo técnicamente obsoleto

Tengo una tablet que con el paso del tiempo se está quedando obsoleta, la compré hace unos años y en este momento ya hay muchas aplicaciones que no tienen soporte para la misma. La había estado usando para ver videos en Youtube, pero se nota que ya le cuesta un poco. Es por esto que decidí probar si la podía usar como pantalla externa en mi PC y en el siguiente post te voy a contar cómo lo logré.

Tablet como monitor

La primera opción que encontré en internet es realmente muy sencilla, sólo escuestión de descargar x11vnc y con ayuda de xrandr generar un nuevo monitor virtual. La instalación en debian de x11vnc es la básica de toda la vida:

sudo apt install x11vnc

Los siguientes pasos los pueden encontrar en la wiki de Arch, ubuntu.dokry.com y desdelinux. Pero no considero importante mencionarlos aquí ya que también encontré la herramienta VirtScreen que hace las configuraciones automáticamente y funcionan igual.

Para muchos esa puede ser una solución aceptable y bastante práctica, pero yo me encontré con un problema mayor. En el gestor de ventanas que utilizo (Qtile) al generar el monitor virtual con xrandr, me ponía el área de trabajo dentro del área de los monitores que uso. Esto provocaba que al querer mover el cursor al monitor virtual se “moviera” la imagen en los monitores físicos. Véase la siguiente imagen:

Escritorio recorrido

La solución que encontré requiere de unas características muy específicas de mi sistema y por eso entiendo que es probable que no sea universal, pero sería cuestión de probar con otras combinaciones y ver si funciona igual. Dichas características son:

  • Tarjeta de vídeo Nvidia con multipuerto.

  • Monitor con múltiple entrada de vídeo.

  • Cable extra para monitor.

Con esto lo que hice fue mandar a uno de mis monitores doble señal, una por HDMI y otra por DVI. En el monitor mostrar la salida HDMI y la otra visualizarla por medio de VNC en la tablet. Esta configuración tampoco es especialmente complicada, la voy a detallar a continuación.

Lo primero es básico, conecté tanto a la tarjeta vídeo como al monitor ambos cables. Enseguida entré a la aplicación de configuración de Nvidia y al apartado de monitores, en este acomodé los monitores en las posiciones y con las resoluciones que quería visualizarlos para posteriormente guardar el archivo de configuración en ~/.xorg.conf.

La resolución del monitor que se va a transmitir es la misma que la del dispositivo que lo va a visualizar.

Configuraciones Nvidia

Me gusta tener el archivo en mi home ya que esto me permite modificarlo en cualquier momento sin solicitar permisos de super usuario. Así que lo siguiente fue respaldar el archivo de configuración de xorg y generar un enlace simbólico al nuevo archivo.

sudo mv /etc/X11/xorg.conf /etc/X11/xorg.conf_bak
sudo ln -s ~/.xorg.conf /etc/X11/xorg.conf

Posteriormente reinicié la sesión de Qtile y procedí a agregar en mi script aplicaciones al inicio la orden para iniciar x11vnc con las siguientes opciones:

x11vnc -forever -bg -viewonly -allow 192.168.0.5 -clip 1280x800+3520+0

Donde:

  • -forever Significa que x11vnc va a seguir abierta aunque el cliente se desconecte.

Por defecto esta herramienta se cierra cuándo el cliente se desconecta.

  • -bg Es para que quede la aplicación corriendo de fondo.

  • -viewonly Deshabilita la interactividad por parte del cliente. Osea que no se puede controlar ni teclado ni mouse desde este.

Mas adelante detallo un poco el motivo

  • -allow 192.168.0.5 Habilita el acceso desde el dispositivo que tenga esa IP solamente.

Este filtro es por seguridad, ya que si no se hace de esta manera todos los dispositivos de la red tendrían acceso. También se podría poner un password de acceso, pero para mi red local creo que esto es suficiente por ahora.

  • -clip 1280x800+3520+0 Aquí se define el área que se va a compartir, así como la posición que se eligió en la aplicación de Nvidia.

Lo siguiente fue instalar la herramienta de visualización en la tablet que se va a utilizar, para ello encontré varias opciones, cada una con sus pros y sus contras. Estas son las que mas me llamaron la atención.

  • RealVNC es la que utilizo, pero la desventaja es que no encontré la forma de visualizar el cursor real.

Se visualiza uno pero es del entorno de VNC y el PC sólo refleja la acción procesada por este, pero si movemos el mouse este no tiene respuesta visible en la tablet.

  • bVNC es una alternativa muy buena, la desventaja en esta es que no va tan fluido como la anterior, además de que por alguna razón a veces se crashea.

Sobre la opción -viewonly tengo unos puntos que aclarar.

  1. El primero y considero que es un problema bastante grande, aunque que debe tener solución pero yo no la encontré, es que por alguna razón rompe la fluidez del sistema con respecto a los periféricos.

Como ejemplo utilizaré el teclado: Generalmente cuando dejamos presionada una letra en el teclado, mientras el cursor está en un campo para introducir texto, se visualiza esa letra; pasan unos cuántos milisegundos y enseguida se comienza a repetir dicha letra hasta que soltemos la tecla. El problema si no se utiliza la opción -viewonly es que esto deja de funcionar. Si se presiona la tecla simplemente se visualiza una vez, pero después ya no se repite, y funciona como si se hubiera soltado la tecla enseguida. Esto no parece grave cuando se escribe, pero lo es cuando uno intenta borrar texto o moverse con las flechas.

  1. Lo siguiente es con respecto al cursor, si bien se puede visualizar con el cliente apropiado, se percibe cierto lag por estar conectado vía wifi y esto puede resultar desesperante si se está buscando la fluidez de un monitor. Para mí eso no es problema ya que al estar usando Qtile puedo intercambiar las áreas de trabajo entre monitores, como lo explico en el post sobre dicho gestor de ventanas.

  2. Por último sólo confirmar que sí se puede habilitar la interacción, para técnicamente usarse como pantalla touch, si se encuentra la forma de solucionar el problema de fluidez que planteé anteriormente y se utiliza red cableada para evitar el lag. A mi esta funcionalidad no me interesa, ya que prefiero interactuar con el teclado y mouse, pero es bueno saber la posibilidad existe.

Para finalizar me gustaría mencinar los pros y contras de este método ya que no es perfecto y hay cosas que se tienen que tomar en cuenta.

Contras:

  • Requiere tarjeta de vídeo y monitor multipuerto.

  • Requiere cable de vídeo extra.

  • La fluidez no es la misma de la de un monitor.

  • No se refleja de manera correcta/fluida el cursor en todos los clientes VNC.

Pros:

  • El dispositivo de visualización puede ser una tablet, un celular u otra PC mientras se pueda instalar un cliente VNC.

  • Para la PC es simplemente como si se conectara un monitor ya que se está aprovechando una de las salidas de vídeo.

  • Te permite usar el dispositivo como pantalla touch (con ciertas limitaciones).

  • Obtienes un monitor práctico, que ocupa poco espacio y si es por wifi lo puedes traer por toda tu casa/oficina.

En conclusión:

No es la solución que necesitas para jugar videojuegos o ver vídeos ya que la fluidez no es la más óptima. En cambio, es una excelente alternativa si lo que buscas es una pantalla para ver tu monitor de sistema, el chat de tu stream o trabajar con editores de texto, mientras haces otra cosa en tus pantallas principales.

Precisamente yo lo estoy usando para los escenarios que menciono en el último ejemplo y gracias a mi gestor de ventanas es completamente útil para mí. Me gustaría saber tu opinión y sobre todo tu experiencia si lo probaste con una configuración diferente. Espero tu respuesta en los comentarios o por twitter @engell25. Nos leemos pronto.

 
comments powered by Disqus