Kapitel 7. Das X-Window-System

Inhaltsverzeichnis

7.1. Schlüsselpakete
7.2. Eine Arbeitsplatz-Umgebung einrichten
7.2.1. Debian-Menü
7.2.2. Freedesktop.org-Menü
7.2.3. Das Debian-Menü erzeugt aus dem Freedesktop.org-Menü
7.3. Der Zusammenhang zwischen Server und Client
7.4. Der X-Server
7.4.1. Die (Neu-)Konfiguration des X-Servers
7.4.2. Die Verbindungsmethoden zum X-Server
7.5. Starten des X-Window-Systems
7.5.1. Starten einer X-Sitzung mit gdm3
7.5.2. Anpassen der X-Sitzung (klassische Methode)
7.5.3. Anpassen der X-Sitzung (neue Methode)
7.5.4. Einen X-Client von fern via SSH verbinden
7.5.5. Ein sicheres X-Terminal via Internet
7.6. Schriften in X-Window
7.6.1. Basis-Schriftarten
7.6.2. Zusätzliche Schriftarten
7.6.3. CJK-Schriftarten
7.7. X-Anwendungen
7.7.1. X-Büroanwendungen
7.7.2. X-Werkzeuge
7.8. X-Kleinigkeiten
7.8.1. Tastaturbelegungen und Zuweisungen von Zeigegerätetasten in X
7.8.2. Klassische X-Clients
7.8.3. Der X-Terminal-Emulator - xterm
7.8.4. X-Client-Programme als root laufen lassen

Das X-Window-System innerhalb von Debian basiert auf den Quelltexten von X.Org.

Es existieren einige (Meta-)Pakete, um eine einfache Installation zu ermöglichen:


Grundwissen über X finden Sie in X(7) und im LDP X-Window User-HOWTO.

Eine Arbeitsplatz-Umgebung (desktop environment) ist gewöhnlich eine Kombination aus einem X-Fenstermanager, einem Dateimanager und einer Sammlung verschiedener kompatibler Werkzeuge.

Sie können eine vollständige Arbeitsplatz-Umgebung wie GNOME, KDE, Xfce oder LXDE über das Tasks-Menü von aptitude einrichten.

[Tipp] Tipp

In Debian unstable/testing kann es vorkommen, dass das Tasks-Menü nicht synchron mit dem aktuellen Status von Paketübergängen ist. In solchen Situationen müssen Sie einige (Meta-)Pakete, die im Tasks-Menü von aptitude(8) aufgelistet sind, abwählen, um Paketkonflikte zu vermeiden. Dabei müssen allerdings bestimmte Pakete wieder händisch markiert werden, die nötige Abhängigkeiten bereitstellen, um zu vermeiden, dass sie automatisch entfernt werden.

Alternativ ist es auch möglich, eine einfache Umgebung mit lediglich einem X-Fenstermanager (wie Fluxbox) manuell einzurichten.

Unter Window Managers for X finden Sie eine Übersicht über X-Fenstermanager und Arbeitsplatz-Umgebungen.

Das Debian-Menüsystem bietet mit update-menus(1) aus dem menu-Paket eine grundlegende Schnittstelle sowohl für textbasierte wie auch für grafische Programme. Jedes Paket installiert seine Menüdaten in das Verzeichnis "/usr/share/menu/". Lesen Sie dazu "/usr/share/menu/README".

Um aus einer zum Freedesktop.org-Menü kompatiblen Fenstermanager-Umgebung (wie GNOME und KDE) auf das traditionelle Debian-Menü zugreifen zu können, müssen Sie das Paket menu-xdg installieren.

Das X-Window-System wird als Kombination aus Server- und Client-Programmen aktiviert. Die Bedeutung von Server und Client vor dem Hintergrund der Begriffe lokal und fern erfordert hier eine genauere Betrachtung:


Moderne X-Server enthalten die MIT Shared Memory Extension und kommunizieren über gemeinsam genutzten Speicher (shared memory) mit den lokalen X-Clients. So wird der netzwerk-transparente Xlib-Interprozess-Kommunikationskanal umgangen und die Performance für große Anzeigen erhöht.

Unter xorg(1) finden Sie detaillierte Informationen über den X-Server.

Es gibt verschiedene Wege für den "X-Server" (die Display-Seite), Verbindungen von einem "X-Client" (der Anwendungs-Seite) zu akzeptieren:


[Warnung] Warnung

Nutzen Sie für eine X-Verbindung keine TCP/IP-Verbindung von fern über ein unsicheres Netzwerk, außer Sie haben einen sehr guten Grund dafür wie z.B. dass Sie Verschlüsselung verwenden. Eine TCP/IP-Socket-Verbindung von fern ohne Verschlüsselung ist anfällig für die Eavesdropping-Attacke und auf Debian-Systemen standardmäßig deaktiviert. Verwenden Sie "ssh -X".

