FreeBSD連載(48):X Window的基本概念

1999年12月21日 15:56 王波

使用和配置X Window

  設置好X伺服器之後,就可以使用startx啟動圖形界面,以使用其他圖形界 面的經驗來使用X Window,但使用者常常會發現這個界面相當簡單和粗糙。這是因 為X Window具有很大的靈活性和可配置性,其最基本的系統只提供了最基本設置, 如果要真正得到好用的界面,還需要進一步的設置。

  為了設置和使用X Window系統,首先就需要了解相關的X Window概念。

  • X Window的基本概念

  第一次接觸X Window系統的使用者很容易混淆X Window系統中的客戶機/服 務器的概念,初次接觸X Window的使用者會認為X Window下的客戶機/伺服器的概念 與普通網路中的客戶機/伺服器的概念不太相同。通常的觀念中,使用者使用客戶工 作站,使用遠端伺服器提供的檔案或打印服務,而在X Window下,使用者使用X服務 器進行操作,而客戶程序可以運行在本地或者遠端電腦上。

  如果進一步理解客戶/伺服器的概念,就會了解客戶/伺服器的概念指的是具 體運行的進程,而非電腦或使用者。不是與使用者聯繫最密切的電腦就是客戶, 而是首先要明確服務資源,然後再以資源提供者和資源占用者來進行區分。在一般 的客戶/伺服器方式的應用中,一般是客戶程序直接與使用者交互,因此就容易造成 錯誤的概念,以使用者為中心來區分客戶和伺服器。

  但在X Window下,服務資源為X伺服器的顯示處理能力,X客戶程序要顯示圖 形圖象,但它不能直接控制顯示硬體,只能使用由用戶面前的X伺服器提供的顯示資 源,同樣它也不能接受用戶輸入,也只能使用X伺服器控制的鍵碟或滑鼠資源來接受 輸入。在這裡,X伺服器是硬體的控制者,X客戶只是單純的執行程序,只能使用X服 務器提供的服務進行輸入輸出。

  • X伺服器(X Server)是一個管理顯示的進程,必須運行在一個有圖形 顯示能力的電腦上。理論上,一台電腦上可以同時運行多個X伺服器,每個X服 務器能管理多個與之相連的顯示設備。
  • X客戶程序(X Client)是一個使用X伺服器顯示其數據的程序,它可以運行 在與X伺服器不同的電腦上。
  • X協議(X protocol)是X客戶程序和伺服器進行通信的一套協議,X協議支持 網路,能在本地系統中和網路實現這個協議,支持的網路協議有TCP/IP、DECnet等。

  X的這種任務劃分有幾個優點:

客戶程序可以在遠程電腦上執行計算任務,而使用的X伺服器僅負責複雜的圖形 顯示,充分發揮X伺服器在顯示上的優勢。

  只有X伺服器與硬體打交道,所有的客戶程序都是硬體無關的,很容易在不同 的平台上移植。

  客戶程序可以在不同的電腦上運行,從巨型機到個人電腦,充分發揮網路 計算的優越性。

  盡管每個X客戶程序都可以對整個螢幕範圍內進行顯示操作,但標準的做法是先 創建一個顯示視窗,此後客戶程序的所有顯示都相對於這個視窗進行操作。這樣在同一 螢幕內,就能同時顯示多個獨立的客戶程序,通過對視窗的管理在不同的程序之間進行 切換。每個視窗應該位於螢幕的哪個位置,何時顯示,何時隱藏,以及視窗的標題、四 周如何顯示,這些都不應該由產生這個視窗的客戶程序自己控制和維護,否則就不能達 到簡化設計的目的。X Window並沒有自己實現這些任務,在X的設計原則中,這些代表 GUI風格的任務仍然是客戶程序的任務,因此X將管理視窗的任務給予了一個特殊客戶程 序 ── 視窗管理器,使用不同的視窗管理器將使X Window的外觀看起來截然不同。

  X系統只負責顯示圖形,並不限制顯示和操作的風格,因此不同的X Window的風 格並不相同,使用者可以根據自己的喜好進行選擇。

  因此X Window上,所有的視窗形成了一個樹狀結構。X Window的視窗管理程序運 行在根視窗上,所有的其他視窗為根視窗的子視窗,而其他視窗上也有相應的按鈕、對話 框等組件,這些是它的子視窗。

  由於X Window系統只提供了最基本的系統調用,而具體的視窗都有很多共性,因 此要開發X應用程序,應該首先使用開發工具包,而沒有必要直接使用最基本的X Window 的系統調用,以簡化寫作程序的工作量。不同的公司或組織開發了各種工具包來提供創建 和管理具體視窗的構件,例如Motif套件,OpenLook套件等。每種套件都提供了選單、按 鈕、對話框等圖形界面的標準構件,還提供基本的視窗管理器。使用不同套件開發的程序 ,其顯示風格也不相同,因此就在不同程序之間形成了不同的GUI風格。Motif和Openlook 就是兩種不同的圖形界面風格,目前Motif成為了商業X Window的一個標準,很多商業軟 件均基於Motif進行開發,而Openlook則沒有獲得更普遍的支持。