理解 Xwindow
用 Xwindow 做一個有趣的試驗
現(xiàn)在我們來做一個試驗來引起你對 Xwindow 的興趣。
很多人離開了 xdm 就不知道怎樣啟動 Xwindow 了。其實 Xwindow 的啟動方式很簡單。
首先,啟動你的 X server。在 Linux 下,你可以直接輸入 X,讓一個 X server 在后臺運行。這樣,一個占據(jù)整個屏幕的布滿斜紋的窗口(根窗口)就出現(xiàn)了。如果是 Exceed 或者 X-win32,你需要把屏幕設(shè)置為 single window 才能看到這個窗口。
接著,Linux 用戶需要用 xauth 給你的 X server 設(shè)置一個密碼,這樣別人就不能非法連接你的 X server。你需要 Ctrl-Alt-F1切換到tty1才能輸入這個命令。Exceed 和 X-win32 的用戶不需要這步。以下的例子只用 Linux 作為實例,其它系統(tǒng)的用戶可以依葫蘆畫瓢。
xauth add :0 . `mcookie`
好了,現(xiàn)在你可以試試啟動一個 xterm 到這個 X server 上:
xterm -display :0
按 Alt-F7 切換到 X,你看到了一個不受窗口管理器管理的 xterm。試試移動它呢?再切換到 tty1 啟動另一個 xterm,兩個 xterm 重合了嗎?你怎樣在第一個 xterm 里輸入呢?這樣用起來很痛苦吧?那么你可以在 xterm 里啟動一個窗口管理器,比如 twm,直接運行 twm 就行了。
你發(fā)現(xiàn)xterm的窗口都被加上了標題欄,按鈕和邊框,你現(xiàn)在可以移動它們了。試試把 twm 殺死,看看那些標題欄,按鈕,邊框是不是都消失了?你知道了窗口管理器的作用了吧。
現(xiàn)在告訴你怎樣不用 XDMCP broadcast,繞過 CDE 的登陸界面,而使用 Sun 機器上的 CDE。其實你只需要把剛才那個例子里的 twm 換成 CDE 的窗口管理器 dtwm 就行了,或者啟動 dtsession。它們一般在 /usr/dt/bin 下。Sun 還有另外一個窗口管理器叫做 OpenLook, 它在系統(tǒng)里的名字叫做 olwm,你自己找找吧。
現(xiàn)在如果你自己在 Sun 機器上裝一個 FVWM,你知道怎么繞過 CDE 登錄而啟動 FVWM 了吧?你不需要成為 root 就可以使用你喜歡的FVWM了。
.Xdefaults 文件的作用
弄明白 X 的工作原理后,你就可以使用 .Xdefaults 來配置你的程序了。有人不理解 .Xdefaults 是用來干什么的,喜歡用 shell alias 出一些帶有很多參數(shù)的命令,或者寫一些 shell script,里面只有一行帶有很多參數(shù)的程序調(diào)用,然后他說: “.Xdefaults 沒用。”
其實 .Xdefaults 比起這些辦法有很多好處。首先,幾乎所有的 X 客戶程序都可以從 .Xdefaults 文件得到配置信息,比如前景色,背景色,字體…… 這樣你可以在同一個文件里配置所有 X 程序的樣式,而不用寫那么多 shell script。
另外,如果你用 xrdb .Xdefaults 把這些配置信息寫入到根窗口的數(shù)據(jù)結(jié)構(gòu)里,不是本地機器上的 X 程序也會遵守同樣的樣式。比如如果你的 .Xdefaults 里面有這些內(nèi)容:
XTerm.background: midnightblue
XTerm.foreground: white
然后你用 xrdb ~/.Xdefaults,那么所有的 xterm 都會使用 midnightblue 作為背景色,使用白色顯示字符。這些配置,用X術(shù)語叫資源(resource)。
有時候你會開很多 xterm 窗口在機器上,它們來自不同的遠程機器,這時候如果它們都用同樣的樣色和字體,你就不容易分辨它們了。比如有一天,我在實驗室的PC機上打開了很多 xterm,它們來自本機,實驗室的 Sun 服務(wù)器,我宿舍的機器和數(shù)據(jù)庫實驗室一臺 HP 服務(wù)器。在我走之前,想關(guān)閉本地的機器,我輸入 “shutdown -h now” 在一個我自認是本地的 xterm 上,結(jié)果,等了一會兒,我回頭看到機器沒關(guān)掉,只是那個 xterm 停止了響應(yīng)。我一拍腦袋:糟了,我把宿舍的機器給關(guān)掉了!
為了避免這種情況,你可以在不同的機器上編輯不同的 .Xdefaults,而不使用 xrdb 在根窗口導入這些配置。這樣不同的機器上的 xterm 使用不同的顏色,你就不容易搞錯了。
怎樣更加深入的了解 Xwindow?
哎喲!我本來想寫很多東西,后來發(fā)現(xiàn)要需要寫的實在太多了。我沒那么多時間,沒辦法,給參考書目吧,你們自己去看。
學習使用 Xwindow 不是學習使用 Gnome,KDE,…… 很多書籍教用戶怎樣使用 Gnome, KDE 的菜單,配置程序…… 結(jié)果到了最后用戶還是沒能知道 Xwindow 是怎么回事。用那些菜單誰不會啊?真是浪費大家時間。
學習 Xwindow,其實最好的一個辦法是看看 Xlib 編程的書籍,你可以在圖書館找到這樣的書,我推薦 O'reily 的那本 Xlib 程序設(shè)計書(我忘了名字了),雖然它很老,但是那上面講解的 Xwindow 的工作原理一直都沒有變過。
如果你不會編程序,你可以不看編程的部分而得到很多深入的概念上的認識,比如窗口屬性,字體,顏色,…… 這些東西在你使用 Xwindow 時會有很大幫助。如果你真的要編寫 Xlib 程序,這本書就過時了一點,你最好到 www.x.org去免費下載最新的 Xlib 手冊來看。
評論