[Warnung] Warnung

Verwenden Sie keine XDMCP-Verbindung über ein unsicheres Netzwerk. Es werden dabei Daten via UDP/IP ohne Verschlüsselung übertragen und diese Verbindung ist anfällig für die Eavesdropping-Attacke.

[Tipp] Tipp

LTSP steht für Linux Terminal Server Project.

Das X-Window-System wird normalerweise als X-Sitzung gestartet, was eine Kombination aus einem X-Server und angebundenen X-Clients ist. Auf einem normalen Arbeitsplatz-System werden beide auf dem gleichen Rechner ausgeführt.

Die X-Sitzung wird durch eine der folgenden Bedingungen gestartet:

  • über den startx-Befehl, von der Befehlszeile gestartet;

  • über einen der X-Displaymanager-Daemons *dm, gestartet am Ende der Start-Skripte in "/etc/rc?.d/" ("?" passend zum laufenden Runlevel).

[Tipp] Tipp

Das Start-Skript für die Displaymanager-Daemons prüft den Inhalt der Datei "/etc/X11/default-display-manager", bevor es sich letztendig selbst ausführt. So ist sichergestellt, dass nur ein X-Displaymanager aktiviert wird.

[Tipp] Tipp

Lesen Sie Abschnitt 8.3.5, „Spezifisches Gebietsschema nur für X-Window“ für Informationen über anfängliche Umgebungsvariablen des X-Displaymanagers.

Letztlich führen all diese Programme das Skript "/etc/X11/Xsession" aus. Dann werden von diesem Skript run-parts(8)-ähnliche Aktionen durchgeführt, um Skripte im Verzeichnis "/etc/X11/Xsession.d/" auszuführen. Im Wesentlichen wird dabei das erste Programm ausgeführt, dass vom integrierten exec-Befehl gefunden wird; bei dieser Suche wird in folgender Reihenfolge vorgegangen:

  1. das Skript, das als Argument von "/etc/X11/Xsession" durch den X-Displaymanager festgelegt wurde, falls definiert;

  2. das "~/.xsession"- oder "~/.Xsession"-Skript, falls definiert;

  3. der "/usr/bin/x-session-manager"-Befehl, falls definiert;

  4. der "/usr/bin/x-window-manager"-Befehl, falls definiert;

  5. der "/usr/bin/x-terminal-emulator"-Befehl, falls definiert.

Dieser Prozess wird beeinflußt durch den Inhalt von "/etc/X11/Xsession.options". Die eigentlichen Programme, auf die diese "/usr/bin/x-*"-Befehle verweisen, werden durch das Debian-alternatives-System festgelegt und durch Kommandos wie "update-alternatives --config x-session-manager" angepasst.

gdm3(1) gibt Ihnen die Möglichkeit, über das Menü den Sitzungstyp (bzw. die Arbeitsplatz-Umgebung; lesen Sie Abschnitt 7.2, „Eine Arbeitsplatz-Umgebung einrichten“) und die Sprache (bzw. das Gebietsschema (Locale); Näheres in Abschnitt 8.3, „Das Gebietsschema (Locale)“) der X-Sitzung festzulegen. Die ausgewählten Standardwerte werden wie folgt in "~/.dmrc" gespeichert:

[Desktop]
Session=default
Language=de_DE.UTF-8

Fontconfig 2.0 wurde 2002 als distributionsunabhängige Bibliothek zur Konfiguration und Anpassung von Schriften erstellt. Seit den Zeiten nach Squeeze nutzt Debian Fontconfig 2.0 für seine Schriftenkonfiguration.

Die Schriftenunterstützung im X-Window-System kann wie folgt zusammengefasst werden:

  • Althergebrachtes X-Server-seitiges System zur Schriftenunterstützung

    • Das originale X11-Schriftensystem bietet Rückwärtskompatibilität für ältere Versionen von X-Client-Anwendungen.

    • Die originalen X11-Schriften sind auf dem X-Server installiert.

  • Modernes X-Client-seitiges System zur Schriftenunterstützung


Sie können Informationen über die Schriften-Konfiguration wie folgt abfragen:

  • "xset q" liefert Informationen über den grundlegenden X11-Schriften-Pfad (font path);

  • "fc-match" zeigt, welche fontconfig-Schriften Standardeinstellung sind;

  • "fc-list" zeigt verfügbare fontconfig-Schriften.

[Tipp] Tipp

