Linux では、グラフィカル ユーザー インターフェイスはオペレーティング システムの一部ではありません。ほとんどの Linux デスクトップに見られるグラフィカル ユーザー インターフェイスは、X Window System と呼ばれるソフトウェアによって提供されます。このソフトウェアは、画面、キーボード、およびポインター デバイスを処理するデバイスに依存しない方法を定義します。
X Window は通信用のネットワーク プロトコルを定義しており、このプロトコルを「話す」方法を知っているすべてのプログラムがそれを使用できます。このプロトコルを使いやすくする Xlib と呼ばれる C ライブラリがあるため、Xlib は一種の ネイティブ GUI API。 Xlib は、X Window サーバーにアクセスする唯一の方法ではありません。 XCBもあります。
Xlib の上に構築された GTK+ (GNOME で使用) や Qt (KDE で使用) などのツールキット ライブラリは、プログラミングが容易であるため使用されます。たとえば、アプリケーション間で一貫したルック アンド フィールを提供したり、ドラッグ アンド ドロップを使いやすくしたり、最新のデスクトップ環境に標準のコンポーネントを提供したりします。
X が内部的に画面に描画する方法は、実装によって異なります。 X.org には、デバイスに依存しない部分とデバイスに依存する部分があります。前者はウィンドウなどの画面リソースを管理し、後者はグラフィック カード ドライバー (通常はカーネル モジュール) と通信します。通信は、直接メモリ アクセスを介して、またはカーネルへのシステム コールを介して行われます。ドライバーは、コマンドをカード上のハードウェアが理解できる形式に変換します。
2013 年現在、Wayland と呼ばれる新しいウィンドウ システムが使用可能になり始めており、多くのディストリビューションがいずれそれに移行すると述べていますが、まだ明確なスケジュールはありません。このシステムは OpenGL/ES API に基づいています。これは、将来的に OpenGL が Linux の「ネイティブ GUI API」になることを意味します。 GTK+ と QT を Wayland に移植する作業が行われているため、現在人気のあるアプリケーションとデスクトップ システムは最小限の変更で済みます。移植できないアプリケーションは、OS X が Xquartz を介して X11 アプリをサポートするように、X11 サーバーを介してサポートされます。 GTK+ への移植は 1 年以内に完了する予定ですが、Qt 5 はすでに Wayland を完全にサポートしています。
さらに複雑なことに、Ubuntu は、Wayland で認識されている問題のために、Mir と呼ばれる新しいシステムを開発していると発表しました。このウィンドウ システムも OpenGL/ES API に基づいています。
Linux はカーネルであり、完全なオペレーティング システムではありません。 Linux 上で実行され、ウィンドウを提供するさまざまなウィンドウ システムと GUI があります。通常、X11 は Linux ディストリビューションで使用されるウィンドウ システムです。
Wayland は、主に「将来の X11 キラー」と呼ばれているため、言及する価値があります。
また、Android やその他の一部のモバイル オペレーティング システムには Linux カーネルがあっても X11 が含まれていないため、その意味で X11 はすべての Linux システムにネイティブではないことに注意してください。
クロスプラットフォームであることは、ネイティブであることとは何の関係もありません。 Cocoa は GNUStep を介して他のプラットフォームにも移植されていますが、依然として OS X / macOS にネイティブです。