3 puntos por GN⁺ 2023-10-08 | 1 comentarios | Compartir por WhatsApp
  • Es un MVP/POC para usar una tablet vieja no como una pantalla secundaria basada en píxeles, sino como pantalla de terminal SSH: se conecta desde un cliente SSH de Android a la computadora y luego se inyectan pulsaciones de teclas en una sesión de screen.
  • Es una configuración pensada para casos donde la tarjeta gráfica ya llegó a su límite o no se consigue un adaptador de pantalla virtual, y donde solo se necesita ver texto, como un tail de logs, evitando el rodeo de enviar píxeles a la tablet.
  • El flujo básico consiste en abrir un servidor SSH en la computadora, conectarse desde la terminal/cliente SSH de la tablet, crear una sesión con DISPLAY=:0 screen -R aux, y usar un programa de entrada separado que inserta caracteres en la sesión con algo como screen -S aux -X stuff x.
  • Con la configuración DISPLAY=:0, al ejecutar comandos como xdg-open ., emacs & o git gui & desde la terminal, el resultado puede verse en la sesión GUI principal.
  • Está en estado MVP/POC, con limitaciones explícitas de seguridad y usabilidad.
    • Hay que darle a la app móvil acceso completo a la computadora.
    • Hay que abrir un servidor SSH en la computadora; se propone iniciarlo solo en redes confiables y detenerlo fuera de ellas.
    • Existen problemas con el manejo de la entrada C-SPC, con la forma de ejecutar screen por cada tecla y con la dificultad de encontrar clientes de terminal para dispositivos antiguos.
    • Ambos enfoques dependen de la LAN.
  • Se reporta que en un entorno de oficina con Kindle Fire funcionó bien como terminal, mientras que en casa, usando un iPad como pantalla para Emacs, resultó demasiado lento.
  • El pegado funciona inyectando todo el portapapeles en la sesión de screen con Ctrl+Shift+V; la copia aún no está resuelta.
  • Como posibles mejores enfoques se proponen componentes de hyper y xterm.js, visualización en el navegador, envío de entradas de teclado vía WebSocket y una configuración de servidor basada en PTY.

