3 pontos por GN⁺ 2023-10-08 | 1 comentários | Compartilhar no WhatsApp
  • Um MVP/POC para usar um tablet antigo não como uma tela auxiliar baseada em pixels, mas como uma tela de terminal SSH: a ideia é conectar ao computador a partir de um cliente SSH no Android e injetar entradas de teclado em uma sessão do screen
  • A configuração é voltada a casos de uso em que a placa de vídeo já chegou ao limite, não é possível encontrar um adaptador de display virtual e a necessidade é apenas ver texto, como um tail de logs, evitando a alternativa de enviar pixels para o tablet
  • O fluxo básico consiste em abrir um servidor SSH no computador, conectar a partir do terminal/cliente SSH do tablet, criar uma sessão com DISPLAY=:0 screen -R aux e usar um programa de entrada separado para inserir caracteres na sessão com algo como screen -S aux -X stuff x
  • Com a configuração DISPLAY=:0, ao executar comandos como xdg-open ., emacs & e git gui & no terminal, o resultado pode ser visto na sessão GUI principal
  • Está em estado de MVP/POC, com limitações explícitas de segurança e usabilidade
    • É preciso conceder ao app móvel acesso total ao computador
    • É necessário abrir um servidor SSH no computador; a forma de uso sugerida é iniciá-lo apenas em redes confiáveis e interrompê-lo nas demais
    • Há problemas com o tratamento da entrada C-SPC, com a abordagem de executar screen a cada tecla e com a dificuldade de encontrar clientes de terminal para dispositivos antigos
    • Ambos os métodos dependem da LAN
  • Em um ambiente de escritório com Kindle Fire, funcionou bem como terminal; em casa, no iPad, ficou lento demais para ser usado como tela do Emacs
  • A colagem usa Ctrl+Shift+V para injetar todo o conteúdo da área de transferência na sessão do screen, enquanto a cópia ainda não foi resolvida
  • Como candidatos a abordagens melhores, são sugeridos os componentes do hyper e do xterm.js, exibição no navegador, envio de entradas de teclado via WebSocket e uma configuração de servidor baseada em PTY

