3 Punkte von GN⁺ 2023-10-08 | 1 Kommentare | Auf WhatsApp teilen
  • Ein MVP/POC, um ein altes Tablet nicht als pixelbasiertes Zusatzdisplay, sondern als SSH-Terminalbildschirm zu verwenden. Dabei wird vom Android-SSH-Client eine Verbindung zum Computer hergestellt und Tastatureingabe in eine screen-Sitzung injiziert.
  • Gedacht für Anwendungsfälle, in denen die Grafikkarte bereits am Limit ist oder kein virtueller Display-Adapter verfügbar ist und man in Situationen wie tail-Logs nur Text betrachtet, sodass man den Umweg vermeiden möchte, Pixel an das Tablet zu senden.
  • Der grundlegende Ablauf: Auf dem Computer einen SSH-Server starten, sich mit dem Terminal-/SSH-Client des Tablets verbinden und dann mit DISPLAY=:0 screen -R aux eine Sitzung erstellen; ein separates Eingabeprogramm fügt der Sitzung dann Zeichen per screen -S aux -X stuff x hinzu.
  • Mit der Einstellung DISPLAY=:0 lassen sich Befehle wie xdg-open ., emacs & und git gui & im Terminal ausführen, wobei das Ergebnis in der Haupt-GUI-Sitzung sichtbar ist.
  • Es handelt sich ausdrücklich um einen MVP/POC mit Einschränkungen bei Sicherheit und Bedienbarkeit.
    • Der mobilen App muss Vollzugriff auf den gesamten Computer gewährt werden.
    • Auf dem Computer muss ein SSH-Server geöffnet werden; empfohlen wird, ihn nur in vertrauenswürdigen Netzwerken zu starten und sonst zu beenden.
    • Es gibt Probleme bei der Verarbeitung von C-SPC, den Ansatz, für jede Taste screen auszuführen, und die Schwierigkeit, auf alten Geräten einen Terminal-Client zu finden.
    • Beide Ansätze sind vom LAN abhängig.
  • In einer Büro-Umgebung mit Kindle Fire funktionierte es gut als Terminal; in der heimischen iPad-Umgebung war es für die Nutzung als Emacs-Bildschirm zu langsam.
  • Einfügen funktioniert über Ctrl+Shift+V, wobei der gesamte Inhalt der Zwischenablage in die screen-Sitzung injiziert wird; Kopieren ist noch nicht gelöst.
  • Als bessere Ansätze werden Komponenten von hyper, xterm.js, Anzeige im Browser, Tastenübertragung per WebSocket und eine PTY-basierte Serverarchitektur vorgeschlagen.

