Dieser Artikel behandelt, wie die Grafik in Linux aufgebaut ist und aus welchen Komponenten sie besteht. Er enthält viele Screenshots von verschiedenen Implementierungen von Desktop-Umgebungen.
Wenn Sie KDE und GNOME nicht stark unterscheiden können oder zwar Unterschiede kennen, aber weitere Alternativen erfahren möchten, ist dieser Artikel genau richtig für Sie. Er bietet einen Überblick und obwohl er viele Namen und einige Begriffe enthält, ist der Inhalt auch für Anfänger nützlich, die einen ersten Eindruck von Linux gewinnen möchten.
Das Thema könnte auch fortgeschrittene Benutzer interessieren, wenn es um die Einrichtung des Remote-Zugriffs und die Implementierung eines Thin Clients geht. Oft treffe ich auf erfahrene Linux-Nutzer, die behaupten: „Auf dem Server gibt es nur die Kommandozeile, und die Grafik möchte ich nicht näher untersuchen, da das alles nur für einfache Benutzer ist“. Doch sogar Kenner von Linux sind oft überrascht und erfreut, die Option „-X“ im SSH-Befehl zu entdecken (dazu ist es hilfreich, die Funktionsweise und Aufgaben des X-Servers zu verstehen).

Ich unterrichte seit fast 15 Jahren in den Linux-Kursen der „» Ich bin mir sicher, dass viele der über fünftausend Menschen, die ich geschult habe, Artikel auf Habr lesen und sicherlich auch schreiben. Die Kurse sind immer sehr intensiv (die durchschnittliche Kursdauer beträgt fünf Tage), und es gibt Themen, die eine vollständige Einführung erfordern, für die man mindestens zehn Tage benötigt. Während des Kurses, je nach Publikum (ob Anfänger oder erfahrene Administratoren) und den "Fragen aus dem Publikum", wähle ich aus, welche Inhalte ich detaillierter und welche ich eher oberflächlich behandeln möchte, um mehr Zeit mit praktischen Anwendungen von Kommandozeilen-Utilities zu verbringen. Es gibt genügend Themen, bei denen man etwas opfern muss. Dazu gehören "Die Geschichte von Linux", "Unterschiede zwischen Linux-Distributionen", "Über Lizenzen: GPL, BSD, ...", "Über Grafik und Desktop-Umgebungen" (das Thema dieses Artikels) und weitere. Es ist nicht so, dass sie unwichtig wären, aber in der Regel gibt es viele aktuellere Fragen, die sofort klärungsbedürftig sind, und alles in nur fünf Tagen ... Dennoch ist es nützlich und notwendig, diese Themen zu studieren, um ein allgemeines Verständnis des Betriebssystems Linux zu erlangen und das verfügbare Spektrum zu verstehen (damit man, selbst wenn man eine bestimmte Linux-Distribution verwendet, einen breiteren Blick auf diese riesige und unermessliche Welt, die als "Linux" bezeichnet wird, hat).
Im Verlauf des Artikels werde ich Links zu den einzelnen Komponenten bereitstellen, für diejenigen, die tiefer in das Thema eintauchen möchten, beispielsweise zu Artikeln auf Wikipedia (ich weise dabei auf die umfassendere/nützlichere Version hin, falls sowohl englische als auch russische Artikel vorhanden sind).
Für die grundlegenden Beispiele und Screenshots habe ich die Distribution openSUSE verwendet. Es wäre möglich gewesen, eine andere, von der Community entwickelte Distribution mit einer Vielzahl von Paketen im Repository zu nutzen. Es ist kompliziert, aber machbar, eine Vielzahl von Desktop-Oberflächen auf einer kommerziellen Distribution zu demonstrieren, da häufig nur eine oder zwei der bekanntesten Desktop-Umgebungen verwendet werden. Damit schränken sich die Entwickler in ihrem Ziel ein, ein stabiles und gut optimiertes Betriebssystem zu veröffentlichen. Für dieses System habe ich alle DM/DE/WM (eine Erklärung dieser Begriffe folgt weiter unten) installiert, die ich im Repository gefunden habe.
Die Screenshots mit den «blauen Rahmen» wurden tatsächlich auf openSUSE erstellt.
Die Screenshots mit den «weißen Rahmen» stammen von anderen Distributionen, die im Screenshot angegeben sind.
Die Screenshots mit den «grauen Rahmen» wurden aus dem Internet entnommen und dienen als Beispiele für Desktop-Layouts aus vergangenen Jahren.
Also, fangen wir an.
Die grundlegenden Komponenten der Grafik
Ich werde drei Hauptkomponenten hervorheben und sie in der Reihenfolge auflisten, in der sie beim Systemstart geladen werden:
- DM (Display-Manager);
- Display-Server;
- DE (Desktop-Umgebung).
Zusätzlich als wichtige Unterpunkte zur Desktop-Umgebung:
- Apps-Manager / Launcher / Switcher (Startknopf);
- WM (Fenster-Manager);
- verschiedene Software, die zusammen mit der Desktop-Umgebung bereitgestellt wird.
Weitere Details zu jedem Punkt.
DM (Display-Manager)
Die erste Anwendung, die beim Start der „Grafik“ gestartet wird, ist der DM (Display-Manager), der für folgende Hauptaufgaben verantwortlich ist:
- zu fragen, welche Benutzer ins System gelassen werden, und die Authentifizierungsdaten (Passwort, Fingerabdruck) anzufordern;
- auszuwählen, welche Desktop-Umgebung geladen werden soll.
Derzeit werden in verschiedenen Distributionen weit verbreitet folgende verwendet:
- (hat ersetzt ),
- ,
- ,
- .
- Außerdem kann Fly-DM (verwendet in AstraLinux) erwähnt werden.
Eine aktuelle Liste der vorhandenen DMs wird in