"The Penguin and Unicode" ist ein guter Überblick über das moderne X-Window-System. Weitere Dokumentationen auf http://unifont.org/ sollten gute Informationen liefern über Unicode-Schriften, Unicode-taugliche Software, Internationalisierung und Unicode-bezogene Bedienbarkeitsprobleme auf FLOSS (Free/Libre Open Source)-Betriebssystemen.

Es gibt zwei Haupttypen von Computer-Schriftarten:

  • Bitmap-Schriften (gut für Rasterung mit niedriger Auflösung);

  • Outline/stroke-Schriften (gut für Rasterung mit hoher Auflösung).

Während das Skalieren von Bitmap-Schriften eine undeutliche Anzeige erzeugt, erhält man beim Skalieren von Outline/stroke-Schriften ein scharfes Bild.

Bitmap-Schriften werden im Debian-System gewöhnlich über Schriftdateien im komprimierten pcf-Format mit der Dateiendung ".pcf.gz" bereitgestellt.

Outline-Schriften liefert das Debian-System wie folgt aus:

  • als PostScript-Typ1-Schriftdatei mit der Dateiendung ".pfb" (Binär-Schriftdatei) oder ".afm" (Font-Metrics-Datei);

  • als TrueType- (oder OpenType-) Schriftdatei, gewöhnlich mit der Dateiendung ".ttf".

[Tipp] Tipp

OpenType soll voraussichtlich sowohl TrueType wie auch PostScript Typ 1 ablösen.

Tabelle 7.5. Tabelle von sich entsprechenden PostScript-Typ1-Schriftarten

Schrift-Paket Popcon Größe Sans-Serif-Schrift Serif-Schrift Monospace-Schrift Ursprung der Schrift
PostScript Nicht verfügbar Nicht verfügbar Helvetica Times Courier Adobe
gsfonts V:179, I:726 4632 Nimbus Sans L Nimbus Roman No9 L Nimbus Mono L URW (Adobe-kompatible Größe)
gsfonts-x11 I:171 68 Nimbus Sans L Nimbus Roman No9 L Nimbus Mono L Unterstützung für X-Schriften mit PostScript-Typ1-Schriften
t1-cyrillic I:25 4882 Free Helvetian Free Times Free Courier URW extended (Adobe-kompatible Größe)
lmodern I:159 32873 LMSans* LMRoman* LMTypewriter* skalierbare PostScript- und OpenType-Schriften, basierend auf Computer Modern (von TeX)

Tabelle 7.6. Tabelle von sich entsprechenden TrueType-Schriftarten

Schrift-Paket Popcon Größe Sans-Serif-Schrift Serif-Schrift Monospace-Schrift Ursprung der Schrift
ttf-mscorefonts-installer V:2, I:101 125 Arial Times New Roman Courier New Microsoft (Adobe-kompatible Größe) (hiermit werden unfreie Daten installiert)
fonts-liberation I:546 2127 Liberation Sans Liberation Serif Liberation Mono Liberation Fonts Project (Microsoft-kompatible Größe)
fonts-freefont-ttf V:184, I:366 10720 FreeSans FreeSerif FreeMono GNU Freefont (Microsoft-kompatible Größe)
fonts-dejavu I:133 55 DejaVu Sans DejaVu Serif DejaVu Sans Mono DejaVu, Bitstream Vera mit Unicode-Abdeckung
fonts-dejavu-core V:87, I:153 2896 DejaVu Sans DejaVu Serif DejaVu Sans Mono DejaVu, Bitstream Vera mit Unicode-Abdeckung (sans, sans-bold, serif, serif-bold, mono, mono-bold)
fonts-dejavu-extra I:136 6544 Nicht verfügbar Nicht verfügbar Nicht verfügbar DejaVu, Bitstream Vera mit Unicode-Abdeckung (oblique, italic, bold-oblique, bold-italic, condensed)
ttf-unifont I:27 29587 Nicht verfügbar Nicht verfügbar Unifont GNU Unifont, mit allen druckbaren Zeichen-Codes aus Unicode 5.1 Basic Multilingual Plane (BMP)

[Tipp] Tipp

DejaVu-Schriften basieren auf und sind die Obermenge der Bitstream Vera-Schriften.

Hier ein paar Schlüsselinformationen zu Schriften mit CJK-Zeichen.


Ein Schriftname wie "VL PGothic" mit einem "P" weist auf eine proportionale Schriftart hin, die der "VL Gothic"-Schriftart mit fester Breite entspricht.

Die Shift_JIS-Code-Tabelle umfasst zum Beispiel 7070 Zeichen. Diese können wie folgt gruppiert werden:

  • JIS-X-0201-Zeichen, ein Byte groß (Single-Byte-Zeichen) (191 Zeichen, auch Zeichen mit halber Breite genannt);

  • JIS-X-0208-Zeichen, zwei Byte groß (Double-Byte-Zeichen) (6879 Zeichen, auch Zeichen mit voller Breite genannt).

