Viele haben sich - wie ich - gefragt: "Warum gibt es so etwas geniales wie (gnu-)screen nicht für X?" Mancher von denen, die sich diese Frage gestellt haben, haben sie vielleicht bereits beantwortet - nun habe auch ich herausgefunden, daß es so etwas gibt: xapr heißt das Werkzeug, das genau das ist: screen for X!
Ich gebe zu: die Überschrift wird nur Eingeweihten etwas sagen - denen dafür um so mehr. Das Werkzeug (gnu-)screen dient dazu, auf der Kommandozeile Prozesse zu starten, die man nicht beenden muß, wenn man sich von Linux abmeldet. Gleiche oder ähnliche Werkzeuge gibt es natürlich auch für die anderen Unix-artigen Betriebssysteme...
Man kann sich also vorstellen, daß man an einem Rechner sitzt und dort einen längeren Prozeß - eine Berechnung oder einen Up- oder Download startet. Man möchte nun nicht dort sitzenbleiben, bis der Rechner damit fertig ist. Geht man aber weg, möchte man sich abmelden, damit niemand unter dem eigenen Nutzernamen Schabernack treiben möchte. Eine Möglichkeit, den Prozeß weiterlaufen zu lassen, ist der Start des Prozesses mittels "nohup", das dafür sorgt, daß ein gestarteter Prozeß auch nach der Abmeldung weiterläuft - eben "No Hang Up".
Eleganter ist die Benutzung von Screen - damit wird nämlich nicht nur der Prozeß zu Ende geführt, sondern es besteht die Möglichkeit, die Sitzung dort wieder aufzunehmen, wo man sie verlassen hat. Ein Beispiel ist das Aktualisieren der Distribution: mittels screen ein apt-get update starten - Download beginnt. Anschließend abmelden. Später - zum Beispiel vom Smartphone aus - erneut anmelden und Sitzung wieder aufnehmen: Update-Prozeß ist angehalten, weil apt eine Nutzerentscheidung benötigt. Diese kann man jetzt geben und das Update wird fortgeführt.
Wäre es nicht schön, wenn das auch für graphische Anwendungen funktionieren würde? Man startet eine Anwendung an Rechner A und kann die Anwendung sozusagen auf Rechner B weiterbedienen - ohne Speichern des Zustandes, Beenden, Neustarten und Laden des Zustandes? Das würde auch ganz neue Möglichkeiten der Anwenderunterstützung durch Hotline-Betreuer eröffnen...
Sogenannte Nested Server wie etwa Xephyr oder Xnest können dies leider auch nicht leisten.
Nunmehr habe ich eine Lösung dafür gefunden: Xapr. Diese Anwendung wird auf dem Rechner installiert, auf dem die Anwendung laufen soll und auf allen, von denen die Anwendung gesteuert werden soll.
Anschließend ist xpra zu starten:
xpra start :7
Die 7 ist dabei die Display-Nummer. Sie ist frei wählbar, so lange ein Display mit der gleichen Nummer nicht bereits existiert. Ich schlage als ersten Test im Zusammenhang mit X immer xeyes vor:
DISPLAY=:7 xeyes &
Das erwartete Fenster erscheint nicht - weil wir uns noch nicht mit der Sitzung verbunden haben:
xpra attach :7
Nunmehr erscheinen die großen Augen... gibt man im Terminal nunmehr Strg-C ein, so wird die Verbindung beendet - nicht aber die Sitzung und auch nicht xeyes: ein erneutes attach lässt das Fenster wieder erscheinen. Die Sitzung wird mittels
xpra stop :7
beendet. Damit hat man zunächst die prinzipielle Funktionstüchtigkeit nachgewiesen. Aber der Spaß beginnt erst, wenn man eine lokal gestartete GUI-Anwendung auf einem anderen Rechner weiterbearbeiten kann. Die in der offiziellen Dokumentation genannte Variante
xpra attach ssh:serverhostname:7
hat bei mir leider nicht funktioniert - ich mußte Zuflucht zu
ssh -XC user@serverhostname xpra attach :7
nehmen. Ansonsten muß ich zusammenfassend sagen, daß dieses Vorgehen für den Alltagsbetrieb tauglich ist - Ich betreibe inzwischen solche graphischen Schwergewichte wie Netbeans und Android-Studio mit Hilfe von XPRA und bin sehr zufrieden - sogar über 54-MBit-WLAN kann man mit diesen Anwendungen arbeiten. Normales Remote-X ist da ja schon eher eine Foltermethode.
01.05.2019
Ich mache immer wieder gerne Experimente mit Terminalsessions - meistens wegen der zentral möglichen Administration. Nunhabe ich das Thema von neuem angepackt: wegen einem alten(sehr alten) Laptop, der bei mir schon so lange im Schrank lag, dass sogar die BIOS-Batterie inzwischen leer war...
01.05.2019
Ich habe ein Script geschrieben, das xpra startet und - a la SysV init - stoppt. Es erledigt auch gleich den Start von Xephyr mit OpenBox als Window Manager.
22.05.2015
Nachdem ich jetzt X-Anwendungen auf meinem Synology-NAS zur Ausführung bringen kann, habe ich das Thema noch weiter verfolgt: Man kann das System mit Screen für X kombinieren!
Multi-User-WebDAV, Docker, GitHub
17.11.2019
Nachdem ich mich in letzter Zeit verstärkt mit Docker und dem zugehörigen Ökosystem beschäftige, habe ich begonnen, verschiedenste Dienste in Containern zu testen um zu sehen, ob in manchen Fällen LXC oder KVM nicht doch die bessere Wahl wäre...
Weiterlesen...Android Basteln C und C++ Chaos Datenbanken Docker dWb+ ESP Wifi Garten Geo Go GUI Gui Hardware Java Jupyter Komponenten Links Linux Markdown Markup Music Numerik OpenSource PKI-X.509-CA Python QBrowser Rants Raspi Revisited Security Software-Test sQLshell TeleGrafana Verschiedenes Video Virtualisierung Windows Upcoming...
In eigener Sache...
Weiterlesen...Ich habe eine neue Java Swing Komponente erstellt: Es handelt sich um einen Wrapper für von JToolBar abgeleitete Klassen, die die Werkzeugleiste minimieren und sie nur dann einblenden, wenn der Mauszeiger über ihnen schwebt.
Weiterlesen...Ich habe bereits in einem früheren Artikel über meine ersten Erfolge berichtet, der sQLshell auf Basis des bestehenden Codes aus dem Projekt EBMap4D eine bessere Integration für Geo-Daten zu spendieren und entsprechende Abfragen, bzw. deren Ergebnisse auf einer Kartenansicht zu visualisieren.
Weiterlesen...Manche nennen es Blog, manche Web-Seite - ich schreibe hier hin und wieder über meine Erlebnisse, Rückschläge und Erleuchtungen bei meinen Hobbies.
Wer daran teilhaben und eventuell sogar davon profitieren möchte, muss damit leben, daß ich hin und wieder kleine Ausflüge in Bereiche mache, die nichts mit IT, Administration oder Softwareentwicklung zu tun haben.
Ich wünsche allen Lesern viel Spaß und hin und wieder einen kleinen AHA!-Effekt...
PS: Meine öffentlichen Codeberg-Repositories findet man hier.