3 points par GN⁺ 2023-10-08 | 1 commentaires | Partager sur WhatsApp
  • Il s’agit d’un MVP/POC visant à utiliser une vieille tablette non pas comme écran secondaire basé sur des pixels, mais comme écran de terminal SSH : on se connecte à l’ordinateur depuis un client SSH Android, puis on injecte les frappes dans une session screen
  • La configuration est pensée pour des cas d’usage où la carte graphique a déjà atteint ses limites ou lorsqu’il est impossible de trouver un adaptateur d’affichage virtuel, et où l’on veut éviter le contournement consistant à envoyer des pixels vers une tablette pour simplement consulter du texte, comme un tail de logs
  • Le flux de base consiste à ouvrir un serveur SSH sur l’ordinateur, s’y connecter depuis le client terminal/SSH de la tablette, créer une session avec DISPLAY=:0 screen -R aux, puis utiliser un programme d’entrée séparé qui injecte des caractères dans la session avec une commande comme screen -S aux -X stuff x
  • Avec le réglage DISPLAY=:0, lorsqu’on exécute depuis le terminal des commandes comme xdg-open ., emacs &, git gui &, le résultat peut être affiché dans la session GUI principale
  • Il s’agit encore d’un MVP/POC, avec des limites explicites en matière de sécurité et d’ergonomie
    • Il faut accorder à l’application mobile un accès complet à l’ordinateur
    • Il faut ouvrir un serveur SSH sur l’ordinateur, avec l’idée de ne le démarrer que sur un réseau de confiance et de l’arrêter dans les autres cas
    • Il existe des problèmes de gestion de l’entrée C-SPC, le fait d’exécuter screen pour chaque touche, ainsi que la difficulté à trouver un client terminal sur d’anciens appareils
    • Les deux approches dépendent du LAN
  • Dans un environnement de bureau avec Kindle Fire, cela fonctionnait bien comme terminal ; dans l’environnement domestique avec un iPad, c’était trop lent pour servir d’écran Emacs
  • Le collage se fait via Ctrl+Shift+V, qui injecte l’intégralité du presse-papiers dans la session screen, tandis que la copie n’est pas encore résolue
  • Parmi les pistes pour une meilleure approche figurent des composants de hyper, xterm.js, un affichage dans le navigateur, l’envoi des frappes via WebSocket et une architecture serveur basée sur PTY

