http://www-lehre.img.bio.uni-goettingen.de/edv/Einf_Inf/x11konf.htm
Konfiguration von X-11 |
In diesem Dokument finden sich Informationen zu:
-
Beschreibung
-
X-11 Klienten Konfigurieren
X-11 |
||||||||
Beschreibung | Ein X-11 Softwaresystem ist ein Vertreter des X-Window oder X-Konzeptes. Ziel von X ist die netztransparente und Rechnersystem- unabhängige Bedienungsumgebung für Arbeitsplatzrechner-Software. Die Bedienungsumgebung unterstützt mehrere überlappende Fenster auf einer Vielzahl von Arbeitsplatzrechnern. | |||||||
Netzwerktranparenz | bedeutet, daß X-Anwendungen, die auf einer CPU laufen, ihre Ausgabe auf einem Bildschirm zeigen können, der entweder mit derselben, oder einer anderen CPU verbunden ist. | |||||||
Rechnersystemunabhängigkeit | bedeutet, daß die Ausprägung der Bedienelemente auf allen Rechnern gleich ist und daß die Ausgabe auf jedem X-System erfolgen kann. Dies wird erreicht durch eine standardisierte Softwareschnittstelle und impliziert, daß auf dem System, das die Ausgabe darstellen soll, ein X-Server (Software) läuft. Auf diese Weise kannt die X-11 Anwendung (X-Client) mit dem X-Server kommunzieren. | |||||||
Environmentvariable DISPLAY | Auf Unix-Systemen wird der X-11 Anwendung durch die Environmentvariable DISPLAY mitgeteilt, auf welchem Rechner die Ausgabe erfolgen soll. Beispiel: Der Befehl echo $DISPLAY könnte liefern: ubmgpk.Uni-Molgen.gwdg.de:0.0 (Hinter dem Rechnernamen ist die Nummer des X-Servers und die Nummer des Bildschirms angegeben; meist 0.0). Manche X-Server lassen eine Ausgabe auf den Bildschirm nur für explizit mit Adresse einzutragende X-Klienten zu. | |||||||
X-11 Klienten Konfigurieren |
||||||||
Voraussetzung | Sie sind z.B. via Telnet auf einem Rechner im Unix-Cluster der GWDG eingeloggt.Sie benutzen die im Unix-Cluster als DEFAULT konfigurierte KORN-Shell. | |||||||
Einmaliges Setzen der Environmentvariable DISPLAY | 1.) Bestimmen Sie den Namen oder die IP-Adresse des Rechners, vor dem Sie gerade sitzen. Der Name wird im folgenden mit RECHNERNAME referenziert. Er kann z.B. ubmgpc.uni-molgen.gwdg.de oder 134.76.70.65 lauten. 2) Geben Sie im Fenster, das während der Telnetsitzung geöffnet ist, folgenden Befehl ein: export DISPLAY=RECHNERNAME:0.0 | |||||||
Konkretes Beispiel | ||||||||
Setzen und Anzeigen der Environmentvariablen |
|
|||||||
Die Environmentvariable DISPLAY ist nun gesetzt und ist, da exportiert, auch in allen weiteren Shells, die während der Sitzung geöffnet werden, bekannt; nach dem Logout existiert sie jedoch nicht mehr. | ||||||||
Initialisierung während des Logins | Bei jedem Starten einer KORN-Shell wird das benutzerspezifische File .kshrc ausgeführt. Es liegt nahe, dieses Skript um eine Kommando zu ergänzen, welches die DISPLAY-Variable dynamisch setzt.Im Unix-Cluster der GWDG leistet das Script /usr/users/rmerkl/scripts/setdisplay das Gewünschte. | |||||||
Eintrag in .kshrc |
Zunächst auf einem Rechner des Unix-Clusters einloggen. Displayvariable setzten, so wie oben angegeben. Mit xedit .kshrc & einen einfachen, X11-fähigen Editor starten.Die Zeile . /usr/users/rmerkl/scripts/setdisplay in .kshrc eintragen. Wichtig: Zwischen „.“ und dem ersten „/“ muß ein Leerzeichen eingefügt sein.Die Datei abspeichern, den Editor verlassen. Mit chmod u+x .kshrc dem User das Ausführen (eXecute) der Datei erlauben. Ausloggen und wieder Einloggen. Wurde alles korrekt ausgeführt, ist ab sofort die Display-Variable dynamisch gesetzt. Dies kann mittels echo $DISPLAY überprüft werden. |
|||||||
Einschränkung | Das Script setdisplay kann nur erkennen, von welchem Rechner aus die Sitzung im Unixcluster unmittelbar gestartet wurde. Erfolgt das Einloggen ins Unix-Cluster über eine Kette von geschachtelten Telnetverbindungen, so wird der Rechner, auf dem die Ausgabe erfolgen soll, nicht erkannt.Im FallePC1->ServerA->ServerB->Unix-Cluster.würde die Adresse von ServerB in die DISPLAY-Variable übernommen und nicht die (vermutlich gewünschte) von PC1. | |||||||
Probleme |
|
export DISPLAY="$(echo $SSH_CLIENT | awk '{print $1}'):0" export DISPLAY="`host $(who em i | awk '{print $5}' | sed 's/)//g' | sed 's/(//g') | awk '{print $4}'`:0" # URL: https://stackoverflow.com/questions/27646435/gtkwarning-could-not-open-display # First of all, you didn't specify if you have a desktop environment (or X) installed on your server? # Regardless of that, you can achieve headless setup for your spider by using xvfb: # Xvfb or X virtual framebuffer is a display server implementing the X11 display server protocol. # In contrast to other display servers Xvfb performs all graphical operations in memory without showing any screen output. # From the point of view of the client, it acts exactly like any other X display server, serving requests and sending # events and errors as appropriate. However, no output is shown. This virtual server does not require the computer it # is running on to even have a screen or any input device. # First, install xvfb on your server. Assuming you are using apt-get: sudo apt-get install xvfb # Now, run the xvfb service at a custom display number, like: sudo Xvfb :5 # After that, you can run any application that requires X inside your virtual frame buffer by exporting the display number and running your application: export DISPLAY=:5 run_my_application # The DISPLAY is set only for the current terminal session, so keep that in mind when implementing automation for this step.