Es ist wichtig zu beachten, dass in den folgenden Screenshots dasselbe Display-Manager LightDM verwendet wird, jedoch in verschiedenen Distributionen (die Namen der Distributionen sind in runden Klammern angegeben). Schätzen Sie, wie unterschiedlich dieser DM aufgrund der Designarbeit verschiedener Distributionen aussehen kann.





Das Wesentliche in dieser Vielfalt ist, dass es eine Anwendung gibt, die für den Start der Grafik und den Zugang des Benutzers zu dieser Grafik verantwortlich ist, und es gibt verschiedene Implementierungen dieser Anwendung, die sich in ihrem Aussehen und ein wenig in der Funktionalität unterscheiden (Auswahl von Desktop-Umgebungen, Benutzerwahl, Version für sehbehinderte Benutzer, Möglichkeit des Remote-Zugriffs über das Protokoll ).
Display-Server
Ein 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 bedeutet, dass eine Anwendung (zum Beispiel ein Browser oder ein Texteditor), die in der „Grafik“ gerendert wird, nicht wissen muss, wie sie direkt mit den Geräten interagiert, und keine Kenntnisse über Treiber benötigt. Das übernimmt alles das X Window.
Wenn von einem Display Server die Rede ist, war in Linux und auch in Unix lange Zeit die Anwendung oder umgangssprachlich X (Iks).
Derzeit wird in vielen Distributionen X durch .
Es kann auch nützlich sein, zu lesen:
- ,
- ,
- (benötigt für die Remote-Ausführung grafischer Anwendungen, zum Beispiel mit PuTTY).
Lassen Sie uns zunächst X starten und einige grafische Anwendungen darin.
Praxis „Starten von X und Anwendungen darin“
Ich werde alles als neuer Benutzer webinaruser ausführen (es wäre einfacher, aber nicht sicherer, alles als root auszuführen).
- Da X Zugriff auf Geräte benötigt, gebe ich diesen Zugang: Die Liste der Geräte habe ich ermittelt, indem ich die Fehler beim Start von X im Protokoll angesehen habe (/home/webinaruser/.local/share/xorg/Xorg.77.log)
% 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 — starten mit einem "grauen" klassischen Hintergrund, anstelle von dem standardmäßigen schwarzen; * :77 — lege (beliebig im vernünftigen Bereich, aber :0 wird wahrscheinlich bereits für die laufende Grafik verwendet) die Bildschirmnummer fest, ein einzigartiger Identifikator, mit dem mehrere laufende X-Instanzen unterschieden werden können; * vt8 — weist das Terminal an, hier /dev/tty8, auf dem die X-Instanzen angezeigt werden.
- Wir starten die grafische Anwendung:
Dafür legen wir zunächst eine Variable fest, durch die die Anwendung versteht, an welche meiner laufenden X-Instanzen die zu zeichnenden Informationen gesendet werden sollen:
% export DISPLAY=":77"
Die Liste der laufenden X-Instanzen kann so angezeigt werden:
ps -fwwC X
Nachdem die Variable festgelegt ist, können Anwendungen in unsere X-Instanzen gestartet werden — zum Beispiel starte ich die Uhr:
% xclock -update 1 &
% xcalc &
% xeyes -g 200x150-300+50 &

