X11 指南/簡介

本書,華夏公益教科書 X11 指南,講述的是X 視窗系統。本書的目標讀者是 X11 使用者。
X11 是大多數 Unix 或類 Unix 系統的圖形環境,包括 *BSD 和 GNU/Linux;它提供對螢幕、鍵盤和滑鼠的訪問。X11 是 Unix 和 Linux 的圖形驅動程式。你是否在這些系統上使用 Firefox、OpenOffice.org、GNOME、GIMP 或 KDE?那麼你就是 X11 使用者。
本書講述的是X 視窗系統。一些使用者將它描述為 Unix 和 Linux 的圖形驅動程式。
本章將解釋 X11 的基礎知識,包括
- 為什麼有這麼多的視窗管理器和桌面環境?
- 什麼是控制檯,X 如何提供對它的訪問?
- X 伺服器和 X 客戶端的目的是什麼?
- 不同的 X 客戶端可以進行互動操作嗎?

大多數 Unix 和 Linux 發行版都提供命令列和 X 視窗系統。在 Mac OS X 中,“X”是版本號“十”;但是,Apple 和其他各方為 Mac OS X 提供 X11,這允許你同時使用 X11 和原生 Macintosh 視窗系統。
然而,僅僅因為許多系統提供 X 視窗系統,並不意味著它總是看起來一樣。一些 X 使用者使用 GNOME 桌面環境,一些使用 KDE 桌面環境。一些在使用 GNOME 和 KDE 程式的同時使用 Xfce 桌面環境。這並非所有 *BSD 使用者都使用 GNOME,所有 Linux 使用者都使用 KDE;相反,*BSD 和 Linux 使用者都分為使用 GNOME、使用 KDE、使用其他環境和不執行 X 的使用者。
還有一些華夏公益教科書,使用 GNOME 和 使用 KDE,記錄了這兩個環境。
X 有很多不同的 視窗管理器。大多數視窗周圍都有裝飾,它們提供了移動、關閉、調整大小和其他組織視窗的功能。但是,這些裝飾在每臺執行 X 的計算機上都不相同。
視窗管理器是那些繪製這些裝飾的程式。大多數視窗管理器會繪製標題欄,但有些不會。一些視窗管理器沒有進行任何裝飾,但會提供管理視窗的選單或鍵盤快捷鍵。一些視窗管理器允許你疊加視窗、在視窗之間切換以及臨時隱藏視窗。
一些視窗管理器比 GNOME 和 KDE 都要老,一些使用者仍然更喜歡輕量級視窗管理器,而不是佔用更多記憶體和計算資源的重量級桌面環境。許多 X11 使用者執行的是Metacity,GNOME 視窗管理器,或者KWin,KDE 視窗管理器。
X 的非凡之處在於,有許多視窗管理器可供選擇。(本書列出了至少 20 個視窗管理器。)作為使用者,你可以選擇要安裝、配置和使用的視窗管理器。你可以擁有自己的自定義環境,除非你無法安裝或配置你想要的視窗管理器。
然而,儘管 X 僅允許一個視窗管理器,但它允許多個視窗。與 Mac 或 Windows 不同,X11 不提供標準介面或配色方案,因此每個視窗可能以不同的方式繪製其選單、捲軸和按鈕。至少視窗裝飾在每個視窗上都將相同。例如,可以同時在一個 X 伺服器上執行 Firefox 和 OpenOffice.org,以及來自 GNOME 和 KDE 的程式,因為每個程式都有自己的視窗或多個視窗。但是,如果你執行的是 Metacity,那麼你就不能同時執行 KWin,因為這兩個是視窗管理器,而不是桌面環境。

在內部,X 視窗系統有一個特殊的協議——X 協議的第 11 版。此協議的作用是為像 Firefox、OpenOffice.org、Nautilus 和 Konqueror 這樣的程式提供控制檯訪問許可權。
每臺家用電腦或工作站都有一臺控制檯,它包含螢幕、滑鼠和鍵盤。事實上,有些控制檯有多個螢幕和多個輸入裝置,例如兩個滑鼠或一個滑鼠和觸控板。通常,Unix 核心僅提供一個控制檯終端。核心載入一個純文字影片驅動程式和一個鍵盤驅動程式,並建立一個純文字終端,適用於執行命令列(如 Bourne shell)和一些純文字程式(如 vi 和 NetHack)。
如果我們想繪製圖形或使用滑鼠,我們必須執行一個知道如何執行此操作的程式。我們啟動一個名為X 伺服器的 X11 程式。它載入一個圖形影片驅動程式、一個鍵盤驅動程式和一個滑鼠驅動程式。然後,X 伺服器允許程式建立一個視窗。視窗是一個矩形區域,程式會顯示在其中;你可以在視窗中輸入和點選。X11 允許程式共享控制檯,因為它允許螢幕上有多個視窗。(例如,你可能打開了兩個 Firefox 視窗和一個 OpenOffice.org 視窗。)這與 Mac 和 Windows 的功能相同。
當你啟動 X 伺服器時,它會將螢幕更改為灰色並建立一個滑鼠游標。然後它等待。就像一個 Web 伺服器等待 Web 瀏覽器連線,或者一個 SSH 伺服器等待遠端登入一樣,X 伺服器等待 X 客戶端連線。一個X 客戶端是一個程式,例如 Firefox 和 OpenOffice.org,它希望在螢幕上建立一個或多個視窗。
與 Mac 或 Windows 不同,X 伺服器可以接受網路連線。當你在一臺計算機上使用 X 伺服器時,你可以 遠端登入 到另一臺計算機,然後要求它連線到你的 X 伺服器。這讓你能夠看到並使用其他計算機上的程式,即使這些計算機在不同的作業系統上使用 X。
當一個 X 客戶端連線到 X 伺服器(在同一臺或不同的計算機上)時,它會使用X 協議的第 11 版進行通訊。這是客戶端告訴伺服器要繪製什麼,而伺服器告訴客戶端鍵盤和滑鼠輸入是什麼的方式。許多 X 客戶端永遠不需要了解 X 伺服器的硬體或作業系統,因為 X 伺服器控制著控制檯。像 Firefox 和 OpenOffice.org 這樣的客戶端只需要知道 X 協議。
X11 程式共享剪貼簿和字型,但有時它們之間沒有太多共同點。這導致了不僅在外觀上,而且在功能上的不相容性:應用程式之間的拖放有時是不可能的,而剪貼簿的使用是不一致的。
現在,在 freedesktop.org 和其他地方的努力下,一些不同桌面環境的程式可以協作。桌面環境,如 GNOME 和 KDE,以及一些使用較少的環境,如 Xfce,提供彼此良好協作的應用程式。這些努力的結果包括
- 使用剪貼簿的標準規則
- 視窗管理器和應用程式之間的協作
- GNOME、KDE 和其他視窗之間的拖放
- 對 X 伺服器的改進