Fensterschubser

Wer mit mehreren, räumlich voneinander getrennten Rechnern arbeitet, muss mitunter einen Blick auf den jeweils anderen Bildschirm werfen. Kann der Nutzer die Fenster einer Anwendung auf den eigenen Bildschirm herüberholen, bleibt ihm mancher Fußweg erspart.

In Pocket speichern vorlesen Druckansicht
Lesezeit: 5 Min.
Von
  • Michael Riepe
Inhaltsverzeichnis

Zu den Annehmlichkeiten, die das X Window System bietet, zählt seine Fähigkeit, eine Anwendung auf einem Rechner auszuführen und die dazugehörigen Fenster auf einem anderen anzuzeigen. Dazu muss der Nutzer lediglich beim Start die Umgebungsvariable DISPLAY entsprechend setzen: DISPLAY=anderswo:0 firefox etwa startet lokal einen Browser und schickt seine Fenster auf den Bildschirm des Rechners anderswo – vorausgesetzt, dass keine Firewall im Weg steht und der Anwender das Recht besitzt, dort Fenster zu öffnen. Letzteres lässt sich mit xauth erreichen, Ersteres zum Beispiel mit einem ssh-Tunnel oder Virtual Private Network (VPN) beheben.

Allerdings gestattet X11 es von sich aus nicht, ein Fenster nachträglich von einem Display aufs andere zu schieben: Jede Anwendung ist fest an „ihren“ X-Server gebunden. Wer vom Rechner hier aus einen Blick auf ein Fenster werfen will, das auf anderswo geöffnet ist, muss tricksen.

Eine Möglichkeit besteht darin, den kompletten Desktop von anderswo in ein lokales Fenster zu kopieren, etwa mit x11vnc und einem beliebigen VNC-Viewer [1]. Letzterer darf sogar auf einem Rechner laufen, der kein X11 beherrscht, etwa auf einem Windows-PC. Das Programm eignet sich außerdem dazu, einem anderen Nutzer bei Schwierigkeiten über die Schulter zu sehen – selbstverständlich nur mit dessen Genehmigung. Allerdings benötigt es ein gewisses Maß an Rechenleistung, da es den Bildschirm permanent überwachen und alle Änderungen zum VNC-Viewer senden muss.

Einzelne Anwendungen lassen sich zum Beispiel mit xmove von einem Display aufs andere „beamen“. Ähnlich wie beim Star-Trek-Transporter befinden sie sich dabei entweder auf der einen oder auf der anderen Seite, nie auf beiden. Allerdings ist dafür anders als auf der Enterprise ein wenig Vorarbeit nötig: Der Nutzer muss zunächst den Proxy-X-Server xmove starten. Der erzeugt ein zweites Display, normalerweise <rechner>:1, das mit dem ersten verbunden ist.

Startet der Nutzer anschließend ein Programm mit DISPLAY=<rechner>:1 <programm>, erscheinen dessen Fenster wie gewohnt auf dem lokalen Bildschirm. Sie lassen sich jedoch mit xmovectrl auf ein beliebiges anderes Display transportieren. Allerdings muss man dazu die Kommandozeile bemühen. xmovectrl <rechner>:1 –list zeigt die mit dem Proxy verbundenen Anwendungen:

mr@hier> xmovectrl hier:1 -list
2 xterm hier:0
5 xterm hier:0

Der Befehl xmovectrl hier:1 –move dort:0 5 verschiebt das zweite der beiden Terminal-Fenster auf den Rechner dort. Mit –moveall dort:0 lassen sich alle Anwendungen auf einmal verschieben. Die Option –setdefaultserver dort:0 bewirkt, dass sich Fenster schon beim Programmstart auf dem Rechner dort öffnen. Mit –quit kann der Nutzer den Proxy-Server samt aller damit verbundenen Anwendungen beenden.

Leider hat das Verfahren ein paar Nachteile. X-Server-Erweiterungen etwa lassen sich nicht nutzen – von der altehrwürdigen Shape-Extension, die Fenster mit abgerundeten Ecken und dergleichen ermöglicht, bis hin zu modernen Erweiterungen für Video-Wiedergabe oder 3D-Grafik. Auch ist keineswegs garantiert, dass der Ziel-Server über die von der Anwendung benötigten Fonts verfügt. Einige Programme funktionieren daher eventuell nicht.

Einen vielversprechenden Ansatz verfolgt das noch junge Projekt xpra (X Persistent Remote Applications). Es verwendet den virtuellen X.org-Server Xvfb zusammen mit einem sogenannten Compositing Window Manager. Anwendungen zeichnen nicht direkt in ihre Fenster, sondern in einen bereitgestellten Puffer, den der Window Manager auf dem Schirm darstellt. Dieselbe Technik kommt unter anderem bei 3D-Desktops wie Compiz zum Einsatz. Im Fall von xpra malt der Window Manager jedoch nicht auf den lokalen (virtuellen) Bildschirm, sondern überträgt den Fensterinhalt auf einen entfernten Rechner.

Darüber hinaus erlaubt es das Programm ähnlich wie das Konsolenprogramm screen, die Netzverbindung zu trennen und bei Bedarf wiederherzustellen – von einem beliebigen Rechner aus. Anwendungen laufen während der Unterbrechung weiter. Allerdings fehlen der Software für den reibungslosen praktischen Einsatz noch ein paar Funktionen. Wer sich an seiner Weiterentwicklung beteiligen möchte, sollte über Python-Kenntnisse verfügen.

Das dazu passende grafische Interface bietet der Window Shifter. Das Open-Source-Programm steht unter Version 3 der GPL, läuft unter Linux/Unix, Mac OS X oder Windows und kann nicht nur xpra nutzen, sondern auch ssh-Tunnel, TigerVNC oder NoMachines NX.

[1] Ralph Hülsenbusch; Remote Desktop; Tischleindeckdich; Der Arbeitsplatz im Netz – von überall erreichbar; iX 10/2006, S. 42

iX-Link: www.ix.de/ix1009139 (mr)