Linux lernen 101: X11 installieren und konfigurieren

Die X-Window-Konfigurationsdatei

In den Anfängen von X bedeutete die Konfiguration eines Bildschirms, dass man die Fähigkeiten des Bildschirms genau kannte und in der Lage war, nicht nur Informationen über die Auflösung, sondern auch über horizontale und vertikale Synchronisationswerte, die Farbtiefe usw. anzugeben. Seit dem Aufkommen der Video Electronics Standards Association (VESA) und der Display Data Channel (DDC)-Protokolle, die es einem Bildschirm ermöglichen, diese Fähigkeiten an eine Grafikkarte und damit an einen Computer zu übermitteln, ist die Konfiguration viel automatischer geworden. Dies ist ein Glücksfall, da wir heute erwarten, dass wir unser Notebook überallhin mitnehmen und einfach einen verfügbaren externen Monitor oder Projektor anschließen können.

Die Konfiguration von Maus, Trackball oder Tastatur ist ebenfalls automatischer geworden. Im Allgemeinen schließen Sie das Gerät einfach an, oft über eine USB-Verbindung, und es funktioniert.

Wie bei den meisten Dingen in Linux gibt es jedoch einen zugrunde liegenden Konfigurationsmechanismus, den Sie verwenden können. Tatsächlich bezieht die Xorg-Implementierung von X Konfigurationsinformationen aus mehreren Quellen. Die wichtigste Konfigurationsdatei ist xorg.conf, zusammen mit Dateien aus dem Verzeichnis xorg.conf.d. Diese befinden sich normalerweise in /etc/X11. Zusätzliche Konfigurationen können aus Kommandozeilenoptionen, Umgebungsvariablen, automatischer Erkennung und Fallback-Standardwerten stammen.

Die Konfigurationsdatei xorg.conf und die Dateien im Verzeichnis xorg.conf.d sind in Abschnitte unterteilt, die in beliebiger Reihenfolge angegeben werden können. Das allgemeine Abschnittsformat ist in Listing 1 dargestellt.

Listing 1. Aufbau der Abschnitte in xorg.conf

 Section "SectionName" SectionEntry ... EndSection

Mehr anzeigenMehr anzeigen-Symbol