Hauptideen und Erkenntnisse aus diesem Abschnitt:
- Die X-Instanzen benötigen Zugriff auf Geräte: Terminal, Grafikkarte, Eingabegeräte,
- Die X-Server zeigen keine Benutzeroberflächenelemente an – es handelt sich um eine graue (bei der Option „—retro“) bzw. schwarze Fläche in bestimmten Größen (z. B. 1920×1080 oder 1024×768), auf der grafische Anwendungen ausgeführt werden können.
- Anhand der Bewegung des „Cursors“ ist zu erkennen, dass die X-Server die Positionen der Maus verfolgen und diese Informationen an die darauf ausgeführten Anwendungen weitergeben.
- Die X-Server erfassen auch Tastatureingaben und leiten diese Informationen an die Anwendungen weiter.
- Die Variable DISPLAY weist grafischen Anwendungen den Bildschirm zu (jeder X-Server wird mit einer eindeutigen Bildschirmnummer gestartet), in dem die X-Server und damit auch die auf meinem Rechner ausgeführten Anwendungen gezeichnet werden sollen. (Es gibt auch die Möglichkeit, in dieser Variable ein Remote-Gerät anzugeben und die Ausgabe an X-Server zu senden, die auf einem anderen Rechner im Netzwerk ausgeführt werden.) Da die X-Server ohne die Option -auth gestartet wurden, ist kein Verständnis für die Variable XAUTHORITY oder den Befehl xhost erforderlich.
- Grafikanwendungen (oder X-Clients, wie sie genannt werden) werden in X ausgegeben – wobei sie nicht verschoben, geschlossen oder verändert werden können. Die Darstellung erfolgt durch „-g (Breite)x(Höhe)+(VerschiebungVonLinks)+(VerschiebungVonOben)“. Mit einem Minuszeichen entsprechend von der rechten und unteren Kante.
- Zwei Begriffe, die erwähnt werden sollten: X-Server (so werden die X-Systeme genannt) und X-Clients (so wird jede grafische Anwendung, die in X ausgeführt wird, genannt). Es gibt ein kleines Missverständnis in Bezug auf diese Terminologie; viele verstehen sie genau umgekehrt. Wenn ich von der „Client-Maschine“ (in der Terminologie des Remote-Zugriffs) eine Verbindung zu einem „Server“ (in der Terminologie des Remote-Zugriffs) herstelle, um ein grafisches Programm vom Server auf meinem Monitor darzustellen, wird der X-Server auf der Maschine gestartet, wo der Monitor ist (also auf der „Client-Maschine“ und nicht auf dem „Server“), während X-Clients auf dem „Server“ ausgeführt werden, obwohl sie auf dem Monitor der „Client-Maschine“ angezeigt werden.

DE-Komponenten
Als nächstes betrachten wir die Komponenten, aus denen ein Desktop normalerweise besteht.
DE-Komponenten: Startknopf und Taskleiste
Beginnen wir mit dem, was man die „Start“-Taste nennt. Oft handelt es sich dabei um ein separates Applet, das in der „Taskleiste“ verwendet wird. In der Regel gibt es dort auch ein Applet, um zwischen laufenden Anwendungen zu wechseln.

