使用和配置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則沒有獲得更普遍的支持。