grafische Benutzeroberflächen
Grafische Benutzeroberflächen gliedern sich unter UNIX und Linux in mehrere Teile auf.
- Fenstermanager („Window Manager“) gibt es sehr viele, bekannte sind Compiz und compiz fusion, Xfce, Enlightenment, Fluxbox (speichersparend) kwm (von KDE benutzt) und sawfish (Gnome).
- der Xserver (Xorg, früher auch Xfree86) ist der Unterboden der Konstruktion.
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
Bildschirminhalte über Netzwerk übertragen
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:
- Ein Tunnel über SSH (empfohlen)
- Rechner-basiert (Host based access control):
xhost +CLIENTNAME ssh CLIENTNAME xload -display SERVER:0 & xhost -CLIENTNAME
Mit xhost kann man wie im Beispiel einzelne Rechner für den Zugriff freischalten.
- Benutzer-basiert (account based): Das MIT-MAGIC-COOKIE (Datei
.Xauthority
im Homeverzeichnis) undxauth
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.
X-Server unter Windows
- X-Server für Windows läuft unter cygwin.
Schriftarten
Schriftarten werden unter linux vorrangig im Verzeichnis /usr/share/fonts/SCHRIFTNAME abgelegt.
Schriftartenserver einrichten
Ü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.
- Neue Font-verzeichnisse anlegen:
mkfontdir PFAD
- Neue Schriftenarten anmeldet:
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.
Links
Tips und Tricks
- alle grafische Programme verstehen einige Parameter, u.a.
-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“.
- neue Truetype-Schriftarten kommen in
/usr/X11R6/lib/X11/fonts/truetype
- mit dem Paket
menu
, Befehlsudo update-menus
kann man das Menu in verschiedenen Window-managern gleich halten
- Die Dateien des Startmenus liegen in
/usr/share/applications
- Wenn man mehrere Karten einbaut, kann man übergreifende Desktops mit der option „xinerama“ in der
/etc/X11/XF86Config
benutzen. - Begrüßungsmeldung (beim Login) ändern: unter
/etc/X11R6
das Verzeichnis mit dem verwendeten Displaymanager (gdm, kdm, xdm) auswählen und die DateiXressources
editieren:xlogin*greeting: TEXT
bei Ubuntu trägt man in der Datei
/etc/X11/Xresources/x11-common
diese Zeile ein.
grafische Programme scripten
verschobenes Bild
Tastenkombinationen
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 |
Problemsuche
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.
3D-Beschleunigung aktiviert?
Muss „direct rendering: Yes“ ergeben:
glxinfo | grep direct
Fatal Error: No Screens found
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.
X Error of failed request: BadAlloc (insufficient resources for operation)
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.