Bei Linux ist die grafische Benutzeroberfläche kein Bestandteil des Betriebssystems. Die grafische Benutzeroberfläche, die auf den meisten Linux-Desktops zu finden ist, wird von einer Software namens X Window System bereitgestellt, die einen geräteunabhängigen Umgang mit Bildschirmen, Tastaturen und Zeigegeräten definiert.
X Window definiert ein Netzwerkprotokoll für die Kommunikation, und jedes Programm, das dieses Protokoll „sprechen“ kann, kann es verwenden. Es gibt eine C-Bibliothek namens Xlib, die es einfacher macht, dieses Protokoll zu verwenden, also ist Xlib so etwas wie das native GUI-API. Xlib ist nicht die einzige Möglichkeit, auf einen X Window Server zuzugreifen; es gibt auch XCB.
Toolkit-Bibliotheken wie GTK+ (verwendet von GNOME) und Qt (verwendet von KDE), die auf Xlib aufbauen, werden verwendet, weil sie einfacher zu programmieren sind. Beispielsweise geben sie Ihnen ein konsistentes Aussehen und Verhalten in allen Anwendungen, erleichtern die Verwendung von Drag-and-Drop, bieten Standardkomponenten für eine moderne Desktop-Umgebung und so weiter.
Wie X intern auf dem Bildschirm zeichnet, hängt von der Implementierung ab. X.org hat einen geräteunabhängigen Teil und einen geräteabhängigen Teil. Ersteres verwaltet Bildschirmressourcen wie Windows, während letzteres mit dem Grafikkartentreiber, normalerweise einem Kernelmodul, kommuniziert. Die Kommunikation kann über direkten Speicherzugriff oder über Systemaufrufe an den Kernel erfolgen. Der Treiber übersetzt die Befehle in eine Form, die die Hardware auf der Karte versteht.
Ab 2013 beginnt ein neues Fenstersystem namens Wayland nutzbar zu werden, und viele Distributionen haben angekündigt, dass sie irgendwann darauf migrieren werden, obwohl es noch keinen klaren Zeitplan gibt. Dieses System basiert auf OpenGL/ES API, was bedeutet, dass OpenGL in Zukunft die "native GUI API" in Linux sein wird. Es wird daran gearbeitet, GTK+ und QT auf Wayland zu portieren, sodass aktuelle beliebte Anwendungen und Desktop-Systeme nur minimale Änderungen erfordern würden. Die Anwendungen, die nicht portiert werden können, werden über einen X11-Server unterstützt, ähnlich wie OS X X11-Apps über Xquartz unterstützt. Die GTK+-Portierung wird voraussichtlich innerhalb eines Jahres abgeschlossen sein, während Qt 5 bereits vollständige Wayland-Unterstützung bietet.
Um die Sache noch komplizierter zu machen, hat Ubuntu angekündigt, ein neues System namens Mir zu entwickeln, da es Probleme mit Wayland gibt. Dieses Fenstersystem basiert ebenfalls auf der OpenGL/ES-API.
Linux ist ein Kernel, kein vollständiges Betriebssystem. Es gibt verschiedene Windowing-Systeme und GUIs, die auf Linux laufen, um Windowing bereitzustellen. Typischerweise ist X11 das Fenstersystem, das von Linux-Distributionen verwendet wird.
Wayland ist auch erwähnenswert, da es meist als "zukünftiger X11-Killer" bezeichnet wird.
Beachten Sie auch, dass Android und einige andere mobile Betriebssysteme X11 nicht enthalten, obwohl sie einen Linux-Kernel haben, sodass X11 in diesem Sinne nicht für alle Linux-Systeme nativ ist.
Plattformübergreifend zu sein hat nichts damit zu tun, nativ zu sein. Cocoa wurde über GNUStep auch auf andere Plattformen portiert, ist aber immer noch nativ für OS X / macOS.