1 Kommentare

 
GN⁺ 2023-10-08
Hacker-News-Kommentare
  • Unter Linux mit der GNOME-Desktopumgebung kann man ein Tablet nicht nur fürs Terminal, sondern auch als Zweitmonitor verwenden: https://www.omgubuntu.co.uk/2022/06/use-ipad-as-second-monit...
    Ich warte noch auf eine bessere Lösung, mit der man auf so einen zweiten Tablet-„Monitor“ sogar Spiele streamen kann.

    • Habe es gerade ausprobiert: Beim Installieren des Microsoft-RDP-Clients hieß es, iOS 15 oder neuer erforderlich, daher ließ er sich auf einem alten iPad nicht installieren.
      Am Ende scheint ein altes iPad auf diese Weise praktisch schwer nutzbar zu sein; man könnte aber nach einem anderen funktionierenden RDP-Client suchen.
    • Unter X11 funktioniert es nicht, und der Cursor ist auch nicht sichtbar.
      Wenn man keinen Cursor braucht, funktioniert es ziemlich gut.
    • Ich frage mich, ob das auch unter KDE geht oder ob es dort eine ähnliche Lösung gibt.
  • Ich habe Weylus ausprobiert: https://github.com/H-M-H/Weylus
    Es läuft über LAN, und man kann die Maus vom Tablet aus steuern.
    Manchmal gibt es Latenz, aber man kann die Auflösung anpassen, um weniger Bandbreite zu verbrauchen; wie stabil es ist, weiß ich nicht genau.
    Regelmäßig genutzt habe ich es nicht.

  • Wenn man unter Windows einen übrigen Laptop oder ein anderes Gerät hat, ist SpaceDesk eine gute kostenlose App. Open Source ist sie nicht: https://www.spacedesk.net/
    Ich nutze sie auf einer Windows-Entwicklungsmaschine zusammen mit WSL2 und verwende einen alten Laptop als externes Display; selbst über WLAN funktioniert das gut.

    • Ich habe SpaceDesk über USB-C auf einem günstigen Amazon-Tablet zum Laufen gebracht; es klappte, nachdem mir klar wurde, dass man auf dem Tablet den PTP-Modus aktivieren muss.
      Als Zweitmonitor auf Reisen scheint das ziemlich gut zu sein, und selbst bei 60 fps und hohen Einstellungen ist kaum Latenz spürbar.
    • Bei den Anforderungen stand iOS 9.3+, was Hoffnung machte, aber auf meinem eingelagerten, noch einwandfreien iPad 2 ließ sich die App nicht installieren.
      Auf noch unterstützten iPads nutze ich gelegentlich die in macOS eingebaute iPad-Zweitbildschirmfunktion; die funktioniert ziemlich gut.
  • Es wäre besser gewesen, wenn die LVDS-Flachbandkabelanschlüsse solcher Geräte stärker standardisiert wären.
    Dann könnte man einfach einen HDMI-/DisplayPort-Adapter kaufen und loslegen. Solche Adapter gibt es zwar, aber meines Wissens gibt es keinen einheitlichen oder auch nur annähernd einheitlichen Standard für LVDS-Flachbandkabel.

  • systemctl fühlt sich schwer zu tippen an.
    Wenn man Dienste häufig startet/stoppt, empfehle ich einen Alias wie alias sc='sudo systemctl'.
    Das passt auch gut zum „service control“-Tool sc aus späteren Versionen von Windows NT und sollte in bash/fish funktionieren.
    Bei der Dienstentwicklung kann man mit Funktionen wie sce, sci, scs, die stop, status, start kapseln, den Aufwand verringern, jedes Mal den st*-Unterbefehl und das zweite Argument zu ändern.

    • Stimme zu. Allerdings finde ich journalctl noch schlimmer zu tippen.
  • Ähnlich kann man TouchPortal verwenden, wenn man ein altes Smartphone als Stream-Deck-Alternative nutzen möchte: https://www.touch-portal.com/
    Es ist nicht kostenlos, aber nicht teuer und funktioniert überraschend gut.

    • Sieht nach kostenloser Open-Source-Software aus, die etwas Ähnliches macht: https://stream-pi.com/
      Laut dem Video, das ich gerade höre, gibt es derzeit nur einen Linux-Client, während der Host Windows und Linux unterstützt.
      Ich habe es kurz mit einem Surface Pro unter Linux als Client und Windows als Host ausprobiert; was derzeit bremst, ist der Mangel an Plugins.
      Ich nutze ein Stream Deck zur Verwaltung von Gaming-Sessions, aber um Steam, Discord, Voicemod-Soundboard und -Stimme, gelegentlich OBS, das Starten von Spielen usw. zu handhaben, lassen sich im aktuellen Zustand im Grunde nur OBS und Dinge mit konfigurierten Tastenkürzeln verwalten.
  • Tablets sollten einen HDMI-/DisplayPort-Eingang haben, damit man sie direkt als Display nutzen kann.

    • Noch einen Schritt weiter gedacht: Alle Geräte hätten ein standardisiertes Kommunikationsprotokoll wie TCP haben sollen.
      Ein Display würde einfach als ein weiteres Gerät erscheinen, von dem man Bytes lesen und in das man Bytes schreiben kann, und jedes Gerät hätte eine abfragbare, selbstbeschreibende Schnittstelle auf HTTP-/HATEOAS-Basis.
      HDMI/DisplayPort oder USB A/B/C/.../Z würden ebenfalls Protokolle wie Gigabit-Ethernet oder Thunderbolt verwenden, und die Bandbreite würde bei beliebiger Auflösung die maximale Bildrate bestimmen.
      Man könnte Metadaten der Geräteschnittstelle abfragen und Byte-Arrays an Displays, Drucker und Speichergeräte senden bzw. von ihnen empfangen, wobei sich nur der vordere Teil des Headers unterscheidet.
      Auch bei Kameras und Scannern hätte man ohne Herstellertreiber Bilder und Videodateien direkt herunterladen können, wie aus dem Dokumentenordner eines Webservers. Technisch gab es keinen Grund, warum das unmöglich gewesen wäre, und ich denke, Microsoft und Apple haben solche Verallgemeinerungen immer wieder verhindert.
      Auch Webstandards sind in komiteehafte Gestaltung abgedriftet, sodass die Hoffnung verschwand, solche Dinge zu integrieren; Smartphones und Tablets wirken wie die Extremform eines warenförmig gemachten, proprietären Konsumdenkens.
    • Wenn man einen USB-HDMI-Capture-Dongle an ein Tablet anschließt, kann man es so verwenden.
      Mit praktisch jedem Webcam-Viewer sollte man das Bild sehen können, und für das iPad gibt es auch spezielle Apps wie https://orion.tube/.
      Ich weiß, dass es auch unter Android Optionen gibt, habe aber kein modernes Android-Tablet zum Testen.
  • Früher habe ich diesen Zweck mit Duet gelöst.
    Damit konnte man den Laptop-Bildschirm auf den iPad-Bildschirm erweitern, und es funktionierte gut: https://www.duetdisplay.com/

  • Gute Idee.
    Statt mit einem separaten Programm habe ich etwas Ähnliches mit bash, awk, xev, xdotool umgesetzt.
    Innerhalb von screen kann man das Ausschneiden/Einfügen von screen verwenden, für den Rest den Kopierpuffer von screen und xclipboard.