Xorg mit der Option -configure. Der Befehl Xorg ist eigentlich ein symbolischer Link vom Befehl X, der sich normalerweise in /usr/bin befindet. Sie müssen den Befehl Xorg als root ausführen und sicherstellen, dass kein X-Server läuft. Eine Möglichkeit, dies zu tun, besteht darin, Ihre GRUB2-Stanza zu bearbeiten, um in den Mehrbenutzermodus ohne X zu booten. Bearbeiten Sie einfach den Eintrag im Bootmenü, den Sie booten möchten, und fügen Sie ein 3 am Ende der Zeile `linux boot/vmlinuz…‘ ein, wie in Abbildung 2 dargestellt.

Abbildung 2. Booten in den Mehrbenutzermodus ohne X

Wenn Sie systemd verwenden, können Sie systemd.unit=multi-user.target anstelle von 3 verwenden.

Xorg -configure lädt verfügbare Gerätetreiber und Sonden für Hardware. Es funktioniert auf vielen Systemen, hat aber laut der Manpage auf einigen Systemen Probleme. Die Fedora-Dokumentation empfiehlt die Verwendung der :1-Anzeige anstelle der Standard :0-Anzeige, so dass Sie Xorg :1 -configure ausprobieren können, wenn das einfache Xorg -configure nicht funktioniert.

Eine Beispieldatei, die mit dieser Methode auf meinem openSUSE Tumbleweed-System erzeugt wurde, ist in Listing 2 dargestellt.

Listing 2. Beispiel xorg.conf

Angenommen, Ihr Bildschirm unterstützt DDC, was bei den meisten modernen Bildschirmen der Fall ist, können Sie den Befehl xrandr verwenden, um seine Fähigkeiten abzufragen. Listing 4 zeigt die drm-Informationen für ein Notebook mit einem angeschlossenen Bildschirm und die entsprechende Ausgabe von xrandr.

Listing 4. Verwendung von xrandr zur Ermittlung der Anzeigefähigkeiten

XkbVariant definiert, welche Varianten der beiden Layouts verwendet werden sollen. Im Falle des us-Layouts wird dessen Standardvariante verwendet. Im Falle des sk-Layouts wird dessen qwerty-Variante verwendet. Die Option XkbOptions gibt an, dass Benutzer mit der CapsLock-Taste zwischen den Layouts umschalten können.

Liste 5. Aktualisieren der Tastaturkonfiguration

localectl verwenden. localectl status zeigt jedoch, dass diese Änderungen beim Neustart des Systems übernommen wurden, wie in Listing 6 gezeigt.

Listing 6. Anzeigen des Tastaturstatus mit localectl

Display-Manager fallen in drei allgemeine Kategorien.

  1. Tiling Window-Manager teilen den Bildschirm in Kacheln auf und schreiben jede Kachel separat von den anderen. Die Leistung ist im Allgemeinen gut.
  2. Stapelfenster-Manager stapeln einzelne Fenster auf dem Bildschirm in einer Liste, die als Z-Reihenfolge bekannt ist. Wenn ein neues Fenster den Fokus erhält, wird es an die Spitze der Z-Reihenfolge gesetzt und alle unteren Fenster werden neu gezeichnet. Dies kann vor allem bei kleinen Änderungen langsam sein, aber es wurden verschiedene Optimierungen entwickelt.
  3. Compositing Window Manager sind in der Regel Stacking Window Manager, die für jedes Fenster einen Puffer vorhalten und diese dann zur Anzeige in einem einzigen Puffer zusammenfassen, ohne dass jedes einzelne Fenster neu gezeichnet und dann mit dem nächsthöheren in der Z-Reihe überschrieben werden muss. Dies ermöglicht auch Effekte wie Transparenz.

Abbildung 3 zeigt ein Beispiel für den I3 Tiling Window Manager. Man beginnt mit einem leeren Desktop und erstellt dann ein Fenster, z. B. ein Terminalfenster. Dieses nimmt den gesamten Bildschirm ein. Sie können dann ein weiteres Fenster öffnen, das die ursprüngliche Kachel in zwei Teile teilt. Wenn Sie dann ein weiteres Fenster öffnen, wird der Bildschirm in drei Kacheln aufgeteilt. Sie können wählen, ob Sie neue Kacheln horizontal oder vertikal erstellen. In diesem Beispiel habe ich mich dafür entschieden, die mittlere Kachel mit dem Sudoku-Spiel vertikal zu teilen, um ein weiteres kleines Terminalfenster zu erstellen. Dann habe ich dieses horizontal geteilt, um ein xlcock-Fenster hinzuzufügen.

Abbildung 3. Der I3 Kachel-Fenstermanager

Sie können normalerweise Fenster zwischen virtuellen Desktops verschieben, was sehr hilfreich ist, wenn Sie mehrere große Fenster geöffnet haben.

Sie können die Liste der verfügbaren Anwendungen als Menü am oberen Rand des Bildschirms öffnen und Anwendungen durch langsames horizontales Scrollen oder schneller durch die Eingabe eines Teils oder des gesamten Namens, wie z. B. „xclock“, auswählen.

Im Gegensatz zu Kachel-Fenstermanagern können Sie mit Stapel-Fenstermanagern Fenster in jeder von Ihrem Bildschirm unterstützten Größe anzeigen lassen, einschließlich Fenstern, die den Rand des Bildschirms überlappen können. Abbildung 4 zeigt ein Beispiel für den Openbox Stacking Window Manager mit vier sich überlappenden Fenstern und dem Menü, mit dem Sie neue Anwendungen öffnen können.

Abbildung 4. Der Openbox-Stapelfenstermanager

Grundlegende Stapelfenstermanager arbeiten nach dem Prinzip, dass alle Fenster auf dem Bildschirm neu gezeichnet werden, wenn sich das Fenster mit dem Fokus ändert oder verschoben, geschlossen oder in der Größe verändert wird. Dies kann dazu führen, dass verschiedene Bereiche des Bildschirms mehrfach neu gezeichnet werden, da die gesamte Z-Reihenfolge verarbeitet wird. Es können Algorithmen verwendet werden, um die Anzahl der unnötigen Neuschreibungen zu minimieren.

Eine Verbesserung der grundlegenden Idee des Stapelns ist ein Compositing Window Manager. Ein solcher Fenstermanager speichert die Inhalte der einzelnen Fenster und fügt sie zu einem einzigen Fenster zusammen. Nur die aktualisierten Teile müssen dann in den Puffer der Grafikkarte geschrieben werden. Compiz ist ein Beispiel für einen Compositing-Fenstermanager, während Desktop-Umgebungen wie KDE und GNOME ebenfalls Compositing-Fenstermanager verwenden.

Eine Desktop-Umgebung bietet im Allgemeinen eine umfassende Benutzererfahrung, einschließlich Dingen wie einer grafischen Anmeldeanzeige, grafischen Systemmenüs, einer Schublade zur Anzeige von Widgets wie der Uhrzeit, Symbolen für geöffnete Anwendungen und so weiter. Eine Suite integrierter Anwendungen bietet dem Benutzer in der Regel ein einheitliches Erlebnis. Die meisten Fenstermanager sind wesentlich schlanker als eine vollständige Desktop-Umgebung.

Abbildung 5 veranschaulicht das Konzept der Transparenz in einem zusammengesetzten Fenstermanager oder einer Desktop-Umgebung. Halten Sie die linke Maustaste (Taste 1) auf der Titelleiste des Terminalfensters gedrückt, wenn Sie es verschieben möchten. Die Anzeige ändert sich und zeigt an, welche Fenster sich unter diesem bestimmten Bereich befinden. Dies kann Ihnen helfen, ein Fenster zu verschieben, das nicht über einem anderen liegt, wenn beide sichtbar sein sollen.

Abbildung 5. Transparenz mit KDE Plasma Desktop

Abbildung 6 zeigt GNOME 3.28 auf Fedora. Wenn Sie auf die Schaltfläche Aktivitäten oben links auf diesem Bildschirm klicken, öffnet sich eine ikonisierte Liste von Favoriten auf der linken Seite des Bildschirms und zeigt eine Reihe von laufenden Anwendungen als kleine Fenster an. Sie können auf einen Favoriten oder ein kleines Fenster klicken oder das Suchfeld am oberen Rand des Bildschirms verwenden, um nach einem Programm zu suchen. In diesem Beispiel habe ich auf den Tag und die Uhrzeit in der oberen Leiste geklickt, um ein Widget zu öffnen, das einige Meldungen anzeigt, z. B. verfügbare Updates oder den letzten abgeschlossenen Befehl, sowie zusätzliche Informationen zu Datum und Uhrzeit. Die Symbole oben rechts ermöglichen den Zugriff auf Funktionen wie die Lautstärke des Lautsprechers, Netzwerkeinstellungen, Zugriffsoptionen und Optionen zum Herunterfahren, Abmelden oder Neustarten.

Abbildung 6. Fedora GNOME-Aktivitäten und Widgets

Ich habe bereits erwähnt, dass Desktop-Umgebungen häufig integrierte Anwendungen enthalten, die Ihnen bei der Verwaltung verschiedener Aspekte des Desktops oder des Systems helfen. Abbildung 7 zeigt den Einstellungsdialog von Fedora GNOME 3.28, der bei den Anzeigeeinstellungen geöffnet ist. Dieses Beispiel stammt von einem Notebook mit einem externen Viewsonic-Monitor. In diesem Fall besteht die Möglichkeit, die beiden Bildschirme zu einem einzigen Bildschirm zu verbinden oder den Inhalt des einen Bildschirms auf den anderen zu spiegeln. In diesem Fall entscheiden wir uns dafür, die beiden Bildschirme zu verbinden, wobei sich der eingebaute Bildschirm logischerweise rechts vom externen Monitor befindet.

Abbildung 7. Fedora GNOME-Dialogfeld Bildschirmeinstellungen

Da Sie die Bildschirmauflösung in der Datei xorg.conf ändern können, können Sie den Compositor auch anweisen, das Fenster entweder auf 100% oder 200% zu skalieren. Die verfügbare Skalierung hängt von der Größe des Monitors und dem verwendeten Desktop ab. Ich habe auch einen UHD-Monitor (4K) und Augen, die die sehr kleine native Textauflösung nicht lesen können. Daher verwende ich auf diesem Monitor häufig einen Skalierungsfaktor von 200 %.

Beachten Sie, dass Änderungen, die mit den GNOME-Einstellungen vorgenommen werden, die xorg.conf nicht aktualisieren. Stattdessen werden diese Einstellungen in der Datei .config/monitors.xml in Ihrem Home-Verzeichnis gespeichert. GNOME verwaltet auch andere Anzeige- und Tastatureinstellungen in der dconf-Datenbank, die Sie ebenfalls in Ihrem Heimatverzeichnis finden können. Da sich diese Einstellungen in Ihrem Heimatverzeichnis befinden, gelten sie nur für Sie. Andere Benutzer haben möglicherweise andere Einstellungen.

Wenn Sie mehrere Desktop-Umgebungen oder Fenstermanager installiert haben, fragen Sie sich vielleicht, wie Sie zwischen ihnen wählen können. Sie können in den Mehrbenutzermodus booten, wie zuvor in diesem Tutorial beschrieben, und dann einen Befehl wie startx ausführen, um X mit dem entsprechenden Manager zu starten. Wenn Sie eine Desktop-Umgebung wie GNOME haben, die einen Begrüßungsbildschirm anbietet, haben Sie wahrscheinlich eine Auswahl an Einstellungen auf dem Begrüßungsbildschirm. Abbildung 8 zeigt die Auswahlmöglichkeiten, die auf meinem Fedora 28-System installiert sind.

Abbildung 8. Fedora GNOME 3 Begrüßungsbildschirm mit WM-Auswahl

Zugriff auf den X-Server verwalten und Anwendungen aus der Ferne anzeigen

Bis jetzt haben Sie Beispiele gesehen, wie X auf einem Desktop-Computer mit einem oder vielleicht zwei Monitoren läuft. Ein X-Server behandelt einen einzelnen Bildschirm als eine Sammlung von Monitoren, die sich einen gemeinsamen Satz von Eingabegeräten teilen.

Das in Abbildung 7 gezeigte Notebook hat also nur einen Bildschirm, obwohl es über den eingebauten Monitor und einen externen Monitor verfügt. In diesem Beispiel arbeiten die beiden Monitore so, als wären sie miteinander verbunden. So entsteht ein einziger logischer Bildschirm, auf dem Fenster zwischen den Monitoren verschoben oder sogar aufgeteilt werden können.

X verwendet einen dreiteiligen Namen für Bildschirme der Form hostname:displaynumber.screennumber, wobei hostname der Hostname des Computers ist, displaynumber eine bei 0 beginnende Zahl, die den jeweiligen Bildschirm beschreibt, und screennumber gilt, wenn zwei oder mehr Monitore als separate Bildschirme und nicht als ein einziger logischer Bildschirm behandelt werden. Sowohl Hostname als auch Bildschirmnummer können weggelassen werden, so dass die gebräuchlichste Anzeigeschreibweise :0 ist. Sie können Ihre aktuelle Einstellung in der Umgebungsvariablen DISPLAY sehen, wie in Listing 7 gezeigt.

Listing 7. Die Umgebungsvariable DISPLAY

ian@attic5-u18:~$ echo $DISPLAY:0

Mehr anzeigenMehr anzeigen-Symbol

DISPLAY jedem Benutzer erlauben würde, Ausgaben auf den Bildschirm zu schreiben, aber X hat einige Einschränkungen bei der Zugriffskontrolle. Ich zeige Ihnen drei Möglichkeiten, sich mit einem X-Server zu verbinden.

  1. Ssh mit X-Weiterleitung verwenden
  2. Xauthority und xauth verwenden
  3. Host- oder Benutzerkontrolle mit xhost verwenden

Die sicherste Möglichkeit, X auf einem anderen Bildschirm zu verwenden, ist die X-Weiterleitung (manchmal auch Tunneling genannt). Dies muss auf dem SSH-Server, mit dem Sie sich verbinden, mit der Zeile X11Forwarding yes in der Konfigurationsdatei /etc/ssh/sshd_config aktiviert werden. Sie müssen es auch auf dem Client aktivieren, indem Sie die Option -X (das ist ein großes X) in Ihrem ssh Befehl angeben. Listing 8 vergleicht, was passiert, wenn ich su - jane verwende, um auf meinem System zum Benutzer jane zu wechseln und dann ssh -X jane@localhost verwende. In beiden Fällen versuche ich, den Befehl xclock auszuführen, um eine kleine Uhr auf meinem Bildschirm anzuzeigen.

Listing 8. X-Weiterleitung

DISPLAY-Variable auf localhost:10.0 gesetzt ist. Der sshd-Server erstellt für Sie einen X-Server auf dem Zielsystem. Sie wollen nicht, dass dieser Server mit einem echten X-Server auf dem System interferiert. Daher enthält die Konfigurationsdatei /etc/ssh/sshd_config eine Zeile X11DisplayOffset 10, um den Startoffset (von 0) für X-Server über ssh festzulegen. Die Voreinstellung ist 10, was normalerweise für eine Einzelplatz-Workstation ausreicht, aber in einem Mehrbenutzersystem eventuell erhöht werden muss. Eine zweite ssh-Verbindung zum Server würde die Anzeige 11 erhalten und so weiter.

Die zweite Methode, um anderen die Verbindung zu einem X-Server zu ermöglichen, ist die Xauthority-Methode. Die Xauthority-Datei enthält Autorisierungsinformationen, die verwendet werden, wenn Sie eine Verbindung zu einem X-Server herstellen. Die Umgebungsvariable XAUTHORITY gibt den Namen der aktuell verwendeten Datei an, entweder eine vom System generierte Datei wie /run/user/1000/gdm/Xauthority auf meinem Ubuntu 18-System oder Ihre eigene .Xauthority-Datei.

Verwenden Sie den Befehl xauth, um neue Autoritäten aufzulisten, zu extrahieren oder einzubinden. Verwenden Sie die Option -f, um eine andere Xauthority-Datei als die in Ihrer Umgebungsvariablen XAUTHORITY anzugeben. Sie können xauth-Befehle auf der Kommandozeile angeben oder das Programm starten und die Befehle aus dem Programm heraus verwenden. Listing 9 zeigt einige Beispiele und extrahiert meine Berechtigung für display :0 in eine Datei namens auth-ian.

Listing 9. Extrahieren von Berechtigungsinformationen mit xauth

XAUTHORITY setzt. Der Benutzer jane kann dann Anwendungen auf meinem Bildschirm anzeigen.

Liste 10. Zusammenführen von Berechtigungsinformationen mit xauth

xhost. Auf einer Workstation können Sie diesen Befehl verwenden, um grafische Programme zu öffnen, während Sie als ein anderer Benutzer arbeiten. Der Befehl xhost ohne Optionen zeigt die aktuelle Zugriffskontrollliste an. Verwenden Sie die Option + mit einem Namen, um weitere Systeme oder Benutzer zuzulassen. Listing 11 zeigt, wie man den Benutzer john auf meinem lokalen System zur Zugriffskontrollliste hinzufügt, und zeigt dann, wie der Benutzer john das grafische Programm xclock öffnet.

Listing 11. Verwenden von xhost zur Aktivierung eines einzelnen lokalen Benutzers

xhost +local: wie in Listing 12 gezeigt. Beachten Sie den Doppelpunkt (:) am Ende von local.

Liste 12. Verwenden Sie xhost, um alle lokalen, nicht netzwerkfähigen Benutzer zu aktivieren

– anstelle von +, um Einträge zu entfernen, die Sie aktiviert haben. Siehe die xhost man- oder info-Seiten für zusätzliche Optionen.

Aus Sicherheitsgründen sollten Sie SSH-Tunneling oder möglicherweise eine andere Lösung wie Virtual Network Computing (VNC) anstelle von xauth oder xhost verwenden. VNC ist nicht Gegenstand dieses Tutorials, bietet aber eine bessere Leistung als SSH-Tunneling.

Wenn etwas schief geht

Bei so vielen möglichen Quellen für X-Konfigurationsinformationen müssen Sie wissen, wo Sie nach Protokollinformationen suchen müssen. Fehler, die sich auf Ihre individuelle X-Sitzung beziehen, können sich in der Datei .xsession-errors oder möglicherweise .xsession-errors-:0 in Ihrem Home-Verzeichnis befinden. Das Suffix :0 steht für Fehler auf der Anzeige :0.

Das Haupt-X-Protokoll befindet sich in /var/log. Der Name lautet normalerweise /var/log/Xorg.0.log, wobei 0 die Nummer Ihres Displays ist. Die Nummer wird anders lauten, wenn Sie nicht Display :0 verwenden.

Wayland, ein neuer Compositing Window Manager

Kürzlich wurde ein neuer Display Server und ein Compositing Protokoll namens Wayland entwickelt. In diesem Modell erstellen Anwendungen ihre Fensterinhalte selbst in einem Off-Screen-Puffer. Der Compositor und der Server sind integriert. Die Absicht von Wayland ist es, eine einfachere und effizientere Lösung als X zu bieten. Wayland verwendet größtenteils bestehende Treiber und Infrastrukturen wieder, was das Projekt möglich macht.

Im Gegensatz zu X ist Wayland nicht netzwerktransparent aufgebaut. Andere Lösungen wie VNC können verwendet werden, wenn eine entfernte Fensteranzeige benötigt wird.

Weston ist ein Referenz-Compositor, der Wayland implementiert. GNOME, KDE, Enlightenment und mehrere andere Fenstermanager unterstützen jetzt Wayland. Toolkits wie Qt 5 und GTK+ unterstützen Wayland ebenfalls. Zum Zeitpunkt der Erstellung dieses Artikels (Dezember 2018) werden sowohl Fedora als auch Ubuntu mit Wayland als Standard-Anzeigeserver ausgeliefert.

Der Xorg-Server enthält nun XWayland, mit dem bestehende X-Anwendungen mit einem Wayland-Compositor ausgeführt werden können.

Die meisten aktuellen Implementierungen haben immer noch die Wahl, entweder X oder Wayland für jede Sitzung auszuführen. Abbildung 7 zeigt ein Beispiel dafür, wie der GMS-Greeter die Auswahl eines Sitzungstyps ermöglicht. Unter Fedora wird GNOME standardmäßig auf Wayland ausgeführt.

Sie können dies auch während der Laufzeit überprüfen, ohne sich anmelden zu müssen. Wenn Sie Wayland verwenden, wird die WAYLAND_DISPLAY Umgebungsvariable gesetzt. Auf Systemen, die systemd verwenden, können Sie den Befehl loginctl verwenden, um Ihre Anmeldesitzungsnummer zu ermitteln und ihn dann erneut verwenden, um Ihren Sitzungstyp zu bestimmen. Listing 13 zeigt diese Werkzeuge, zuerst auf einem Fedora 28-System mit Wayland und dann auf einem Ubuntu 18-System mit Xorg.

Listing 13. Feststellen, ob Sie X oder Wayland verwenden

Schreibe einen Kommentar

Deine E-Mail-Adresse wird nicht veröffentlicht.