Xorg 和 Gnome/KDE/Xfce 的區別
我想了解更多關於 UNIX 系統的資訊,我想我有一個非常直接的問題。我想我知道 X 的用途:它為應用程序提供了一個標準來展示其 UI(以及其他內容)。
但是為什麼需要 Gnome/KDE 以及它們與 X 有什麼關係呢?我認為他們使用 X 作為應用程序和 GUI 之間的某種介面,因此 GUI 是可定制的,而界面在應用程序之間保持相同。
這是真的還是 Gnome/KDE 獨立於 X?
(我正在研究 GNOME 和 X 的關係。我想分享一些我的理解。我將盡可能以合乎邏輯的方式呈現它。我盡量使措辭準確。)
1. GUI由什麼組成?
我想每個人都知道 GUI 是什麼。
下面是 GUI 基本組件的圖示。
視窗系統只是一種為使用者界面實現 WIMP(視窗、圖示、菜單、指針)範例的 GUI。
這是 Linux 和 Windows 系統的主要視窗系統列表。
視窗系統的關鍵組件是顯示伺服器(或視窗伺服器、合成器)。任何在視窗中顯示其 GUI 的應用程序都是顯示伺服器的客戶端。
由於涉及到客戶端和伺服器,所以需要通信協議,當然也稱為顯示伺服器協議。
顯示伺服器是一個程序,其主要任務是協調其客戶端與作業系統的其餘部分、硬體以及彼此之間的輸入和輸出。它提供了圖形硬體的抽象,供圖形界面的更高級別(毫不奇怪,GUI 系統具有分層設計)元素(如視窗管理器)使用。
有幾個可用的顯示伺服器。如:
- X.Org 伺服器(主要用於 *nix)
- Wayland(主要用於 *nix)
- Mir(主要用於 *nix)
- SurfaceFlinger(適用於 Google Android。)
- Quartz Compositor(這是 Apple MacOS 使用的。)
- 桌面視窗管理器(這是 Microsoft Windows 使用的。)
2. X 到底是什麼意思?
X、X11 和 X Window System 是同義詞。它們都代表視窗系統。
如上所述,X 視窗系統的關鍵組件顯示伺服器是X.Org 伺服器。
有時,X.Org 伺服器也簡稱為 X 伺服器。
任何執行並呈現其 GUI 的應用程序都是顯示伺服器的****客戶端。顯示伺服器和它的客戶端通過通信協議相互通信,該協議通常被稱為顯示伺服器協議,顯示伺服器是客戶端和使用者之間的**中介。**顯示伺服器從核心接收所有輸入,核心從所有附加的輸入設備(例如鍵盤、指針設備或觸摸屏)接收這些輸入,並將其傳輸到正確的客戶端。顯示伺服器還負責將客戶端輸出到電腦監視器。顯示伺服器協議可以是網路能力,甚至是網路透明的。(所以你可以看到,它本質上只是關於數據流和路由,可視數據仍然是數據。)
並根據這裡:
X.Org 伺服器是為其他程序提供顯示和使用者輸入服務的程序。相比之下,文件伺服器為其他程序提供對文件儲存設備的訪問權限。文件伺服器通常位於遠端位置,您可以從您所在的機器上使用文件伺服器的服務。相反,X 伺服器通常在您所在的機器上執行;顯示和使用者輸入服務可能會被您機器上執行的程序以及遠端機器上執行的程序請求。
所以X視窗系統由以下部分組成:
- 顯示伺服器
- 顯示伺服器協議
- 一些用於開發的庫
- 和其他東西
根據這裡:
X(我認為的視窗系統)為 GUI 環境提供了基本框架:在顯示設備上繪製和移動視窗以及與滑鼠和鍵盤互動。X 不強制要求使用者界面——這是由單獨的程序處理的。因此,基於 X 的環境的視覺樣式變化很大。不同的程序可能會呈現截然不同的界面。
換句話說,X 視窗系統僅賦予程序執行基本操作的能力,例如繪製/移動視窗和輸入互動。X 不強制執行視覺樣式。**它只是提供了一種繪製方式,而不是繪製什麼。**所以你所說的“ ……它為應用程序提供了一個標準來展示他們的 UI…… ”是不正確的。
3. 什麼是視窗管理器?
Gnome/Xfce/KDE 都是視窗管理器。因為它們都在 X 顯示伺服器上工作,所以它們都被稱為**X 視窗管理器**。視窗管理器與 X 伺服器和 X 客戶端協作。您可以在上面的 GUI 組成圖中看到視窗管理器所在的位置。以下是不同類型的視窗管理器。
4. 什麼是 GNOME/KDE 桌面
GNOME 和 KDE 桌面都是 Linux桌面環境。桌面環境是在作業系統之上執行的一組程序,它們共享一個通用的 GUI。
但是就像我上面提到的,X11 作為一個顯示伺服器,只是通過一些庫,比如 Xlib 或 XCB 來提供基本的繪圖能力。通過此類庫直接連接 X11 的應用程序可以具有完全不同的視覺風格。
那麼如何創建一個通用的GUI呢?小元件工具包來了。例如GTK+和Qt。它們在 Wayland 和 X11視窗系統中很流行。
GNOME 使用 GTK+。
KDE 使用 Qt。
這是 X Window System 桌面環境的比較。
5.什麼是gdm3、lightdm、kdm
它們都是顯示管理器,如“dm”部分所示。
就個人而言,我認為顯示管理器是一個具有誤導性的名稱。最好叫**圖形登錄管理器**。它通常是一個圖形使用者界面,在引導過程結束時顯示,代替預設 shell。
不同的桌面環境使用不同的登錄管理器來保持視覺風格一致。
- GNOME 使用 gdm3。
- xfce 使用 lightdm
- KDE 使用 kdm
顯示管理器可以從同一台或另一台電腦上啟動 X 伺服器上的會話。
總結一下……希望我沒有過度闡述……
- GUI 可以有多種類型。視窗系統是一種 GUI。
- 任何視窗系統的關鍵組件通常稱為**顯示伺服器**。
- 一個視窗系統,例如** (https://en.wikipedia.org/wiki/X_Window_System)**,抽象了硬體和 IO。提供繪製、移動視窗、IO處理等基礎服務。
- 視窗管理器,例如Gnome、Xfe、KDE,在顯示管理器之上工作,並提供您所看到的外觀和感覺。
- 桌面環境是一組共享共同視覺風格的應用程序。
- 顯示管理器,或圖形登錄管理器,提供圖形登錄界面。
我畫了一個粗略的概念圖。作業系統上面的 3 個部分是非常可定制的。這就是為什麼會出現如此多的靈活性(混亂)。
添加 1 - 2018 年 9 月 21 日下午 1:26
這裡有一些關於 QT 和 GTK 的討論(雖然可能與這個執行緒無關…… )