私が覚えている限り、以下の用語は何度も耳にしてきました。これらの用語とそれらの相互関係を説明する情報源を見つけようとしても、まったく存在しません。控えめに言っても、混乱を招きます。
誰か、次の用語が互いにどのように関連または相関しているかを、5 歳の子供に説明するように私に説明してもらえますか。
- ノーム
- 翻訳
- 団結
- Xorg
- x11
- x サーバー
- スタートx
- パンテオン
- GTK
- QT
- ウィンドウマネージャ
答え1
Gnome、KDE、Unity、パンテオン
Gnome、KDE、Unity、Pantheon はデスクトップ環境です。
デスクトップ環境は、さまざまなツールで構成されています。たとえば、ログイン マネージャー、ウィンドウ マネージャー、アプリケーション ランチャー、メニュー、ターミナル エミュレーター、ファイル マネージャー、Web ブラウザー、エディター、システム構成用のグラフィカル ツール、その他多数のユーティリティなどです。必要なものがすべて揃った完全なパッケージです。
画像元レディット:
GTK と QT
GTK と QT はソフトウェアを開発するためのツールキット/フレームワークです。たとえば、Gnome デスクトップ環境用に開発された多くのツールは、GUI を作成するために GTK を使用しています。すべてを自分で書く代わりに、これらを使用して開発をスピードアップし、同時に他のすべてのプログラムが同じ環境で使用している標準フレームワークを使用してそれに従うことができます。
X、X11、Xorg
X はフレームワークであり、プロトコルとして参照することもできます。X11 はこのプロトコルの最新バージョンであり、Xorg (Xorg サーバー: X はサーバー クライアント構造を使用します) は x11 の実装です。これは HTTP とブラウザーのようなものです。HTTP はプロトコルであり、HTTP2 は最新バージョンであり、Web サーバーと通信するためにこのプロトコルを使用している Web ブラウザーは何らかの方法でこれを実装しています。
Wikipediaより:
X は、ディスプレイ デバイス上でウィンドウを描画および移動し、マウスとキーボードで操作する GUI 環境の基本的なフレームワークを提供します。
単に描画したり表示したりできるようにしてくれるだけでなく、必要なドライバーも多数含まれています。
ただし、X でもその機能を使用するにはウィンドウ マネージャーが必要です。下の図では、twm
ウィンドウ マネージャーと、xterm
X セッションを実行しているその他のものが表示されています。ウィンドウ マネージャーの詳細については、最後のセクションをお読みください。
スタートx
startx
グラフィカル環境を起動し、X セッションを初期化するスクリプトです。
ウィンドウマネージャ
ウィンドウ マネージャーは主にデスクトップ環境の一部であり、完全なデスクトップ環境の代わりに使用することもできます。i3wm、awesome、openbox、fluxbox、blackbox、xfwm4、compiz など、多くのウィンドウ マネージャーが利用可能です。
ウィンドウ マネージャーは、ウィンドウの動作、外観、要素、タイトルと既定のボタンの表示場所、ドラッグ/サイズ変更/閉じた場合の動作などを制御します。ウィンドウ マネージャーは、X や Wayland などのディスプレイ サーバーを使用して、これらを実現します。
写真はWikipediaより。
答え2
ELI5の説明:
- Xorg、x11、x サーバーはすべて同じものです。基本的には GUI を可能にする巨大なソフトウェアです。X サーバーが実行されていない => GUI はありません。
- ウィンドウ マネージャー - ウィンドウを美しくするものです。X サーバーは、最低限の機能を提供します。
startx
はコマンドです。昔はこれで GUI を起動していました。- Gnome、KDE、Unity、Pantheon はすべてグラフィカル シェルです。X サーバーは必要最低限の GUI を提供しますが、グラフィカル シェルはアプリケーションに特定の外観と特定の動作 (たとえばAlt+Tabなど) を提供します。ウィンドウ マネージャーと連携して動作します。多くの場合、テキスト エディター、Web ブラウザーなどの追加ソフトウェアがバンドルされています。Unity については訂正が必要です。これは実際には Compiz ウィンドウ マネージャーのプラグインにすぎず、Unity がクラッシュして、ランチャーやトップ パネルのない必要最低限のデスクトップが残されたときに明らかになります。
- GTK、QT - グラフィカル ツールキット。基本的には GUI プログラミングの「言語」です。より具体的には、これらは「ライブラリ」であり、Python や C++ などの Linux デスクトップの一般的な言語のほとんどは、GUI アプリの作成にこれらのライブラリを使用します。