5.2. 瞭解 X 的世界
前一頁 | 章 5. X Window 視窗系統 | 下一頁

## 5.2. 瞭解 X 的世界

第一次接觸 X 的人，大概都會有些震撼，尤其是熟悉其他 GUI 介面(像是 Microsoft® Windows® 或 Mac OS®)的使用者。

雖然 X 各元件的所有細節及運作方式，並不是必須要知道的。 但對它們有些基本概念會更容易上手。

### 5.2.1. 為何叫做 X？

X 並非 UNIX® 上第一套視窗系統，但它卻是最廣為流傳運用。 原本的 X 研發團隊在研發 X 之前有開發另一套視窗系統。 那套系統叫做 “W”(取 “Window” 的第一個字)。 而 X 則是 W 之後的下一個羅馬字母。

X 亦被稱之為 “X”、“X Window System”、 “X11”，以及其他一些詞彙。 使用 “X Windows” 這字眼來稱呼 X11，可能會讓有些人不爽；這部分細節可參閱 X(7) 說明。

### 5.2.2. X 的 Client/Server 架構

X 一開始是設計為網路架構環境，並採用 “client-server” 架構。

在 X 架構下， “X server” 是在有鍵盤、螢幕、滑鼠的電腦上運作。 而 server 部份則是負責像是顯示部份的管理、 處理來自鍵盤、滑鼠及其他設備(比方像是以繪圖板來輸入、 或者是顯示到投影機)的輸入等等， 每個 X 程式(像是 XTerm，或 Netscape®)都是 “client”。 client 會傳訊息到 server 上，比如：“Please draw a window at these coordinates”，接著 server 會傳回訊息，比如： “The user just clicked on the OK button”。

在家庭或小辦公室環境，通常 X server 跟 X client 都是在同一台電腦上執行的。 然而，也可以在比較爛的桌機上執行 X server， 並在比較強、比較貴的電腦上跑 X 程式(client)來做事情。 在這種場景，X client 與 server 之間的溝通就需透過網路來進行。

這點可能會讓有些人產生困惑，因為 X 術語與他們原本的認知剛好相反。 他們原本以為 “X server” 是要在最強悍的機器上跑才行，而 “X client” 則是在他們桌機上面跑。 實際上卻不是這樣。

有點相當重要，請記住 X server 是在有接螢幕、鍵盤的機器上運作， 而 X client 則是顯示這些視窗的程式。

協定(protocol)內並無強制規定 client 以及 server 兩邊機器都得是同一作業系統，或者得是同型機器才可以。 換句話說，也可以在 Microsoft® Windows® 或蘋果電腦(Apple)的 Mac OS® 上跑 X server，而且可以透過許多免費或商業軟體完成這些安裝、設定。

### 5.2.3. The Window Manager

X 設計哲學與 UNIX® 設計哲學相當類似，都是 “tools, not policy”。 也就是說，X 不會試圖強制規定某任務應該要如何完成，而是只提供使用者一些工具， 至於如何運用這些工具，則是使用者本身的事了。

X 延續這哲學，它並不規定：螢幕上的視窗該長什麼樣、要如何移動滑鼠指標、 該用什麼組合鍵來切換各視窗(比如：在 Microsoft® Windows® 的 Alt+Tab鍵)、各視窗的標題列長相，以及是否該有關閉鈕等等。

事實上，X 把這部分交給所謂的 “Window Manager” 來管理。 有一堆 window manager 程式，像是: AfterStep 、Blackbox、ctwm 、Enlightenment、 fvwm、Sawfish、 twm、 Window Maker 等等。每一種 window manager 都提供不同的使用經驗； 有些還可使用 “virtual desktops(虛擬桌面) ”；有些則可自訂組合鍵來管理桌面；有些會有 “Start(開始) ”鈕或其他類似設計；有些則是 “可更換佈景主題”， 可自行安裝新的佈景主題以更換外觀。 這些跟其他的 window manager 在 Ports Collection 內的 `x11-wm` 目錄內都有。

此外，KDE 及 GNOME 桌面環境則有其自屬並整合完整的 window manager。

每個 window manager 也各有其不同的設定機制；有些需手動寫設定檔， 而有的則可透過 GUI 工具來完成大部分的設定。舉個例子： Sawfish 就有以 Lisp 語言寫的設定檔。

### Focus Policy:

window manager 的另一特色就是負責滑鼠指標的 “focus policy”。 每一種視窗系統都需要選擇作用視窗的方式 ，以接受鍵盤輸入，以及決定目前哪個視窗是處於使用中的狀態。

通常較為人熟悉的 focus policy 叫做 “click-to-focus”， 這是 Microsoft® Windows® 所採用的模式，也就是指標在該視窗按一下的話， 該視窗就會處於使用中的狀態。

X 並不支援一些特殊的 focus policy。 換句話說，window manager 會控制哪個視窗在何時是作用中。 不同的 window manager 有不同的支援方式。 但它們都支援 click-to-focus， 而且大多數都有支援多種方式。

以下是目前最流行的 focus policy：

focus-follows-mouse

  滑鼠移到哪個視窗就是使用該視窗。 該視窗不一定位於其他視窗上面， 但只要把滑鼠移到該視窗就可以改變作用中的視窗， 而不需在它上面點擊。

sloppy-focus

  該 policy 是針對 focus-follows-mouse 的小小延伸。 對於 focus-follows-mouse 而言，若把游標移到最初的視窗(或桌面)， 那所有其他視窗都會處於非作用中，而且所有鍵盤輸入也會失效。 若是選用 sloppy-focus，則只有在游標移到新視窗時， 作用中的視窗才會變成新的， 而只離開目前作用中的視窗仍不會改變作用狀態。

click-to-focus

  由游標點擊才會決定作用中的視窗。 並且該視窗會被 “raised(凸顯)” 到所有其他視窗之前， 即使游標移到其他視窗，所有的鍵盤輸入仍會由該視窗所接收。

許多 window manager 也支援其他 policy，與這些相比起來又有些不同， 細節部分請參閱該 window manager 的文件說明。

### 5.2.4. Widgets

The X approach of providing tools and not policy extends to the widgets seen on screen in each application.

“Widget” is a term for all the items in the user interface that can be clicked or manipulated in some way; buttons, check boxes, radio buttons, icons, lists, and so on. Microsoft® Windows® calls these “controls”.

Microsoft® Windows® and Apple's Mac OS® both have a very rigid widget policy. Application developers are supposed to ensure that their applications share a common look and feel. With X, it was not considered sensible to mandate a particular graphical style, or set of widgets to adhere to.

As a result, do not expect X applications to have a common look and feel. There are several popular widget sets and variations, including the original Athena widget set from MIT, Motif® (on which the widget set in Microsoft® Windows® was modeled, all bevelled edges and three shades of grey), OpenLook, and others.

Most newer X applications today will use a modern-looking widget set, either Qt, used by KDE, or GTK+, used by the GNOME project. In this respect, there is some convergence in look-and-feel of the UNIX® desktop, which certainly makes things easier for the novice user.

前一頁 | 上一層 | 下一頁
章 5. X Window 視窗系統 | 起始頁 | 5.3. 安裝 X11

本文及其他文件，可由此下載： ftp://ftp.FreeBSD.org/pub/FreeBSD/doc/。

若有 FreeBSD 方面疑問，請先閱讀 FreeBSD 相關文件，如不能解決的話，再洽詢 <questions@FreeBSD.org>。
關於本文件的問題，請洽詢 <doc@FreeBSD.org>。