1 commentaires

 
GN⁺ 2023-10-08
Commentaires sur Hacker News
  • Sous l’environnement de bureau GNOME de Linux, on peut utiliser une tablette non seulement pour un terminal, mais aussi comme moniteur secondaire : https://www.omgubuntu.co.uk/2022/06/use-ipad-as-second-monit...
    J’attends encore une meilleure solution pour streamer même des jeux vers ce second « moniteur » sur tablette

    • Je viens d’essayer, mais en voulant installer le client Microsoft RDP, il indique qu’iOS 15 ou plus récent est requis, donc impossible de l’installer sur un vieil iPad
      Au final, un vieil iPad semble difficilement utilisable en pratique avec cette méthode, même si on peut chercher un autre client RDP qui fonctionne
    • Ça ne fonctionne pas sous X11, et le curseur n’apparaît pas non plus
      Si vous n’avez pas besoin du curseur, ça marche plutôt bien
    • Je me demande si ça marche aussi avec KDE, ou s’il existe une solution similaire
  • J’ai essayé Weylus : https://github.com/H-M-H/Weylus
    Ça fonctionne sur le LAN et permet de contrôler la souris depuis la tablette
    Il y a parfois de la latence, mais on peut réduire la résolution pour consommer moins de bande passante ; je ne sais pas trop si c’est stable
    Je ne l’ai pas utilisé régulièrement

  • Si vous avez un vieux portable ou un appareil en trop sous Windows, SpaceDesk est une bonne application gratuite. Elle n’est pas open source : https://www.spacedesk.net/
    Je l’utilise avec WSL2 sur une machine de développement Windows, en transformant un vieux portable en écran externe, et ça marche bien même en Wi‑Fi

    • J’ai fait fonctionner SpaceDesk en USB-C sur une tablette Amazon bon marché, après avoir compris qu’il fallait activer le mode PTP sur la tablette
      Ça devrait être plutôt pratique comme moniteur secondaire en voyage, et même à 60 fps avec des réglages élevés, la latence est à peine perceptible
    • J’ai vu iOS 9.3+ dans les prérequis, ce qui m’a donné de l’espoir, mais l’application ne s’est pas installée sur l’iPad 2 parfaitement fonctionnel que j’avais rangé
      Sur les iPad encore pris en charge, j’utilise parfois la fonction intégrée de macOS qui permet d’en faire un écran secondaire, et elle marche plutôt bien
  • Ce serait mieux si les connecteurs de nappes LVDS de ces appareils étaient plus standardisés
    Il suffirait alors d’acheter un adaptateur HDMI/DisplayPort et de l’utiliser directement ; de tels adaptateurs existent bien, mais à ma connaissance il n’existe pas vraiment de standard unique, ni même presque unifié, pour les nappes LVDS

  • systemctl me semble pénible à taper
    Si vous démarrez/arrêtez souvent des services, je recommande un alias du genre alias sc='sudo systemctl'
    Ça colle aussi bien avec sc, l’utilitaire « service control » des dernières versions de Windows NT, et ça devrait fonctionner dans bash/fish
    Lors du développement de services, envelopper stop, status et start dans des fonctions comme sce, sci, scs évite d’avoir à changer à chaque fois la sous-commande st* et le deuxième argument

    • D’accord. Cela dit, je trouve que journalctl est encore pire à taper
  • De façon similaire, pour utiliser un vieux téléphone comme alternative au Stream Deck, on peut utiliser TouchPortal : https://www.touch-portal.com/
    Ce n’est pas gratuit, mais ce n’est pas cher, et ça fonctionne étonnamment bien

    • Ça ressemble à un logiciel gratuit et open source qui fait quelque chose de similaire : https://stream-pi.com/
      D’après la vidéo que j’écoute en ce moment, le client n’existe actuellement que pour Linux, et l’hôte prend en charge Windows et Linux
      Je l’ai un peu utilisé avec une Surface Pro sous Linux comme client et Windows comme hôte, mais ce qui le limite pour l’instant, c’est le manque de plugins
      J’utilise le Stream Deck pour gérer mes sessions de jeu, et pour gérer Steam, Discord, le soundboard et la voix de Voicemod, parfois OBS, le lancement de jeux, etc., en l’état il ne permet guère de gérer qu’OBS et les éléments configurés avec des raccourcis clavier
  • Les tablettes devraient avoir une entrée HDMI/DisplayPort pour pouvoir servir directement d’écran

    • En allant plus loin, tous les appareils auraient dû disposer d’un protocole de communication standard comme TCP
      L’écran apparaîtrait comme un appareil de plus capable de lire et d’écrire des octets, et chaque appareil disposerait d’une interface autodocumentée, interrogeable, basée sur HTTP/HATEOAS
      HDMI/DisplayPort ou USB A/B/C/.../Z utiliseraient aussi des protocoles comme l’Ethernet gigabit ou Thunderbolt, et la bande passante déterminerait simplement le framerate maximal à une résolution arbitraire
      On aurait pu interroger les métadonnées d’interface d’un périphérique pour échanger des tableaux d’octets avec des écrans, des imprimantes ou du stockage, avec seulement le début de l’en-tête qui change
      Avec les appareils photo et les scanners, on aurait aussi pu télécharger directement images et vidéos comme depuis le dossier de documents d’un serveur web, sans pilote constructeur ; il n’y avait aucune raison technique que ce soit impossible, et je pense que Microsoft et Apple ont constamment empêché ce type de généralisation
      Les standards du web ont eux aussi dérivé vers une conception par comité, faisant disparaître l’espoir d’unifier ces choses, et les smartphones et tablettes me semblent être l’extrême de la pensée consumériste propriétaire marchandisée
    • On peut utiliser une tablette ainsi en y branchant un dongle de capture USB HDMI
      N’importe quel visualiseur de webcam devrait généralement permettre de l’afficher, et sur iPad il existe aussi des apps dédiées comme https://orion.tube/
      Je sais qu’il y a aussi des options sur Android, mais je n’ai pas de tablette Android moderne pour tester
  • À l’époque, j’avais résolu ce besoin avec Duet
    Ça permet d’étendre l’écran d’un portable vers l’écran de l’iPad, et ça marche bien : https://www.duetdisplay.com/

  • Bonne idée
    J’avais implémenté quelque chose de similaire avec bash, awk, xev, xdotool, plutôt qu’un programme séparé
    Dans screen, on utilise le couper/coller de screen, et pour le reste on peut utiliser le tampon de copie de screen et xclipboard