1 comentarios

 
GN⁺ 2023-10-08
Opiniones de Hacker News
  • En el entorno de escritorio GNOME de Linux, se puede usar una tablet no solo para la terminal, sino también como monitor secundario: https://www.omgubuntu.co.uk/2022/06/use-ipad-as-second-monit...
    Sigo esperando una solución mejor para incluso hacer streaming de juegos a una segunda “pantalla” de tablet como esta.

    • Acabo de probarlo, pero al intentar instalar el cliente RDP de Microsoft aparece que requiere iOS 15 o superior, así que no se puede instalar en un iPad viejo.
      Al final, un iPad viejo parece difícil de usar en la práctica con este método, aunque se podría buscar otro cliente RDP que sí funcione.
    • No funciona en X11, y tampoco se ve el cursor.
      Si no necesitas el cursor, funciona bastante bien.
    • Me pregunto si también funciona en KDE, o si existe alguna solución similar.
  • Probé Weylus: https://github.com/H-M-H/Weylus
    Funciona por LAN y permite controlar el mouse desde la tablet.
    A veces hay latencia, pero puedes ajustar la resolución para usar menos ancho de banda; no sé bien qué tan estable sea.
    No lo usé de forma regular.

  • Si tienes una laptop u otro dispositivo de sobra en Windows, SpaceDesk es una buena app gratuita. No es open source: https://www.spacedesk.net/
    La uso junto con WSL2 en una máquina de desarrollo Windows y aprovecho una laptop vieja como pantalla externa; funciona bien incluso por Wi-Fi.

    • Hice funcionar SpaceDesk por USB-C en una tablet barata de Amazon, y lo logré después de darme cuenta de que había que activar el modo PTP en la tablet.
      Me parece bastante buena como monitor secundario para viajar, y casi no se percibe latencia incluso a 60 fps y con ajustes altos.
    • Vi iOS 9.3+ en los requisitos y me ilusioné, pero la app no se instaló en un iPad 2 perfectamente funcional que tenía guardado.
      En iPads que todavía son compatibles, a veces uso la función integrada de macOS para usar el iPad como pantalla secundaria, y funciona bastante bien.
  • Ojalá los conectores de cable plano LVDS de estos dispositivos estuvieran más estandarizados.
    Bastaría con comprar un adaptador HDMI/DisplayPort y usarlo directamente; de hecho existen adaptadores así, pero hasta donde sé no hay un estándar único, ni nada cercano, para los cables planos LVDS.

  • Siento que systemctl es difícil de teclear.
    Si inicias/detienes servicios con frecuencia, recomiendo un alias como alias sc='sudo systemctl'.
    También encaja bien con sc, la utilidad de “service control” de las versiones tardías de Windows NT, y debería funcionar en bash/fish.
    Al desarrollar servicios, envolver stop, status y start en funciones como sce, sci y scs reduce la molestia de cambiar siempre el subcomando st* y el segundo argumento.

    • De acuerdo. Aunque siento que journalctl es aún peor de teclear.
  • De forma similar, si quieres usar un teléfono viejo como alternativa a Stream Deck, puedes usar TouchPortal: https://www.touch-portal.com/
    No es gratis, pero no es caro y funciona sorprendentemente bien.

    • Parece software gratuito y open source que hace algo similar: https://stream-pi.com/
      Según el video que estoy escuchando ahora, actualmente el cliente solo está en Linux, y el host soporta Windows y Linux.
      Probé un poco usando una Surface Pro con Linux como cliente y Windows como host, pero por ahora lo que lo limita es la falta de plugins.
      Uso Stream Deck para gestionar sesiones de juego, y para manejar Steam, Discord, la soundboard y voz de Voicemod, a veces OBS, lanzar juegos, etc., en su estado actual básicamente solo podría gestionar OBS y cosas configuradas con atajos de teclado.
  • Las tablets deberían tener entrada HDMI/DisplayPort para poder usarlas directamente como pantalla.

    • Yendo un paso más allá, todos los dispositivos deberían haber tenido un protocolo de comunicación estándar como TCP.
      La pantalla aparecería como otro dispositivo más capaz de leer y escribir bytes, y todos los dispositivos tendrían una interfaz autodocumentada basada en HTTP/HATEOAS que se pudiera consultar.
      HDMI/DisplayPort o USB A/B/C/.../Z también usarían protocolos como gigabit Ethernet o Thunderbolt, y el ancho de banda determinaría la tasa máxima de cuadros a una resolución arbitraria.
      Se podría consultar la metadata de la interfaz del dispositivo e intercambiar arreglos de bytes con pantallas, impresoras y almacenamiento, con una estructura donde solo cambiara el inicio del encabezado.
      En cámaras y escáneres también podríamos haber descargado directamente archivos de imagen y video como desde la carpeta de documentos de un servidor web, sin drivers del fabricante; no había ningún motivo técnico que lo impidiera, y creo que Microsoft y Apple siguieron bloqueando este tipo de generalización.
      Los estándares web también derivaron hacia un diseño por comité y se perdió la esperanza de unificar estas cosas; los smartphones y tablets parecen el extremo de una mentalidad de consumismo propietario comoditizado.
    • Si conectas un dongle USB de captura HDMI a una tablet, puedes usarla así.
      En general debería verse con cualquier visor de webcam, y en iPad también hay apps dedicadas como https://orion.tube/.
      Sé que también hay opciones en Android, pero no tengo una tablet Android moderna para probar.
  • Antes resolví este caso de uso con Duet.
    Funcionaba bien porque permitía extender la pantalla de la laptop a la pantalla del iPad: https://www.duetdisplay.com/

  • Buena idea.
    Implementé algo parecido con bash, awk, xev, xdotool en lugar de un programa aparte.
    Dentro de screen uso cortar/pegar de screen, y para lo demás basta con usar el búfer de copia de screen y xclipboard.