Nachdem ich mir verschiedene Desktop-Umgebungen angesehen habe, würde ich solche Anwendungen unter dem gemeinsamen Begriff „Apps Manager (Launcher/Switcher)“ zusammenfassen, also ein Werkzeug zur Verwaltung von Anwendungen (zum Starten und Wechseln zwischen laufenden Anwendungen). Zudem nenne ich einige Utilities, die Beispiele für Anwendungen dieses Typs sind.
- Es kann in Form der „Start“-Taste in einer klassischen (über die gesamte Länge einer der Bildschirmkanten) „Taskleiste“ kommen:
○ xfce4-panel,
○ mate-panel/gnome-panel,
○ vala-panel,
○ tint2. - Zusätzlich kann man die „MacOS-artigen Taskleisten“ (nicht über die gesamte Länge der Bildschirmkante) herausstellen, obwohl viele Taskleisten in beiden Varianten angezeigt werden können. Hier liegt das Hauptunterschied eher im visuellen Bereich – das Vorhandensein des „Effekts der Vergrößerung von Symbolen beim Hover“.
○ docky,
○ latte-dock,
○ cairo-dock,
○ plank. - Und/oder Dienste, die Anwendungen beim Drücken von „Hotkeys“ starten (in vielen Desktop-Umgebungen ist ein ähnliches Element unbedingt vorhanden und ermöglicht es, eigene Hotkeys einzustellen):
○ sxhkd.
- Es gibt auch verschiedene menüartige „Launcher“ (von engl. Launch):
○ dmenu-run,
○ rofi -show drun,
○ albert,
○ grun.

DE-Komponenten: WM (Fenster-Manager)
WM (Fenster-Manager) ist eine Anwendung, die für die Verwaltung von Fenstern zuständig ist und folgende Möglichkeiten bietet:
- das Verschieben von Fenstern auf dem Desktop (darunter auch das Standardverschieben mit der Alt-Taste über beliebige Teile des Fensters und nicht nur über die Titelleiste);
- das Ändern der Fenstergröße, indem man an den „Rändern des Fensters“ zieht;
- das Hinzufügen eines „Titels“ (title) und von Schaltflächen zum Minimieren/Maximieren/Schließen der Anwendung;
- die Definition, welches Programm im „Fokus“ ist.

Hier sind die bekanntesten aufgelistet (in Klammern, welches DE standardmäßig verwendet):
- (GNOME3),
- (Mate),
- (GNOME2),
- (Cinnamon),
- (KDE),
- (XFCE),
- .

Ich möchte auch die "alten WM mit Elementen von DE" abrufen. Das bedeutet, dass sie neben dem Fenster-Manager Elemente wie den „Start“-Button und die „Taskleiste“ enthalten, die typischer für vollwertige DE sind. Allerdings, welche sind „alt“, wenn sowohl IceWM als auch WindowMaker bereits 2020 ihre aktualisierten Versionen veröffentlicht haben? Korrekt wäre es also nicht, sie als „alt“ zu bezeichnen, sondern eher als „Veteranen“:
- ,
- ,
- , , , ,
- …





Neben den „klassischen“ („stapelbasierten Fenster-Managern“) sollten wir auch speziell erwähnen, , die es ermöglichen, Fenster „wie Fliesen“ über den gesamten Bildschirm zu verteilen. Außerdem gibt es für einige Anwendungen einen separaten Desktop für jede gestartete Anwendung im Vollbildmodus. Das ist für Menschen, die es vorher nicht verwendet haben, etwas ungewohnt, aber da ich selbst schon seit einiger Zeit so eine Benutzeroberfläche benutze, kann ich sagen, dass es ziemlich praktisch ist und man sich schnell an diese Benutzeroberfläche gewöhnt. Danach erscheinen die „klassischen“ Fenster-Manager nicht mehr so komfortabel.
- ,
- ,
- ,
- ,
- ,
- qtile,
- bspwm,
- herbstluftwm,
- …
- twin,
- .