Double-Byte-Zeichen nutzen die doppelte Breite in Konsolenterminals, welche CJK-Schriften mit fester Breite verwenden. Um mit dieser Situation umzugehen, sollte für Schriften, die Single-Byte- und Double-Byte-Zeichen enthalten, eventuell eine Schriftart im Hanzi-Bitmap-Font-(HBF-)Format mit der Dateiendung ".hbf" genutzt werden.

Um bei TrueType-Schriften Speicherplatz zu sparen, kann eine TrueType-Schriftarten-Sammlung mit der Dateiendung ".ttc" verwendet werden.

Um mit kompliziertem Code-Raum für bestimmte Zeichen umgehen zu können, wird eine CID-kodierte PostScript-Typ-1-Schrift mit CMap-Dateien verwendet, die selbsttätig mit "%!PS-Adobe-3.0 Resource-CMap" starten. Dies wird für eine normale X-Anzeige nur selten verwendet, aber häufiger für PDF-Rendering usw. (lesen Sie dazu Abschnitt 7.7.2, „X-Werkzeuge“).

[Tipp] Tipp

Mehrfach vorhandene Glyphen sind aufgrund der Han-Vereinheitlichung für einzelne Unicode-Codepunkte zu erwarten. Einige der ärgerlichsten Vorkommen sind dabei "U+3001 IDEOGRAPHIC COMMA" und "U+3002 IDEOGRAPHIC FULL STOP", deren Zeichenpositionen sich zwischen den CJK-Staaten unterscheiden. Die Priorität von japanisch-zentrierten Schriften über diejenige von chinesischen Schriften zu setzen (über die Datei "~/.fonts.conf"), sollte dem Japaner seinen Seelenfrieden zurückgeben.

Hier eine Liste von grundlegenden Werkzeugen, die mir ins Auge gestochen sind:


[Achtung] Achtung

Das poppler-data-Paket (früher nicht-frei, lesen Sie Abschnitt 11.4.1, „Ghostscript“) muss installiert werden, damit evince und okular CJK-PDF-Dokumente mit CMap-Daten anzeigen können (lesen Sie dazu Abschnitt 7.6.3, „CJK-Schriftarten“).

[Anmerkung] Anmerkung

Die Installation von Software-Paketen wie scribus (aus KDE) innerhalb der GNOME-Arbeitsplatz-Umgebung ist absolut akzeptabel, da eine entsprechende Funktionalität in GNOME nicht enthalten ist. Allerdings könnte die Installation von zu vielen Paketen mit identischer Funktion Ihr Menü aufblähen.

[Warnung] Warnung

Starten Sie niemals den X-Display-/Sitzungsmanager unter dem root-Konto, indem Sie root im Displaymanager (z.B. gdm3) eingeben, da dies als unsicher angesehen werden muss - auch nicht, wenn Sie planen, administrative Tätigkeiten durchzuführen. Die vollständige Architektur von X ist nicht mehr sicher, wenn sie als root ausgeführt wird. Sie müssen immer die niedrigst-mögliche Privilegienstufe verwenden, wie zum Beispiel ein reguläres Benutzerkonto.

Einfache Wege, ein spezielles X-Client-Programm, sagen wir "foo", als root auszuführen, führen über die Verwendung von sudo(8) u.ä., wie hier:

$ sudo foo &
$ sudo -s
# foo &
$ gksu foo &
$ ssh -X root@localhost
# foo &
[Achtung] Achtung

Die Nutzung von ssh(1) für lediglich den obigen Zweck ist allerdings eine Verschwendung von Ressourcen.

Um den X-Client mit dem X-Server zu verbinden, beachten Sie bitte folgendes:

  • Die Werte der Umgebungsvariablen "$XAUTHORITY" und "$DISPLAY" des alten Benutzers müssen in diejenigen des neuen Benutzers kopiert werden.

  • Die Datei, auf die der Wert der Umgebungsvariable "$XAUTHORITY" zeigt, muss für den neuen Benutzer lesbar sein.

Das gksu-Paket (Popcon-Werte: V:112, I:470) ist ein spezialisiertes GTK+-Programm, um root-Privilegien zu gewähren. Es kann konfiguriert werden, entweder su(1) oder sudo(8) als Backend im Hintergrund zu verwenden (abhängig von dem gconf-Schlüssel "/apps/gksu/sudo-mode"). Sie können den gconf-Schlüssel über den gconf-editor(1) (im Menü über: "Anwendungen" → "Systemwerkzeuge" → "Konfigurationseditor") verändern.