Entfernte Sitzungen mit Xpra steuern
Weitergeleitet
Schnell auf ein Programm zugreifen, das auf einem anderen Rechner liegt – unter Linux funktioniert das mit X-Forwarding. Das schließt aber andere Betriebssysteme aus und ist außerhalb des lokalen Netzes quälend langsam. Deutlich schneller und plattformübergreifend bietet diese Funktion das kleine Open-Source-Tool Xpra.
Anwendungen starten, Computer wechseln, dieselbe Anwendung weiter bedienen und später von einer dritten Maschine nochmal das gleiche Fenster verwenden – ein typischer Anwendungsfall für eine Virtual Desktop Infrastructure oder für Xpra. Xpra steht für „X persistent remote application“ und ist ein Client für persistente, nicht lokale X-Applikationen. Er erlaubt das Umleiten einzelner Fenster über SSH, TCP oder WebSockets. Alternativ kann er den gesamten Desktop übers Netzwerk weiterreichen.
Unter Linux bieten zwar die Paketverwaltungen Xpra an, dann allerdings nicht in der aktuellen Version 1.0, die für die hier vorgestellten Funktionen erforderlich ist. Auf der Website finden sich Binärpakete für Linux, Windows und macOS sowie die Quellen zum Selberkompilieren. Die Software steht unter der GNU Public License 2.0 und besitzt eine rege Entwickler-Community.
Für alle Betriebssysteme stellen die Entwickler ein Kommandozeilentool und einen grafischen Launcher bereit. Dem GUI fehlen allerdings einige Optionen – etwa das komplette Spiegeln der Arbeitsoberfläche (siehe Abbildung). Dafür ist Xpra nach Aussage der Entwickler aber nicht gedacht, das wäre eher eine Aufgabe für VNC.
Zum Anbieten einer Anwendung sollte sie lokal gestartet werden, Clients können sich mit dem Kommando xpra attach an die Sitzung hängen:
user@host1 $ xpra start :100 --start=xterm user@host2 $ xpra attach ssh/user@host1/100
Den ganzen Desktop holt man per
user@host2 $ xpra shadow ssh/user@host1
Damit mehrere Clients auf dieselbe Anwendung zugreifen können, müssen sowohl der Server als auch die Clients auf der Kommandozeile die Option –sharing verwenden. Läuft die Anwendung bereits, lassen sich die Optionen auf dem Server mit upgrade anpassen:
user@host1 $ xpra upgrade :100 --sharing
Laufende Clients müssen danach neu gestartet werden. Vergisst man übrigens bei einem der Clients die Option –sharing, beenden sich die Instanzen auf allen anderen Rechnern automatisch.
Neben den nativen Varianten existiert ein HTML5-Client. Dieser erfordert eine möglichst aktuelle Version von Xpra und das Programm websockify. Die Sitzung muss über TCP erreichbar sein und mit der Option –html=on gestartet werden.
user@host1 & xpra start --tcp-bin= 0.0.0.0:14500 --html=on --start-child=firefox
Öffnet man jetzt in einem Browser die Adresse http://host1:14500, erhält man einen praktischen Browser im Browser. Auch in diesem Fall gilt wieder: Nur ein aktiver Client, es sei denn, alle beteiligten Parteien laufen mit der Option sharing. Für den Webclient geht das per GET-Parameter ?sharing=true.
Gemeinsame Zwischenablage
Diverse weitere Parameter bestimmen, wie stark die entfernte Anwendung in den eigenen Desktop integriert ist. Je nach Fensterverwaltung kann zum Beispiel das Icon in den Systemtray eingebunden sein, auch die Zwischenablage lässt sich übermitteln. Laut Website lassen sich Server und Client auch so einrichten, dass nur die Zwischenablage weitergereicht wird.
Einen speziellen Anwendungsfall stellt die Isolation von Anwendungen durch die gemeinsame Verwendung von Containern und Xpra dar. Dafür gibt es allerdings noch keine einheitliche Lösung. x11docker setzt auf Docker als Container-Implementierung. Es bietet unter anderem den Zugang zum GUI der containerisierten Anwendung via Xpra. x11docker besitzt ein GUI für die Einstellungen vor dem Start.
Ähnlich funktioniert docker-x11-xpra. Dabei handelt es sich allerdings nicht um ein Frontend, über das man Inhalte über Xpra aus dem Container herausbringen kann, sondern um ein Docker-Image. Es enthält eine minimale Basis, die Nutzer um ihre Anwendung erweitern können, um dann mit Xpra darauf zuzugreifen.
Das Projekt Docker-Desktop stellt lediglich ein Dockerfile bereit für Container mit installiertem X11, SSH und Xpra. Analog können auch Container-Systeme wie rkt oder LXC zum Einsatz kommen, um eine ähnliche Isolation wie in diesem Beispiel mit Docker zu erreichen.
Xpra erfindet das Rad nicht neu, sondern deckt Funktionen ab, die andere Programme bereits länger bieten. Für eine komplette Desktopvirtualisierung existieren auch ausgefeiltere Systeme. Für einzelne Anwendungen ist es jedoch deutlich flotter und unkomplizierter als etwa VNC oder X-Forwarding. (jab)