Es ist auch erwähnenswert, das Projekt Das Konzept des „Composite Window Managers“, der Hardwarebeschleunigung für Transparenz, Schatten und verschiedene 3D-Effekte nutzt, ist ein interessantes Thema. Vor etwa 10 Jahren erlebten Linux-Desktopumgebungen einen Boom von 3D-Effekten. Heute nutzen viele Fenster-Manager, die in Desktop-Umgebungen integriert sind, teilweise diese kompositorischen Möglichkeiten. Neu hinzugekommen ist ein Produkt mit ähnlicher Funktionalität wie Compiz unter Wayland.

Eine detaillierte Liste verschiedener Fenster-Manager kann ebenfalls in der .
Komponenten der DE: Weitere
Es ist auch wichtig, die folgenden Desktop-Komponenten zu erwähnen (hier verwende ich etablierte englische Begriffe zur Beschreibung der Anwendungsarten — dies sind keine Namen der Anwendungen selbst):
- Applets:
- Software (Widget-Toolkit) — oft wird mit der Umgebung ein gewisser „Minimalumfang“ an Software bereitgestellt:
DE (Desktop-Umgebung)
Die oben genannten Komponenten bilden die sogenannte "Desktop-Umgebung". Oft werden alle ihre Komponenten unter Verwendung derselben Grafikbibliotheken und nach denselben Designprinzipien entwickelt. Dadurch wird zumindest ein einheitlicher Stil für das Erscheinungsbild der Anwendungen gewahrt.
Hier können derzeit bestehende Desktop-Umgebungen hervorgehoben werden:
Die am weitesten verbreiteten sind GNOME und KDE, gefolgt von XFCE.

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

Es gibt sogar einige interessante Beispiele aus der Geschichte: Von 2003 bis 2007 wurde für Linux ein „3D-Desktop-Design“ mit dem Namen „Project Looking Glass“ von der Firma Sun entwickelt. Ich habe persönlich mit diesem Desktop experimentiert, da die Nutzung recht schwierig war. Dieses „3D-Design“ wurde in Java programmiert, zu einer Zeit, als es noch keine 3D-fähigen Grafikkarten gab. Daher wurden alle Effekte vom Prozessor berechnet, und der Computer musste sehr leistungsstark sein, da sonst alles langsam lief. Aber es sah wirklich schön aus. Die dreidimensionalen Anwendungsfenster konnte man drehen oder wenden. Man konnte sich in einem Zylinder mit einem 360-Grad-Panorama-Hintergrund umsehen. Es gab einige ansprechende Anwendungen: zum Beispiel Musik hören in Form von „CD-Wechseln“, und so weiter. Auf YouTube kann man sich darüber informieren allerdings wird die Qualität dieser Videos wahrscheinlich schlecht sein, da es in diesen Jahren keine Möglichkeit gab, Videos in hoher Qualität hochzuladen.

Leichtgewichtiger Desktop. Das Projekt existiert seit 1996. In den letzten Jahren hat es an Beliebtheit gewonnen, im Gegensatz zu den schwereren KDE und GNOME, die auf vielen Distributionen eine leichte und "klassische" Desktop-Oberfläche benötigen. Es bietet zahlreiche Anpassungsmöglichkeiten und eine Vielzahl eigener Programme: Terminal (xfce4-terminal), Dateimanager (thunar), Bildbetrachter (ristretto), Texteditor (mousepad).

Wird in der Distribution „Elementary OS“ verwendet. Hier kann man sagen, dass es „Desktops“ gibt, die innerhalb einer bestimmten Distribution entwickelt und genutzt werden und in anderen Distributionen kaum zum Einsatz kommen (wenn man nicht sagt, „überhaupt nicht verwenden“). Zumindest haben sie bisher nicht an Popularität gewonnen und konnten die Mehrheit der Nutzer von den Vorteilen ihres Ansatzes überzeugen. Pantheon hat sich das Ziel gesetzt, eine Benutzeroberfläche zu schaffen, die macOS ähnelt.

Variante mit Dock-Leiste:

Starker Fokus auf grafische Effekte und Widgets (schon seit der Zeit, als andere Desktop-Umgebungen keine Widgets auf dem Desktop hatten, wie z. B. Kalender/Uhr). Verwendet eigene Bibliotheken. Bietet eine große Sammlung eigener "schöner" Anwendungen: Terminal (Terminology), Video-Player (Rage), Foto-Viewer (Ephoto).

