歡迎來到Linux教程網
Linux教程網
Linux教程網
Linux教程網
Linux教程網 >> Unix知識 >> BSD >> 理解FreeBSD中的圖形界面X系統

理解FreeBSD中的圖形界面X系統

日期:2017/2/28 11:28:00   编辑:BSD


對於那些熟悉其他圖形環境,比如 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 桌面的一些所見即所得特性作了一些收斂, 以使初學者感到更容易一些。
Copyright © Linux教程網 All Rights Reserved