理解FreeBSD中的圖形介面X系統(轉)

ba發表於2007-08-12
理解FreeBSD中的圖形介面X系統(轉)[@more@]對於那些熟悉其他圖形環境,比如 Microsoft® Windows® 或者 Mac OS® 的使用者來說,第一次使用 X 可能會感覺很驚訝。 儘管您不需要了解各種 X 元件的所有細節和它們是如何互相影響的; 然而,瞭解一些基本的知識可以讓您很好地利用 X 的強大功能。X 不是第一個為 UNIX® 而開發的視窗系統,但它是最流行的。 X 的原始開發團隊在開發 X 之前就已經在另外一個視窗系統上工作了。那個系統的名字叫做 “W” (就是 “Window”)。X 只是羅馬字母中 W 後面 的一個。 X 可以被叫做 “X”, “X Window 系統”, “X11”, 等等。把 X11 稱做 “X Windows” 可能會冒犯某些人; 檢視 X(7) 可以瞭解更多的資訊。

X一開始就是針對網路而設計的,所以 採用了 “client-server” 模型。在 X 模型中, “X server” 執行在有鍵盤,顯示器,滑鼠的計算機上。伺服器用來管理顯示資訊,處理來自鍵盤和滑鼠的輸入等。 每一個 X 應用程式 (比如 XTerm, 或者 Netscape®) 就是一個 “client”。 一個 client 給伺服器傳送資訊,如 “Please draw a window at these coordinates”, 然後伺服器就返回處理資訊,如 “The user just clicked on the OK button”。 如果您在只有一臺計算機的家裡或小型辦公環境中使用 FreeBSD,您就需要在同一臺計算機上執行 X server和 X client。然而,如果您有很多執行 FreeBSD 的機器,您可以在您的桌面計算機上執行 X server,而在比較高檔 的伺服器上執行 X 應用程式。在這樣的環境中,X server 和 X client 之間的 通訊就可以透過網路來進行。

這迷惑了一些人,因為 X 的術語和他們料想的有些不同。 他們以為 “X server” 是執行在功能強大的大型機上的,而 “X client” 是執行在他們桌面上的計算機上的。 記住,X server 是有鍵盤和顯示器的那臺計算機,而 X client 是那些顯示視窗的程式。 並不需要 client 和 server 都執行在同一種作業系統上,或甚至執行在同一種型別的計算機上。在 Microsoft Windows 或者 Apple 公司的 Mac OS 上執行 一個 X server 也是可以的,在它們上面也有很多免費的和商業化的應用程式。 從 FreeBSD 5.3-RELEASE 開始, 隨 FreeBSD 一同安裝的 X 服務改成了 Xorg, 它的授權同 FreeBSD 的授權類似, 可以免費使用。 此外,也有一些針對 FreeBSD 的商業 X 伺服器。

X的設計哲學:很像 UNIX 的設計哲學, “tools, not policy”。這就意味著 X 不會試圖去規定任務應該如何去完成,而是,只給使用者提供一些工具,至於決定如何使用這些工具是使用者自己的 事情。 這套哲學擴充套件了 X,它不會規定視窗在螢幕上應該是什麼樣子,要如何移動滑鼠,什麼鍵應該用來切換窗體 (比如, Alt+Tab按鍵,在 Microsoft Windows 環境中的作用), 每個視窗的工具條應該看起來像什麼,他們是否應該有關閉按鈕等等。 實際上,X 行使了一種叫做 “視窗管理器”的應用程式的職責。有很多這樣的程式可用: AfterStep, Blackbox, ctwm, Enlightenment, fvwm, Sawfish, twm, Window Maker,等等。每一個視窗管理器 都提供了不同的介面和觀感;其中一些還支援 “虛擬桌面”;有一些允許您可以定製一些鍵來管理您的桌面; 一些有“開始” 按鈕,或者其他類似的設計;一些是 “可定製主題的(themeable)”, 透過安裝新的主題,可以完全改變外觀。 這些以及很多其他的視窗管理器, 都可以在 Ports Collection 的 x11-wm 分類目錄裡找到。 另外,KDE 和 GNOME 桌面環境都有他們自己的視窗管理器 與桌面整合。 每個視窗管理器也有不同的配置機制;有些需要手工來寫配置檔案, 而另外一些則可以使用 GUI 工具來完成大部分的配置任務,至少 (Sawfish) 有一個用 Lisp 語言來寫的配置 檔案。

焦點策略: 視窗管理器的另一個特性是滑鼠的 “focus policy”。每個視窗系統都需要有一個選擇視窗的方法來接受鍵盤的輸入資訊,以及當前哪個視窗處於可用狀態。 您通常比較熟悉的是一個叫做 “click-to-focus” 的焦點策略。 這是 Microsoft Windows 使用的典型焦點策略,也就是您在一個視窗上點選 一下滑鼠,這個視窗就處於當前可用的狀態。 X 不支援一些特殊的焦點策略。而是,視窗管理器控制著在什麼時候哪個視窗擁有焦點。不同的視窗管理器支援不同的焦點方案。它們都支援點選即獲得焦點,而且它們中的大多數都支援好幾種方案。 最流行的焦點策略: focus-follows-mouse, 滑鼠指示器下面的視窗就是獲得焦點的視窗。這可以不是位於其他所有視窗頂部的視窗。您可以透過將滑鼠移到另一個視窗就可以來改變焦點,您不需要在它上面點選。 sloppy-focus, 這種方式是對 focus-follows-mouse 策略的一個小小擴充套件。對於 focus-follows-mouse,如果您把滑鼠移到了根視窗(或桌面背景)上, 則所有的其它視窗都會失去焦點,而相關的全部鍵盤輸入也會丟失。 對於 sloppy-focus,只有當指標在鍵入一個新視窗時,視窗焦點才會發生變化,當退出當前視窗時是不會變化的。 click-to-focus, 當前視窗由滑鼠點選來選擇。視窗被“突出顯示” ,出現在所有其他視窗的前面。即使指標被移向了另一個視窗,所有的鍵盤輸入仍會被這個視窗接收。 許多視窗管理器支援其他的策略,與這些相比又有些變化。您可以看具體視窗管理器的文件。

提供工具而非策略的X方法:使得在每個應用程式螢幕上看到的視窗部件得到了 大大的擴充套件。 “Widget” 只是針對使用者介面中所有列舉專案的一個術語,它可以用某種方法來點選或操作;如按鈕,核取方塊,單選按鈕,圖示,列表框等等。 Microsoft Windows 把這些叫做“控制元件”。 Microsoft Windows 和蘋果公司的 Mac OS 都有一個嚴格的視窗部件策略。應用程式開發者被建議確保他們的應用程式共享一個普通的所見即所得的使用者介面。 對於 X,它並不要求一個特殊的圖形風格或一套相結合的視窗部件集。 這樣的結果是您不能期望 X 應用程式只擁有一個普通的所見即所得的介面。有很多的流行的視窗部件集設定,包括來自於 MIT 的 Athena, Motif® (模仿 Microsoft Windows 的視窗風格, 所有部件都具有斜邊和3種灰色度), OpenLook,和其他一些視窗部件集。 如今, 絕大多數比較新的 X 應用程式將使用一組新式的視窗設計, 包括 KDE 所使用的 Qt, 以及 GNOME 所使用的 GTK+。 在這樣一種視窗系統下,UNIX 桌面的一些所見即所得特性作了一些收斂, 以使初學者感到更容易一些。

來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/10617731/viewspace-952369/,如需轉載,請註明出處,否則將追究法律責任。

相關文章