1 comentários

 
GN⁺ 2023-10-08
Opiniões no Hacker News
  • No ambiente de desktop GNOME do Linux, é possível usar um tablet não só como terminal, mas também como monitor auxiliar: https://www.omgubuntu.co.uk/2022/06/use-ipad-as-second-monit...
    Ainda estou esperando uma solução melhor para fazer streaming até de jogos para esse segundo “monitor” em tablet

    • Acabei de testar, mas ao tentar instalar o cliente RDP da Microsoft apareceu que exige iOS 15 ou superior, então não deu para instalar em um iPad antigo
      No fim, parece difícil usar um iPad antigo de verdade desse jeito, embora dê para procurar outro cliente RDP que funcione
    • Não funciona no X11, e o cursor também não aparece
      Se você não precisar do cursor, funciona bem o bastante
    • Fico curioso para saber se funciona também no KDE, ou se existe uma solução parecida
  • Já usei o Weylus: https://github.com/H-M-H/Weylus
    Funciona pela LAN e permite controlar o mouse pelo tablet
    Às vezes há atraso, mas dá para ajustar a resolução para usar menos largura de banda; não tenho certeza quanto à estabilidade
    Não usei regularmente

  • Se no Windows você tiver um notebook ou dispositivo sobrando, o SpaceDesk é um bom app gratuito. Não é open source: https://www.spacedesk.net/
    Uso junto com WSL2 em uma máquina de desenvolvimento Windows e aproveito um notebook antigo como monitor externo; funciona bem até por Wi-Fi

    • Fiz o SpaceDesk via USB-C funcionar em um tablet barato da Amazon, depois de perceber que era preciso ativar o modo PTP no tablet
      Parece bem bom como monitor auxiliar em viagens, e quase não dá para perceber latência mesmo a 60 fps e com configurações altas
    • Vi iOS 9.3+ nos requisitos e fiquei esperançoso, mas o app não instalou no iPad 2 perfeitamente funcional que tenho guardado
      Em iPads ainda compatíveis, às vezes uso o recurso integrado do macOS de usar o iPad como tela auxiliar, e ele funciona muito bem
  • Seria melhor se os conectores de cabo flat LVDS desses dispositivos fossem mais padronizados
    Aí bastaria comprar um adaptador HDMI/DisplayPort e usar direto; esses adaptadores até existem, mas, até onde sei, os cabos flat LVDS não seguem um padrão único nem algo perto disso

  • Acho systemctl difícil de digitar
    Se você inicia/para serviços com frequência, recomendo um alias como alias sc='sudo systemctl'
    Combina bem também com sc, o utilitário “service control” das versões posteriores do Windows NT, e deve funcionar no bash/fish
    Ao desenvolver serviços, funções como sce, sci e scs encapsulando stop, status e start reduzem o incômodo de trocar sempre o subcomando st* e o segundo argumento

    • Concordo. Mas acho journalctl ainda pior de digitar
  • De forma parecida, para usar um celular antigo como alternativa ao Stream Deck, dá para usar o TouchPortal: https://www.touch-portal.com/
    Não é gratuito, mas não é caro, e funciona surpreendentemente bem

    • Parece ser um software gratuito e open source que faz algo parecido: https://stream-pi.com/
      Pelo vídeo que estou ouvindo agora, o cliente atualmente só existe para Linux, e o host é compatível com Windows e Linux
      Usei um pouco um Surface Pro rodando Linux como cliente e Windows como host, mas o que hoje limita é a falta de plugins
      Uso o Stream Deck para gerenciar sessões de jogos, mas, para lidar com Steam, Discord, soundboard e voz do Voicemod, OBS ocasionalmente e iniciar jogos, no estado atual só dá para gerenciar coisas como OBS e itens configurados com atalhos de teclado
  • Tablets deveriam ter entrada HDMI/DisplayPort para poderem ser usados diretamente como monitor

    • Indo um passo além, todos os dispositivos deveriam ter um protocolo de comunicação padrão, como TCP
      Um display apareceria como mais um dispositivo capaz de ler e escrever bytes, e todos os dispositivos teriam uma interface autodocumentada, consultável, baseada em HTTP/HATEOAS
      HDMI/DisplayPort ou USB A/B/C/.../Z também usariam protocolos como gigabit Ethernet ou Thunderbolt, e a largura de banda determinaria a taxa máxima de quadros em qualquer resolução
      Consultando os metadados de interface do dispositivo, seria possível enviar e receber arrays de bytes de monitores, impressoras e dispositivos de armazenamento, com uma estrutura em que só o início do cabeçalho mudasse
      Em câmeras e scanners, também seria possível baixar diretamente arquivos de imagem e vídeo como se fossem uma pasta de documentos em um servidor web, sem drivers do fabricante; não havia motivo técnico para isso ser impossível, e vejo Microsoft e Apple como tendo continuado a bloquear esse tipo de generalização
      Os padrões web também caminharam para um design por comitê, e a esperança de integrar essas coisas desapareceu; smartphones e tablets parecem o extremo de uma mentalidade de consumismo proprietário comoditizado
    • Se você conectar um dongle USB de captura HDMI ao tablet, dá para usá-lo assim
      Em geral, qualquer visualizador de webcam deve conseguir mostrar a imagem, e no iPad há até apps dedicados como https://orion.tube/
      Sei que também há opções no Android, mas não tenho um tablet Android moderno para testar
  • Antigamente resolvi esse uso com o Duet
    Funcionava bem porque permitia estender a tela do notebook para a tela do iPad: https://www.duetdisplay.com/

  • Boa ideia
    Implementei algo parecido com bash, awk, xev, xdotool, em vez de usar um programa separado
    Dentro do screen, uso o recortar/colar do próprio screen; para o resto, basta usar o buffer de cópia do screen e o xclipboard