X Window System 的本質#
X Window System(簡稱 X11 或 X)是 Linux 圖形介面的底層架構。與一般直覺不同,它採用的是 Client-Server 架構,而且角色定義是「反過來」的。
X Server 與 X Client#
X Server#
X Server 負責管理硬體——螢幕、鍵盤、滑鼠。它接收來自 X Client 的繪圖請求,並在螢幕上呈現。
X Client#
X Client 是應用程式——瀏覽器、文字編輯器、終端機。它不直接操作螢幕,而是將繪圖指令傳送給 X Server。
這裡的「Server/Client」容易混淆:在你面前的電腦運行的是 X Server(提供硬體資源),而應用程式是 X Client(請求使用硬體)。這與一般「Server 在遠端」的直覺相反。但如果你想成「螢幕是服務提供者,應用程式是服務請求者」,就很合理了。
遠端顯示#
X 的 Client-Server 分離架構帶來了一個強大的特性:X Client 和 X Server 可以在不同的機器上。你可以在遠端伺服器上執行圖形應用程式(X Client),讓它的畫面顯示在你本地的螢幕(X Server)上。
這就是 SSH X11 Forwarding(ssh -X)的原理。
Window Manager#
**Window Manager(視窗管理器)**是一個特殊的 X Client,負責管理所有視窗的:
- 外觀(標題列、邊框)
- 行為(移動、縮放、最小化、最大化)
- 工作區(虛擬桌面)
常見的 Window Manager:Mutter(GNOME)、KWin(KDE)、i3(平鋪式)。
Display Manager#
Display Manager 提供圖形化的登入畫面,負責:
- 使用者身份驗證
- 啟動使用者的桌面環境
- 管理多個顯示會話
常見的 Display Manager:GDM(GNOME)、SDDM(KDE)、LightDM。
X 的啟動流程#
startx腳本偵測環境並呼叫xinitxinit啟動 X Server- X Server 初始化硬體(顯示卡、螢幕解析度)
- 啟動 Window Manager 和桌面環境
- 使用者的 X Client 應用程式開始運行
系統可以同時運行多個 X 的實例,每個佔用一個不同的 display(
:0、:1等)。這在多使用者共用一台機器時有用。
X 的設定#
X 的設定檔 /etc/X11/xorg.conf 包含多個區段:
- Device:顯示卡設定
- Monitor:螢幕參數
- Screen:Device + Monitor 的組合,定義解析度與色深
- InputDevice:鍵盤與滑鼠設定
- Module:載入的擴充模組
- Files:字型路徑
在現代 Linux 中,X 通常能自動偵測硬體並正確設定,不需要手動編輯
xorg.conf。只有在自動偵測結果不理想(如多螢幕配置、特殊解析度)時才需要手動調整。
Wayland:X 的繼承者#
X Window System 的設計始於 1984 年,已經超過 40 年。Wayland 是為了取代 X 而開發的新一代顯示協議:
- 架構更簡潔:Compositor 同時扮演 Server 和 Window Manager 的角色
- 更好的安全性:應用程式無法竊聽其他視窗的輸入
- 更好的效能:減少不必要的中間層
許多現代發行版(Fedora、Ubuntu)已經預設使用 Wayland。但 X11 的相容性仍然很重要——許多舊的應用程式和遠端顯示場景仍需要 X11。XWayland 提供了在 Wayland 環境中運行 X11 應用的相容層。