Grundlagen zum X Window System
Diese Seite ist als Workshop zu verstehen. Die Beispiele können einfach nachvollzogen und abgearbeitet werden. Einsteigern wird empfohlen sich mit Prozessen und (Kommandozeilen-)Umgebungen und deren Umgebungsvariablen vertraut zu machen. Ein erster Anlaufpunkt sind die Hilfeseiten der verwendeten Shell, hier: Bash. Grafische Programme sind interaktive Dialoge. Sie beenden sich normalerweise nicht selbst, und es ist beispielsweise halt nicht egal ob diese mit oder ohne 'exec', '&', … aufgerufen werden.
Noch ein Hinweis für Einsteiger: Für Installationen und Arbeiten an Systemdateien sind Root-Rechte erforderlich, das meiste andere geht als normaler Benutzer. Es wird davon ausgegangen, dass man als normaler Benutzer angemeldet ist.
Es wird weiterhin davon ausgegangen, dass bis hierher nur ein Debian-Basissystem ohne grafische Benutzeroberfläche installiert ist. Sollte bereits ein Displaymanager (z. B. LightDM) laufen, lässt sich dieser vorübergehend deaktivieren (z. B. systemctl disable lightdm und / oder chmod -x /etc/init.d/lightdm), dann am besten den Rechner neu starten.
Das X Window System installieren
su - apt update apt install xorg exit
Dabei werden unter Debian auch schon einige Anwendungsprogramme mit installiert.
Erster Start
Erstelle / editiere ~/.xinitrc, sie muss nicht unbedingt ausführbar sein.
echo xterm> ~/.xinitrc
Starte das X Window System
startx
… und wir sehen xterm mit seinen internen Voreinstellungen ohne jede Fensterdekoration. Man kann jetzt aus xterm heraus andere Programme ausführen (bewege für den Fokus die Maus auf das angezeigte Fenster), auch weitere Xterms, vorzugsweise mit Geometriedaten … und natürlich jetzt mit angehängtem '&' da ansonsten das neu gestartete Programm die Shell blockiert. Das '&' ist ein Sonderzeichen, das die im xterm laufende Shell das Programm im Hintergrund starten lässt.
xclock -geometry 50x50-1+1 & xterm -geometry 80x25-0-0 &
Die X Sitzung beenden
Trage in dem zuerst gestarteten Xterm ein
exit
… und man gelangt wieder auf die Kommandozeile.
Was war passiert? Der zu ~/.xinitrc gehörende Prozess wurde beendet … sonst nichts.
Das Programm Xterm als grafische Anwendung ist lediglich ein Dialog-Programm, das so lange läuft bis es beendet wird. Es stellt damit einen Haltepunkt für den zu ~/.xinitrc gehörenden Prozess dar. Da Xterm zur Zeit das einzige Programm in ~/.xinitrc ist, führt ein beenden von Xterm auch zum Beenden des Xinit-Prozesses.
X Sitzung automatisch starten, und abmelden
Abmelden von 1. Konsole
exit
Wechsel auf 2. Konsole
[Alt] [F2]
und wieder anmelden.
Die folgenden Zeilen in ~/.profile am Ende nachgetragen starten das X Window System automatisch nach der Anmeldung an der 1. Konsole (/dev/tty1).
if [ "$(tty)" = "/dev/tty1" ] ; then startx logout fi
Zum Testen wieder mit [Alt][F1] nach der 1. Konsole wechseln und sich dort wieder anmelden.
Warum man diese Zeilen in ~/.profile eintragen sollte und nicht z. B. in ~/.bashrc … bitte in den Hilfeseiten der verwendeten Shell nachlesen, Stichwort: Login-Shell. Grafische Terminal-Programme wie Xterm rufen die Shell so auf, dass man bereits unter dem Benutzernamen angemeldet ist, und Aufruf von startx während der X-Sitzung funktioniert nicht bzw. macht das System zwar nicht kaputt aber führt zu häßlichen Fehlermeldungen. Also sucht man sich für die obigen Zeilen eine Stelle, in der zwischen diesen Anmelde-Situationen unterschieden wird.
Der Fenstermanager
Es wird davon ausgegangen, dass man sich, auf welchen Weg auch immer, innerhalb der X Sitzung befindet und Xterm läuft. Aber ohne Fensterdekoration lässt sich Xterm nicht so ohne weiteres vergrößern, verkleinern, verschieben. Das, sowie die Bereitstellung von Menüs und Abfangen von Tastenkombinationen zum Starten anderer Anwendungen, ist Aufgabe des Fenstermanagers.
Installation (hier: TWM)
su - apt update apt install twm exit
Starten wir den Fenstermanager einfach im Xterm
twm &
… und schon bekommen die bereits gestarteten Anwendungen die Fensterdekoration.
Wir können auch weitere installieren
su - apt update apt install openbox fvwm icewm fluxbox exit
… und TWM gegen einen anderen austauschen, z. B. Openbox
pkill twm openbox &
Der Fenstermanager ist lediglich ein grafisches Anwendungsprogramm, ein Dialog der sich wie jede andere grafische Anwendung starten und wieder beenden lässt. Der Wechsel zwischen den Fenstermanagern in Einzelschritten funktioniert hier, weil der Haltepunkt für den X Init-Prozess immer noch vom Xterm bereitgestellt wird (s. o.). Für den Fall dass der Haltepunkt von einem Fenstermanager bereitgestellt wird, verfügen diese über eine entsprechende Restart-Funktion fürs Menü. Mit dieser Restart-Funktion können Fenstermanager nicht nur sich selbst neu starten, sondern auch sich selbst durch einen anderen ersetzen ohne den X Init-Prozess zu beenden (siehe Hilfeseiten des jeweiligen Fenstermanagers). Allerdings gleichzeitiges Starten mehrerer Fenstermanager in der gleichen X Sitzung funktioniert nicht, der Versuch macht das System zwar nicht kaputt aber führt zu Fehlermeldungen … aber man kann hierfür weitere X Sitzungen starten …
Weitere X Sitzungen starten
Am besten erst mal ~/.xinitrc kopieren, z. B. nach ~/.xinitrc1, ~/.xinitrc2, … so ist man später bei der Konfiguration unabhängiger.
Wichtige Umgebungsvariable ist DISPLAY
echo $DISPLAY
Sie enthält bei der 1. X Sitzung :0 und darüber wird der grafischen Anwendung (X Client) mitgeteilt auf welches grafische Display die Ausgaben gehen. Bei weiteren X Sitzungen muss man neben der grafischen Anwendung auch eine andere Display-Nummer angeben.
Auf eine freie Textkonsole wechseln, als Benutzer anmelden, und so was eingeben wie
startx ~/.xinitrc1 -- :1
Dabei ist ~/.xinitrc1 die grafische Anwendung. Man könnte, sofern installiert, genau so gut jedes andere Programm wie z. B. Firefox oder Gimp starten
startx firefox -- :1
(hier wieder ohne Fenstermanager bzw. Fensterdekoration)
Der Displaymanager
Der Displaymanager ist ein Dienst, der nach dem Hochfahren des Rechners einen Dialog zur grafischen Anmeldung am System bietet.
Installation (hier: XDM)
su - apt update apt install xdm exit
Die Initialisierung der X Sitzung mit XDM erfolgt über die Datei ~/.xsession, am besten erst mal aus ~/.xinitrc kopieren und den Rechner neu starten
cp ~/.xinitrc ~/.xsession reboot
Nach der Anmeldung startet die in ~/.xsession konfigurierte X Sitzung auf Konsole /dev/tty7 mit DISPLAY=„:0“.
Man kann auch weitere Displaymanager installieren (z. B. LightDM), aber pro X-Server kann nur einer konfiguriert sein.
su - apt update apt install lightdm exit
Bei Debian-basierten Distributionen lässt sich der Displaymanager über die Paketkonfiguration wechseln
dpkg-reconfigure xdm dpkg-reconfigure lightdm
Fazit
Das X Window System ist ein Musterbeispiel für die Fortsetzung der Unix-Philosophie in Richtung grafische Benutzeroberfläche: Modularität, Flexibilität, und fast uneingeschränkte Kombinierbarkeit.
Auf den nächsten Seiten werden einige Fenstermanager mit Einsatzszenarien vorgestellt. Dabei geht es nicht darum den tollsten Fenstermanager für die beste Desktopumgebung zu finden, sondern Kochrezepte vorzustellen, aus denen sich jeder seine persönliche Benutzerumgebung zurechtbacken kann.
Wer bisher nur mit einer Desktopumgebung wie Cinnamon, Gnome, KDE Plasma, Mate oder Xfce Gearbeitet hat, weiss um die Problematik der Einrichtung für verschiedene Einsatzgebiete … irgendwie läuft es immer auf Kompromisse hinaus. In der Welt der Fenstermanager stehen Auswahl, Konfigurierbarkeit und Kombinierbarkeit im Vordergrund.
TWM ist der minimalistische Fenstermanager mit nur einer Arbeitsfläche. Wer weitere Arbeitsflächen benötigt wählt einen anderen Fenstermanager der dies unterstützt. FVWM bietet nicht nur mehrere Arbeitsflächen sondern darüber hinaus mehrere Bildschirmseiten pro Arbeitsfläche.
Jeder Fenstermanager hat seinen eigenen Satz Konfigurationsdateien und damit sein eigenes Standard-Profil. Wer gerne mit mehreren Profilen jongliert kann grundsätzlich 2 Wege beliebig miteinander kombinieren: Man kann mehrere Fenstermanager installieren und während der laufenden X Sitzung gegenseitig austauschen, oder man definiert beliebig viele Profile pro Fenstermanager und übergibt beim Restart die entsprechende Konfigurationsdatei als Kommandozeilen-Parameter.
Dann ist da noch die Möglichkeit mehrere Fenstermanager gleichzeitig zu starten. Man geht auf eine andere Textkonsole, meldet sich dort mit dem gleichen oder einem anderen Benutzernamen an, und startet dort den gleichen oder einen beliebigen anderen Fenstermanager. Aber Vorsicht bei zuviel Übermut, das X Window System könnte auch mal abstürzen. Deshalb sollte immer wenigstens eine Textkonsole für Administrierungsarbeiten als solche belassen werden.
Ansonsten sind die Einschränkungen übersichtlich: Pro X Server ist entweder kein oder genau 1 Displaymanager erlaubt. Pro X Sitzung muss die Variable DISPLAY sich von den anderen X Sitzungen unterscheiden, und es ist entweder kein oder genau 1 Fenstermanager und System-Icontray erlaubt.