Dieser Artikel behandelt, wie die Grafik in Linux aufgebaut ist und aus welchen Komponenten sie besteht. Er enthält viele Screenshots mit verschiedenen Implementierungen von Desktop-Umgebungen.
Wenn Sie den Unterschied zwischen KDE und GNOME nicht genau kennen oder zwar wissen, was es für Alternativen gibt, aber mehr darüber erfahren möchten, ist dieser Artikel für Sie. Es handelt sich um eine Übersicht, und obwohl viele Namen und einige Begriffe erwähnt werden, ist das Material auch für Einsteiger und diejenigen, die gerade einen Blick auf Linux werfen, nützlich.
Das Thema könnte auch fortgeschrittene Benutzer interessieren, die sich mit der Einrichtung des Remote-Zugriffs und der Implementierung eines Thin Clients beschäftigen. Oft treffe ich auf erfahrene Linux-Nutzer, die behaupten: „Auf dem Server gibt es nur die Kommandozeile, und ich plane nicht, mich näher mit Grafik zu beschäftigen, da das alles für einfache Benutzer notwendig ist.“ Doch selbst Kenner von Linux entdecken mit großer Überraschung und Freude die Option „-X“ bei dem Befehl ssh (und dafür ist es hilfreich, die Funktionsweise und Funktionalitäten des X-Servers zu verstehen).

Ich unterrichte seit fast 15 Jahren in Linux-Kursen an der „“ und bin überzeugt, dass viele der über fünftausend Personen, die ich ausgebildet habe, die Artikel auf Habr lesen und sicher auch schreiben. Die Kurse sind immer sehr intensiv (die durchschnittliche Dauer des Kurses beträgt fünf Tage); es gibt Themen zu besprechen, für die man mindestens zehn Tage für ein umfassendes Kennenlernen benötigt. Und während des Kurses wähle ich je nach Publikum (ob Anfänger oder erfahrene Administratoren) und abhängig von „Fragen aus dem Publikum“ aus, was ich detaillierter erläutern und was ich eher oberflächlich behandeln möchte, um mehr Zeit für die Kommandozeilen-Tools und deren praktische Anwendung zu widmen. Es gibt viele Themen, die dabei etwas leiden müssen. Dazu gehören „Die Geschichte von Linux“, „Unterschiede in den Linux-Distributionen“, „Über Lizenzen: GPL, BSD, ...“, „Über Grafik und Desktop-Umgebungen“ (das Thema dieses Artikels) und andere. Es ist nicht so, dass sie unwichtig sind, aber in der Regel gibt es viele aktuellere „hier und jetzt“ Fragen, und es sind nur fünf Tage... Dennoch ist es nützlich und notwendig, diese Themen zu studieren, um ein allgemeines Verständnis der Grundlagen des Linux-Betriebssystems sowie ein Bewusstsein für die verfügbare Vielfalt zu erlangen (auch wenn man nur eine bestimmte Linux-Distribution nutzt, sollte man dennoch einen breiteren Blick auf diese riesige und umfassende Welt, die als „Linux“ bekannt ist, haben).
Im Verlauf des Artikels gebe ich zu jedem Komponenten Links an für diejenigen, die tiefer in das Thema einsteigen möchten, zum Beispiel auf Artikel in der Wikipedia (wobei ich auf die vollständigere/nützliche Version hinweise, falls englisch- und russischsprachige Artikel vorhanden sind).
Für die Hauptbeispiele und Screenshots habe ich das openSUSE-Distribution verwendet. Man hätte jede andere Community-Distribution nutzen können, die eine große Anzahl an Paketen im Repository hat. Es ist schwierig, aber möglich, die Vielfalt der Desktop-Designs auf einer kommerziellen Distribution zu demonstrieren, da in diesen oft nur eine oder zwei der bekanntesten Desktop-Umgebungen verwendet werden. So beschränken sich die Entwickler, stabile und ausgereifte Betriebssysteme zu veröffentlichen. Auf diesem System habe ich alle DM/DE/WM (Erklärung dieser Begriffe folgt unten) installiert, die ich im Repository finden konnte.
Die Screenshots mit den "blauen Rändern" wurden genau auf openSUSE erstellt.
Die Screenshots mit den "weißen Rändern" wurden auf anderen Distributionen gemacht, die auf dem Screenshot angegeben sind.
Die Screenshots mit den "grauen Rändern" stammen aus dem Internet und dienen als Beispiele für Desktop-Designs aus vergangenen Jahren.
Also, beginnen wir.
Die Hauptkomponenten, aus denen die Grafik besteht
Ich werde drei Hauptkomponenten hervorheben und sie in der Reihenfolge auflisten, in der sie beim Systemstart gestartet werden:
- DM (Display Manager);
- Display Server;
- DE (Desktop-Umgebung).
Zusätzlich als wichtige Unterpunkte zur Desktop-Umgebung:
- Apps Manager/Launcher/Switcher (Startknopf);
- WM (Window Manager);
- verschiedene Software, die zusammen mit der Desktop-Umgebung geliefert wird.
Mehr Details zu jedem Punkt.
DM (Display Manager)
Die erste Anwendung, die beim Start der "Grafik" gestartet wird, ist der DM (Display Manager), der Anzeigenmanager. Seine Hauptaufgaben sind:
- zu fragen, welche Benutzer in das System gelassen werden sollen, die Authentifizierungsdaten (Passwort, Fingerabdruck) abzufragen;
- auszuwählen, welche Desktop-Umgebung gestartet werden soll.
Derzeit werden in verschiedenen Distributionen weit verbreitet verwendet:
- (ersetzte ),
- ,
- ,
- .
- Man kann auch Fly-DM (verwendet in AstraLinux) erwähnen.
Die Liste der bestehenden DM wird aktuell gehalten in