Dies ist ein Fork von Enlightenment17, der im BodhiLinux-Distribution verwendet wird.

Ursprünglich eine "klassische" Desktop-Oberfläche, geschaffen als Gegenpol zu KDE, das auf der QT-Bibliothek basierte und zu der Zeit unter einer Lizenz verbreitet wurde, die für kommerzielle Distributionen nicht sehr praktisch war.

Seit der dritten Version wird GNOME mit der GNOME Shell ausgeliefert, die ein "nicht-klassisches Aussehen" hat, was nicht allen Nutzern gefiel (jede drastische Änderung in der Benutzeroberfläche wird von den Nutzern schwer akzeptiert). Dies führte zur Entstehung von Fork-Projekten, die die Entwicklung dieser Desktop-Umgebung im "klassischen" Stil fortsetzen: MATE und Cinnamon. Wird standardmäßig in vielen kommerziellen Distributionen verwendet. Verfügt über eine große Anzahl an Einstellungen und eigenen Anwendungen.

Basierend auf GNOME2 entwickelt, wird diese Desktop-Umgebung weiterhin weitergeführt. Sie bietet zahlreiche Anpassungen und Abwandlungen von Anwendungen, die bereits in GNOME2 verwendet wurden (es werden neue Namen verwendet), um Verwirrung mit ihren neuen Versionen für GNOME3 zu vermeiden.

Ein Fork von GNOME Shell, der den Benutzern eine Benutzeroberfläche im 'klassischen' Stil bietet (wie es in GNOME2 der Fall war).
Bietet viele Anpassungen und die gleichen Anwendungen wie GNOME Shell.

Ein GNOME-Fork im 'klassischen' Stil, der im Rahmen der Distribution Solus entwickelt wurde, jetzt aber auch als eigenständiger Desktop in verschiedenen anderen Distributionen angeboten wird.

(oder, wie es oft genannt wird, einfach KDE)
Eine Desktop-Umgebung, die im Rahmen des KDE-Projekts weiterentwickelt wird.
Bietet eine enorme Anzahl von Anpassungen, die dem durchschnittlichen Benutzer über die grafische Benutzeroberfläche zugänglich sind, sowie viele grafische Anwendungen, die im Rahmen dieser Desktop-Umgebung entwickelt werden.

Im Jahr 2008 veröffentlichte KDE seine neue Umsetzung von KDE Plasma, bei der die Desktop-Engine stark überarbeitet wurde. Genau wie bei GNOME/MATE fand nicht jeder KDE-Fan das gut. 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) entwickelt wurde. Sie bietet viele Anpassungsmöglichkeiten und hat eine ansprechende (obwohl das subjektiv ist) sowie 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.

Eine leichtgewichtige Desktop-Umgebung. Wie einige der vorherigen Beispiele wurde auch diese mit Qt entwickelt. Sie ist faktisch eine Fortsetzung des LXDE-Projekts und das Ergebnis einer Fusion mit dem Projekt Razor-qt.
Wie Sie sehen können, kann der Desktop in Linux sehr unterschiedlich aussehen, und für jeden Geschmack gibt es die passende Benutzeroberfläche: von ästhetisch ansprechenden mit 3D-Effekten bis zu minimalistischen, von "klassischen" bis zu außergewöhnlichen Designs, von ressourcenintensiven bis hin zu leichtgewichtigen, für große Bildschirme sowie Tablets/Smartphones.
Ich hoffe, ich konnte Ihnen einen Eindruck davon vermitteln, aus welchen Hauptkomponenten die Grafik und der Desktop in Linux bestehen.
Das Material für diesen Artikel wurde im Juli 2020 in einem Webinar getestet. Sie können es sich hier ansehen. .
Das ist alles. Ich hoffe, es war nützlich. Wenn Sie Fragen oder Kommentare haben, schreiben Sie mir. Ich freue mich darauf, zu antworten. Und besuchen Sie die !
Quelle: habr.com
