====== grafische Benutzeroberflächen ======
Grafische Benutzeroberflächen gliedern sich unter UNIX und Linux in mehrere Teile auf.
- Der **Displaymanager** sorgt dafür, dass sich Nutzer anmelden, einloggen und den Window Manager ihrer Wahl starten können. Das sind heute meistens xdm, kdm (bei [[KDE]]) oder gdm (bei [[Gnome]]).
- [[wpde>Fenstermanager]] ("Window Manager") gibt es sehr viele, bekannte sind [[wpde>Compiz]] und compiz [[fusion]], [[Xfce]], [[Enlightenment]], [[http://fluxbox.sourceforge.net/|Fluxbox]] (speichersparend) kwm (von [[KDE]] benutzt) und sawfish ([[Gnome]]).
- bekannte **Desktop-Environment-Manager** sind **[[KDE|{{linux:kmenu.png?30|KDE Logo Lizenz LGPL}}]][[KDE]]** oder **[[Gnome|{{linux:gnome.png?60|Gnome logo}}]][[gnome]]**. Sie stellen für den Benutzer ein einheitliches Desktopmanagement zur Verfügung. Das sorgt dafür das die Programme einem einheitliches "Look & Feel" folgen; gerade [[KDE]] arbeitet viel an der Verknüpfung und Integration der einzelnen Programme.
- 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 [[wpde>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 [[wpde>Virtual Network Computing|VNC]] oder das etwas exotischere [[wpde>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:
- [[netzwerke:ssh#X-Server über SSH|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 [[http://pangea.stanford.edu/computerinfo/unix/xterminal/xauthentication.html#magiccookie|MIT-MAGIC-COOKIE]] (Datei ''.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
.
[[netzwerke:ssh#X-Server über SSH|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: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 ====
* [[http://www.straightrunning.com/XmingNotes/|Xming X Server]]
* [[http://www.linux-user.de/ausgabe/2002/11/033-x-server/index.html|X-Server für Windows]] läuft unter [[http://www.cygwin.com/|cygwin]].
===== Schriftarten =====
Schriftarten werden unter [[Linux:linux]] vorrangig im Verzeichnis /usr/share/fonts/SCHRIFTNAME abgelegt.
* [[http://www.truetype-font.de/Truetype-Font_installation-linux.html|Anleitungen - TRUETYPE-FONT Installation unter Linux]]
==== 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 [[http://linuxreviews.org/howtos/xfree/xfs/|xfs font server]].
:!: Nach Änderungen der Konfigurationsdateien sollte der X-Server neu gestarten werden um die Änderungen zu übernehmen.
===== Links =====
* **[[http://wiki.ubuntuusers.de/Windowmanager|umfangreiche Windowmanager-Übersicht@UbuntuWiki]]**
* [[http://xwinman.org/|Übersicht über X-Window-Manager]]
* [[http://wiki.ubuntuusers.de/Autostart|Autostarts]]
* [[http://www.heise.de/newsticker/meldung/71693|LinuxWorld: Projekt Portland will den Linux-Desktop vereinheitlichen]]
* [[http://blogs.ittoolbox.com/linux/locutus/archives/are-multiple-desktops-really-usefull-13630|Are multiple desktops really useful]]
* [[http://ftp.x.org/pub/X11R7.0/doc/html/xorg.conf.5.html|xorg.conf - Configuration File for Xorg]]
* [[http://ftp.x.org/pub/X11R7.0/doc/html/Xserver.1.html|Xserver - X Window System display server]]
* [[http://ftp.x.org/pub/X11R7.0/doc/html/mga.4.html|mga - Matrox video driver]] [[http://www.matrox.com/graphics/en/corpo/support/drivers/driverList.php?list=5|Matrox latest Display Drivers]]
* [[http://wiki.unixboard.de/index.php/HowTo:DualHead|HowTo: DualHead]]
* [[http://www.tecchannel.de/client/linux/401574/|Test: KDE vs. GNOME]]
* **[[http://www.onlamp.com/pub/a/bsd/2006/12/07/freebsd_basicsg.html|Fun with Xorg]]**
* [[http://www.uwsg.iu.edu/usail/external/recommended/Xsecure.html|Crash Course in X Windows Security]]
* [[http://www.art.net/~hopkins/Don/unix-haters/x-windows/disaster.html|UNIX-HATERS Handbook - The X-Windows Disaster]]
===== 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'', Befehl sudo 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 Datei ''Xressources'' editieren: xlogin*greeting: TEXT bei [[ubuntu:Ubuntu]] trägt man in der Datei ''/etc/X11/Xresources/x11-common'' diese Zeile ein.
==== grafische Programme scripten ====
* [[http://www.semicomplete.com/projects/xdotool/|xdotool - fake keyboard/mouse input, window management, and more]]
==== verschobenes Bild ====
* Distribtionsunabhängige Tools sind:
* xorgconfig, xf86config, XF86Setup sind
* und wenn alles nichts hilft: xvidtune
* Mit den Hilfsprogrammen der Distributionen:
* SaX/SaX2 ([[suse:Suse]])
* Xconfigurator (Redhat)
* dexconf ([[debian:Debian]])
==== 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 [[http://forum.videolan.org/viewtopic.php?p=93171&sid=5ee6e8a5cc161e55a1ee7746907768ed|The VideoLAN Forum]].