Es ist erwähnenswert, dass in den folgenden Screenshots derselbe Display-Manager LightDM verwendet wird, jedoch in unterschiedlichen Distributionen (die Namen der Distributionen sind in Klammern angegeben). Schätzen Sie, wie unterschiedlich dieser DM dank der Arbeit von Designern verschiedener Distributionen aussehen kann.





Das Wichtigste in dieser Vielfalt ist, dass es eine Anwendung gibt, die für den Start der grafischen Benutzeroberfläche und den Zugang des Benutzers zu dieser Grafik verantwortlich ist, und es gibt verschiedene Implementierungen dieser Anwendung, die sich im Aussehen und ein wenig im Funktionsumfang unterscheiden (Wahl der Anpassungsumgebungen, Wahl der Benutzer, Version für sehbehinderte Benutzer, Möglichkeit des Remote-Zugriffs über das Protokoll ).
Display Server
Der Display Server ist eine Art Fundament der Grafik, dessen Hauptaufgabe es ist, mit der Grafikkarte, dem Monitor und verschiedenen Eingabegeräten (Tastatur, Maus, Touchpads) zu arbeiten. Das heißt, die Anwendung (zum Beispiel ein Browser oder ein Texteditor), die in der „Grafik“ gerendert wird, muss nicht wissen, wie sie direkt mit den Geräten arbeitet, sie muss nichts über Treiber wissen. Das übernimmt alles das X Window.
Wenn man von Display Server spricht, bezieht man sich seit vielen Jahren in Linux und auch in Unix auf die Anwendung oder umgangssprachlich X (X-Window).
Aktuell wird in vielen Distributionen X durch .
Sie können auch lesen:
- ,
- ,
- (benötigt für den Remote-Start von Grafik-Anwendungen, zum Beispiel mit PuTTY).
Zuerst starten wir X und ein paar grafische Anwendungen darin.
Praktikum „X und Anwendungen darin starten“
Ich werde alles von dem neu erstellten Benutzer webinaruser ausführen (es wäre einfacher, aber nicht sicherer, alles als root auszuführen).
- Da X Zugriff auf die Geräte benötigt, gewähre ich diesen Zugriff: Die Liste der Geräte habe ich durch die Fehlerprotokolle beim Start von X im Log (\/home\/webinaruser\/.local\/share\/xorg\/Xorg.77.log) bestimmt.
% sudo setfacl -m u:webinaruser:rw \/dev\/tty8 \/dev\/dri\/card0 \/dev\/fb0 \/dev\/input\/*
- Danach starte ich X:
% X -retro :77 vt8 &
Optionen: * -retro — startet mit einem „grauen“ klassischen Hintergrund anstelle von schwarz wie standardmäßig; * :77 — lege (beliebig im sinnvollen Bereich, nur :0 ist wahrscheinlich bereits für eine bereits gestartete Grafik reserviert) die Bildschirmnummer fest, eine eindeutige Kennung, anhand derer mehrere gestartete X's unterschieden werden können; * vt8 — gibt das Terminal an, hier /dev/tty8, auf dem die X's angezeigt werden sollen).
- Starten einer grafischen Anwendung:
Dazu setzen wir zuvor eine Variable, anhand derer die Anwendung versteht, in welche meiner laufenden X's sie das zu zeichnende senden soll:
% export DISPLAY=":77"
Um die Liste der laufenden X's anzuzeigen, kann man so vorgehen:
ps -fwwC X
Nachdem die Variable festgelegt wurde, können Anwendungen in unsere X's gestartet werden – zum Beispiel starte ich die Uhr:
% xclock -update 1 &
% xcalc &
% xeyes -g 200x150-300+50 &

Die zentralen Ideen und Schlussfolgerungen aus diesem Abschnitt:
- Die X's benötigen Zugriff auf Geräte: Terminal, Grafikkarte, Eingabegeräte,
- Die X's zeigen keine Benutzeroberflächenelemente an – das ist eine graue (wenn mit der Option „—retro“) oder schwarze Fläche bestimmter Größen (zum Beispiel 1920×1080 oder 1024×768), um darin grafische Anwendungen zu starten.
- Anhand der Bewegung des „Cursors“ ist zu erkennen, dass die X's die Positionen der Maus verfolgen und diese Informationen an die darin gestarteten Anwendungen weitergeben.
- Außerdem erfassen die X's Tastatureingaben und übermitteln diese Informationen an die Anwendungen.
- Die Variable DISPLAY gibt den grafischen Anwendungen an, in welchem Bildschirm (jede X wird beim Starten mit einer eindeutigen Bildschirmnummer gestartet), und damit in welche der auf meinem System laufenden X's die Zeichnungen erfolgen sollen. (Es besteht auch die Möglichkeit, in dieser Variable einen Remote-Computer anzugeben und die Ausgabe an X's zu senden, die auf einem anderen Computer im Netzwerk laufen.) Da die X's ohne die Option -auth gestartet wurden, ist es nicht notwendig, sich mit der Variable XAUTHORITY oder dem Befehl xhost auseinanderzusetzen.
- Grafische Anwendungen (oder auch X-Clients genannt) werden in den X's gezeichnet – dabei gibt es keine Möglichkeit, sie zu verschieben/schließen/den „-g (Breite)x(Höhe)+(Verschiebung vom linken Rand)+(Verschiebung vom oberen Rand)“ zu ändern. Mit dem Minuszeichen entsprechend vom rechten und unteren Rand.
- Zwei Begriffe, die erwähnenswert sind: X-Server (so bezeichnet man die X-Systeme) und X-Clients (so bezeichnet man jede grafische Anwendung, die in X-Systemen ausgeführt wird). Es gibt eine gewisse Verwirrung in Bezug auf diese Terminologie; viele verstehen sie genau andersherum. Wenn ich mich von einem „Client-Rechner“ (in der Terminologie des Remote-Zugriffs) mit dem „Server“ (in der Terminologie des Remote-Zugriffs) verbinde, um eine grafische Anwendung vom Server auf meinem Monitor anzuzeigen, wird der X-Server auf dem Rechner gestartet, auf dem sich der Monitor befindet (also auf dem „Client-Rechner“ und nicht auf dem „Server“), während die X-Clients auf dem „Server“ gestartet und ausgeführt werden, auch wenn sie auf dem Monitor des „Client-Rechners“ angezeigt werden.

DE-Komponenten
Im Folgenden werden wir die Komponenten besprechen, aus denen ein Desktop normalerweise besteht.
DE-Komponenten: Startknopf und Taskleiste
Beginnen wir mit dem sogenannten Startknopf. Dies ist häufig ein separates Applet, das in der „Taskleiste“ verwendet wird. Dort ist normalerweise auch ein Applet zum Wechseln zwischen den geöffneten Anwendungen vorhanden.

Betrachtet man verschiedene Desktop-Umgebungen, würde ich solche Anwendungen unter dem allgemeinen Begriff „Apps Manager (Launcher/Switcher)“ zusammenfassen, also ein Werkzeug zur Verwaltung von Anwendungen (zum Starten und Wechseln zwischen geöffneten Anwendungen), sowie einige Utilities angeben, die Beispiele für Anwendungen dieses Typs sind.
- Erscheint in Form eines Startknopfes in der klassischen (über die gesamte Breite einer der Bildschirmkanten) „Taskleiste“:
○ xfce4-panel,
○ mate-panel/gnome-panel,
○ vala-panel,
○ tint2. - Außerdem kann man die „MacOS-ähnlichen Taskleisten“ (nicht über die gesamte Breite der Bildschirmkante) isoliert hervorheben, obwohl viele Taskleisten in beiden Varianten angezeigt werden können. Hier ist das Hauptunterscheidungsmerkmal eher visuell — das Vorhandensein des „Effekts der Vergrößerung der Icons beim Hover“.
○ docky,
○ latte-dock,
○ cairo-dock,
○ plank. - Und/oder Dienste, die Anwendungen bei Drücken der „Hotkeys“ starten (in vielen Desktop-Umgebungen ist eine ähnliche Komponente unbedingt vorhanden und ermöglicht das Anpassen eigener Hotkeys):
○ sxhkd.
- Es gibt auch verschiedene menüartige „Launcher“ (von engl. Launch (starten)):
○ dmenu-run,
○ rofi -show drun,
○ albert,
○ grun.

DE-Komponenten: WM (Fenster-Manager)
WM (Fenster-Manager) ist eine Art Anwendung, die für das Management von Fenstern verantwortlich ist und folgende Möglichkeiten bietet:
- Fensterbewegungen auf dem Desktop (einschließlich des Standardverhaltens mit gedrückter Alt-Taste für jeden Teil des Fensters und nicht nur für die Titelleiste);
- Ändern der Fenstergrößen, z.B. durch Ziehen an den "Fensterrändern";
- fängt die "Titel (title)"-Leiste des Fensterinterfaces sowie die Minimierungs-/Maximierungs-/Schließen-Schaltflächen der Anwendung hinzu;
- das Konzept, welche Anwendung sich im "Fokus" befindet.

Ich werde die bekanntesten auflisten (in runden Klammern gebe ich an, in welchem DE sie standardmäßig verwendet wird):
- (GNOME3),
- (Mate),
- (GNOME2),
- (Cinnamon),
- (KDE),
- (XFCE),
- .

Ich werde auch die "alten WM mit DE-Elementen" erwähnen. Das bedeutet, dass neben dem Fenstermanager auch Elemente wie die "Starttaste" und "Taskleisten" vorhanden sind, die eher für vollwertige DE typisch sind. Obwohl sie als "alt" gelten, haben sowohl IceWM als auch WindowMaker bereits 2020 ihre aktualisierten Versionen veröffentlicht. Es ist also korrekter, sie nicht als "alt", sondern als "alte Hasen" zu bezeichnen:
- ,
- ,
- , , , ,
- …





Neben den "klassischen" ("stapelbaren Fenstermanagern") sollte man besonders die , die es ermöglichen, Fenster "wie Dachziegel" über den gesamten Bildschirm zu verteilen, sowie für einige Anwendungen einen separaten Desktop für jede gestartete Anwendung im Vollbildmodus bereitzustellen. Es ist etwas ungewohnt für Menschen, die sie zuvor nicht verwendet haben, aber da ich selbst schon seit einiger Zeit solch eine Benutzeroberfläche benutze, kann ich sagen, dass es durchaus bequem ist und man sich schnell an diese Oberfläche gewöhnt, nach der man "klassische" Fenstermanager nicht mehr als bequem empfindet.
- ,
- ,
- ,
- ,
- ,
- qtile,
- bspwm,
- herbstluftwm,
- …
- twin,
- .

Es ist auch erwähnenswert, das Projekt und das Konzept des "Kompositfenstermanagers" zu erwähnen, der Hardwarebeschleunigung für die Anzeige von Transparenz, Schatten und verschiedenen dreidimensionalen Effekten nutzt. Vor etwa 10 Jahren gab es einen Boom bei 3D-Effekten auf Linux-Desktops. Heute nutzen viele der in DE integrierten Fenstermanager teilweise kompositorische Möglichkeiten. Kürzlich erschien — ein Produkt mit ähnlicher Funktionalität wie Compiz unter Wayland.

Eine detaillierte Liste verschiedener Fenstermanager kann ebenfalls in der .
DE-Komponenten: weitere
Es ist auch wichtig, die folgenden Komponenten des Desktops zu erwähnen (hier verwende ich etablierte englische Begriffe zur Beschreibung der Art der Anwendung - dies sind keine Namen der eigentlichen Anwendungen):
- Applets(Äpplets):
- PO (Widget Toolkit) – wird häufig mit einer Art "Minimalset" an Software geliefert:
DE (Desktop-Umgebung)
Aus den oben genannten Komponenten ergibt sich die sogenannte "Desktop-Umgebung". Häufig werden alle ihre Komponenten unter Verwendung derselben grafischen Bibliotheken und nach denselben Gestaltungsprinzipien entwickelt. So wird mindestens ein einheitlicher Stil für das Erscheinungsbild der Anwendungen gewahrt.
Hier können folgende derzeit existierende Desktop-Umgebungen hervorgehoben werden:
Die am weitesten verbreiteten sind GNOME und KDE, während XFCE ihnen dicht auf den Fersen ist.

Ein Vergleich verschiedener Parameter in Tabellenform kann in dem entsprechenden .
Vielfalt der DE

Es gibt sogar interessante Beispiele aus der Geschichte: In den Jahren 2003-2007 wurde für Linux eine "3D-Desktop-Gestaltung" mit dem Namen "Project Looking Glass" von der Firma Sun entwickelt. Ich selbst habe diesen Desktop verwendet, genauer gesagt "herumgespielt", da die Nutzung schwierig war. Diese "3D-Gestaltung" wurde in Java geschrieben, zu einer Zeit, als es noch keine Grafikkarten mit 3D-Unterstützung gab. Daher wurden alle Effekte vom Prozessor berechnet, und der Computer musste sehr leistungsstark sein, sonst funktionierte alles langsam. Aber es sah schön aus. Die dreidimensionalen Anwendungen konnten gedreht/aufgeklappt werden. Man konnte sich in einem Zylinder des Desktops mit Panoramawänden in 360 Grad umsehen. Es gab einige eigene schöne Anwendungen: zum Beispiel das Musikhören in Form von "CD-Wechsel" usw. Man kann auf YouTube nachsehen über dieses Projekt, aber die Qualität dieser Videos wird wahrscheinlich schlecht sein, da es damals keine Möglichkeit gab, Videos in hoher Qualität hochzuladen.

Leichtgewichtiger Desktop. Das Projekt existiert schon lange, seit 1996. In den letzten Jahren erfreut es sich großer Beliebtheit im Gegensatz zu den schwereren KDE und GNOME, da viele Distributionen eine leichte und "klassische" Desktop-Oberfläche benötigen. Es bietet viele Einstellungen und eine große Anzahl eigener Programme: Terminal (xfce4-terminal), Dateimanager (thunar), Bildbetrachter (ristretto), Texteditor (mousepad).

Es wird in der Distribution „Elementary OS“ verwendet. Man kann sagen, dass es „Arbeitsflächen“ gibt, die innerhalb einer einzigen Distribution entwickelt und verwendet werden und in anderen Distributionen nicht häufig verwendet werden (um nicht zu sagen „gar nicht verwendet“). Zumindest haben sie bis jetzt nicht an Popularität gewonnen und konnten die meisten Benutzer von den Vorteilen ihres Ansatzes überzeugen. Pantheon hat sich zum Ziel gesetzt, eine Benutzeroberfläche zu schaffen, die macOS ähnelt.

Variante mit Dock-Leiste:

Starker Fokus auf grafische Effekte und Widgets (schon seit den Zeiten, als andere Desktop-Umgebungen keine Widgets auf dem Desktop hatten, wie z. B. Kalender/Uhren). Verwendet eigene Bibliotheken. Es gibt eine große Sammlung eigener „schöner“ Anwendungen: Terminal (Terminology), Video-Player (Rage), Bildbetrachter (Ephoto).

Das ist ein Fork von Enlightenment17, der in der Distribution BodhiLinux verwendet wird.

Ursprünglich eine „klassische“ Desktop-Oberfläche, die als Gegenentwurf zu KDE entstanden ist, das auf der QT-Bibliothek basiert und zu dem Zeitpunkt unter einer Lizenz verteilt wurde, die für kommerzielle Distributionen nicht sehr praktisch war.

Mit der dritten Version von GNOME wurde die GNOME Shell mit einem „nicht klassischen“ Aussehen eingeführt, was nicht bei allen Benutzern gut ankam (jegliche drastischen Änderungen in Benutzeroberflächen werden von Benutzern schwer akzeptiert). In der Folge entstanden Fork-Projekte, die diese Desktop-Umgebung im „klassischen“ Stil weiterentwickelten: MATE und Cinnamon. Sie wird standardmäßig in vielen kommerziellen Distributionen verwendet. Hat eine große Anzahl von Einstellungen und eigenen Anwendungen.

Entstand auf Basis von GNOME2 und setzt die Entwicklung dieser Designumgebung fort. Hat eine große Anzahl von Einstellungen und Anwendungsgabeln, die bereits in GNOME2 verwendet wurden (es werden neue Namen verwendet), um keine Verwirrung zwischen den Forks und ihrer neuen Version für GNOME3 zu schaffen.

Fork von GNOME Shell, der den Benutzern eine Benutzeroberfläche im „klassischen“ Stil (wie in GNOME2) bietet.
Hat eine große Anzahl von Einstellungen und die gleichen Anwendungen wie für GNOME Shell.

Fork von GNOME im „klassischen“ Stil, der im Rahmen der Distribution Solus entwickelt wurde, jetzt aber auch als eigenständige Desktop-Oberfläche in verschiedenen anderen Distributionen angeboten wird.

(oder wie es oft einfach genannt wird, KDE)
Desktop-Umgebung, die im Rahmen des KDE-Projekts entwickelt wird.
Es bietet eine enorme Anzahl von Einstellungen, die für den normalen Benutzer über die grafische Benutzeroberfläche verfügbar sind, und viele grafische Anwendungen, die im Rahmen dieses Desktops entwickelt werden.

Im Jahr 2008 veröffentlichte KDE seine neue Implementierung von KDE Plasma (die Desktop-Engine wurde stark überarbeitet). Wie bei GNOME/MATE gefiel auch dies nicht allen KDE-Fans. Infolgedessen entstand ein Fork des Projekts, das die Entwicklung der vorherigen Version unter dem Namen TDE (Trinity Desktop Environment) fortsetzt.

Eine der neuen Desktop-Umgebungen, die mit Qt (auf dem KDE basiert) erstellt wurde. Sie bietet viele Einstellungen und eine ziemlich schöne (obwohl das subjektiv ist) und durchdachte Benutzeroberfläche. Sie wird im Rahmen der Distribution Deepin Linux entwickelt. Es gibt auch Pakete für andere Distributionen.

Fly
Ein Beispiel für eine Desktop-Umgebung, die mit Qt entwickelt wurde. Sie wird im Rahmen der Distribution Astra Linux entwickelt.

Leichte Desktop-Umgebung. Wie mehrere der vorherigen Beispiele wurde sie mit Qt erstellt. Sie ist tatsächlich eine Fortsetzung des LXDE-Projekts und das Ergebnis einer Fusion mit dem Razor-qt-Projekt.
Wie Sie sehen, kann der Desktop unter Linux sehr unterschiedlich aussehen, und für jeden Geschmack gibt es hier eine passende Benutzeroberfläche: von sehr schönen mit 3D-Effekten bis hin zu minimalistischen, von 'klassischen' bis zu ungewöhnlichen, von ressourcenintensiven zu leichten, von großen Bildschirmen bis zu Tablets/Smartphones.
Ich hoffe, ich konnte Ihnen einen Überblick darüber geben, aus welchen grundlegenden Komponenten die Grafik und der Desktop im Linux-Betriebssystem bestehen.
Das Material für diesen Artikel wurde im Juli 2020 in einem Webinar getestet. Es kann hier angesehen werden .
Das ist alles. Ich hoffe, es war hilfreich. Wenn Sie Fragen oder Kommentare haben, schreiben Sie mir. Ich freue mich darauf, zu antworten. Und kommen Sie zum Lernen in die !
Quelle: habr.com
