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