linux:grafische-benutzeroberflächen

grafische Benutzeroberflächen

Grafische Benutzeroberflächen gliedern sich unter UNIX und Linux in mehrere Teile auf.

  1. 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).
  2. Fenstermanager („Window Manager“) gibt es sehr viele, bekannte sind Compiz und compiz fusion, Xfce, Enlightenment, Fluxbox (speichersparend) kwm (von KDE benutzt) und sawfish (Gnome).
  3. bekannte Desktop-Environment-Manager sind KDE Logo Lizenz LGPLKDE oder Gnome logognome. 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.
  4. 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

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:

  1. 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.

  2. Benutzer-basiert (account based): Das 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

.

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.

  • 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.

  • 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 trägt man in der Datei /etc/X11/Xresources/x11-common diese Zeile ein.

  • Distribtionsunabhängige Tools sind:
    • xorgconfig, xf86config, XF86Setup sind
    • und wenn alles nichts hilft: xvidtune
  • Mit den Hilfsprogrammen der Distributionen:
    • SaX/SaX2 (Suse)
    • Xconfigurator (Redhat)
    • dexconf (Debian)
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.