Grafische Benutzeroberflächen gliedern sich unter UNIX und Linux in mehrere Teile auf.
Nach der Anmeldung läuft die Kommunikation also von oben nach unten: grafische Programme → Desktop-Environment-Manager → Fenstermanager → Xserver.
Tip: fusion (Vorgänger: xgl, compiz, beryl) - Neue 3D-Features auf dem Desktop
X überträgt Bildschirminhalte über Netzwerk mittels des XDMCP-Protokolls. Dieses ist allerdings recht bandbreitenintensiv 2-6 Mbit/s und über Internet unfassbar langsam. In diesem Fall sollte man andere Protokolle benutzen, z.B. das verbreitete VNC oder das etwas exotischere NX NoMachine.
Das aktuelle Display finden die Programme über die Variable Display, es muss nicht lokal angeschlossen sein, sondern kann über Netzwerk erreicht werden.
Für die Konfiguration des Rechners der als (X-)Server dient gibt es mehrere Möglichkeiten:
xhost +CLIENTNAME ssh CLIENTNAME xload -display SERVER:0 & xhost -CLIENTNAME
Mit xhost kann man wie im Beispiel einzelne Rechner für den Zugriff freischalten.
.Xauthority
im Homeverzeichnis) und xauth
kann man daraus Informationen extrahieren und auf anderen Rechnern einsetzen.Um nicht nur ein Programm sondern alle Programme auf einem entfernten Rechner zu starten muss man das Display als Shell-variable exportieren:
export DISPLAY="SERVERNAME:0.0"
(oder mit IP:
export DISPLAY=192.168.0.1:0.0
. Bei der c-shell (FreeBSD, …) geht das mit
setenv DISPLAY 192.168.0.1:0.0
.
Ein Tunnel über SSH erledigt das automatisch.
http://pangea.stanford.edu/computerinfo/unix/xterminal/xauthentication.html|
Fehlersuche: Auf dem Client startet man den X-Server mit
X :0.0 -query SERVER-HOSTNAME
und arbeitet dann gleich auf dem Server (SERVER-HOSTNAME
).
Oft ist der X-Server aus Sicherheitsgründen so eingestellt erstmal überhaupt keine TCP-Verbindungen zuzulassen. Dies lässt sich mit
startx -listen_tcp
ändern. Dies lässt sich auch dauerhaft in der Konfiguration ändern: Man suche nach Einstellungen in Xsession oder (z.B. bei Ubuntu in /etc/X11/xinit/xserverrc
) nach Dateien die die Einstellung -nolisten tcp
enthalten und ändert diesen Aufruf ab.
Wenn es nicht klappt, kann man mit
Xnest -query SERVER-HOSTNAME :1
den Verbindungsaufbau probieren. xnest muss wahrscheinlich erstmal installiert werden und leitet die Ausgabe an den übergeordneten X-Server weiter.
Schriftarten werden unter linux vorrangig im Verzeichnis /usr/share/fonts/SCHRIFTNAME abgelegt.
Über den X-Font-Server xfs ist es möglich einen zentralen Server für Schriftarten (fonts) einzurichten. Die Clients brauchen die Schriften dann nicht lokal installiert zu haben und alle haben die gleichen Schriftarten. xfs wird über die Konfigurationsdatei /etc/X11/xfs.conf
(manchmal auch unter /usr/X11R6/lib/X11/fs/config
) konfiguriert.
In den X-Servern der Rechner im Netz sollte der X-Font-Server in der Section „Files“ als
FontPath "tcp/192.168.0.1:7100"
eintragen. Die Einträge werden in der angebenen Reihenfolge nach Fonts durchsucht.
mkfontdir PFAD
mkfontscale PFAD
Dann wird ein neuer Index (Dateien fonts.dir
, fonts.scale
) aufgebaut und die Schriftarten sind nutzbar.
siehe xfs font server.
Nach Änderungen der Konfigurationsdateien sollte der X-Server neu gestarten werden um die Änderungen zu übernehmen.
-geometry BREITExHÖHE
z. B. xcalc -geometry 90x40
xcalc mit 90 Pixeln breite und 40 Pixel höhe starten.
-display SERVERNAME:DISPLAYNR.0
z. B. xcalc -display SERVERNAME:0.0
xcalc auf dem ersten Display des Rechners (SERVER) starten. Um nicht nur dieses Programm sondern alle Programme auf einem entfernten Rechner zu starten muss man das Display als Shell-variable exportieren: export DISPLAY=„SERVERNAME:0.0“.
/usr/X11R6/lib/X11/fonts/truetype
menu
, Befehl sudo update-menus
kann man das Menu in verschiedenen Window-managern gleich halten
/usr/share/applications
/etc/X11/XF86Config
benutzen./etc/X11R6
das Verzeichnis mit dem verwendeten Displaymanager (gdm, kdm, xdm) auswählen und die Datei Xressources
editieren: xlogin*greeting: TEXT
bei Ubuntu trägt man in der Datei /etc/X11/Xresources/x11-common
diese Zeile ein.
Tastenkombinationen | Wirkung |
---|---|
Ctrl+Alt+Ziffern | auf die unterschiedlichen Terminals wechseln Ctrl+Alt+1 bis Ctrl+Alt+6 sind meist Text und auf 7 ist X, allerdings kann dies auch anders sein (z.B. bei Knoppix) |
Ctrl+Alt+Backspace | den X-Server neustarten (alle grafischen Programme werden geschlossen) |
Ctrl+Alt+Keypad-Plus | nächster Grafikmodus |
Ctrl+Alt+Keypad-Minus | vorheriger Grafikmodus |
die Konfigurationsdatei befindet sich in der Datei
/etc/X11/xorg.conf
Dort findet man Sektionen („Section“) die spezielle Einstellungen für die unterschiedlichen Bereiche (Grafikkarte, Monitor, Maus, Tastatur) enthalten. Gerade wenn man dort etwas falsch gemacht hat, ist man schnell auf die Kommandozeile (Shell) beschränkt, da schwere Fehler das Starten der Benutzeroberfläche verhindern. Aber auch ein Grafikkartentausch wird schnell ein erneute Konfiguration erforderlich machen.
Muss „direct rendering: Yes“ ergeben:
glxinfo | grep direct
Der X-Server beim Start z.B. mit dieser Meldung hängen.
Unter Suse kann man dann mit yast bzw. sax die Konfiguration ändern (Hardware → Grafikkarte und Monitor), unter Ubuntu und andere Debian-basierten Distributionen muss man als root den Befehl
dpkg-reconfigure xserver-xorg
eingeben. Bei älteren Distributionen, die noch auf dem xfree86 basieren, muss man statt dessen
dpkg-reconfigure xserver-xfree86
eingeben.
Das passiert wenn man für eine Operation (z.B. DVD/Video anschauen) nicht genügend 2D-Speicher übrig hat. Es tritt dann bei vielen Programmen (vlc, mplayer, totem, …) auf.
Im Fall von vlc kann man es eventuell durch die Zusätze
vlc -V x11
oder
vlc -V glx
lösen.
Wenn nicht, dann kann man versuchen in der xorg.conf die korrekte Video-RAM-Größe anzugeben (evtl. wurde er nicht in voller Höhe erkannt): In der Device-Sektion der Grafikkarte:
Videoram 32768
Die Größe muss man dann natürlich ändern, hier ist der Wert nur für 32MB korrekt.
Die Optionen CacheLines und Pageflip können auch helfen, siehe im The VideoLAN Forum.