許多人都以為在 Linux (或 Unix) 裡﹐都要使用文字模式。“沒有友善圖形界面”居然成為某些人拒絕 Linux 的借口。其實﹐在 Unix 世界裡面﹐早就有圖形界面了﹐我們在 Linux 所使用的 X 系統是 XFree86 ﹐人們一般稱之為 X Window。 若論起歷史﹐X Window 比微軟的 Windows 系統還早呢﹗而且﹐在 X Window 裡面﹐可供選擇的界面多得很﹐這個概念可不同微軟視窗中換換桌面﹑顏色或字型那麼簡單哦。
首先﹐XFree86 是一個 network-based 的 client/server 架構。您有好幾種 X Server 可以供您選擇﹐它們分別配備不同的硬體。當您將 RedHat 7.1 的 CD2 放進機器並 mount 好之後﹐然後輸入﹕
ls /mnt/cdrom/RedHat/RPMS/XFree86* |
您會看到輸出結果會包括下面的這些 rpm﹕
XFree86-3DLabs-3.3.6-35.i386.rpm XFree86-8514-3.3.6-35.i386.rpm XFree86-AGX-3.3.6-35.i386.rpm XFree86-devel-4.0.3-5.i386.rpm XFree86-doc-4.0.3-5.i386.rpm XFree86-FBDev-3.3.6-35.i386.rpm XFree86-I128-3.3.6-35.i386.rpm XFree86-ISO8859-2-100dpi-fonts-4.0.3-5.i386.rpm XFree86-ISO8859-2-Type1-fonts-4.0.3-5.i386.rpm XFree86-ISO8859-7-100dpi-fonts-1.0-9.noarch.rpm XFree86-ISO8859-7-1.0-9.noarch.rpm XFree86-ISO8859-7-75dpi-fonts-1.0-9.noarch.rpm XFree86-ISO8859-7-Type1-fonts-1.0-9.noarch.rpm XFree86-ISO8859-9-100dpi-fonts-2.1.2-16.noarch.rpm XFree86-ISO8859-9-2.1.2-16.noarch.rpm XFree86-KOI8-R-100dpi-fonts-1.0-6.noarch.rpm XFree86-Mach32-3.3.6-35.i386.rpm XFree86-Mach64-3.3.6-35.i386.rpm XFree86-Mach8-3.3.6-35.i386.rpm XFree86-Mono-3.3.6-35.i386.rpm XFree86-P9000-3.3.6-35.i386.rpm XFree86-S3-3.3.6-35.i386.rpm XFree86-S3V-3.3.6-35.i386.rpm XFree86-SVGA-3.3.6-35.i386.rpm XFree86-V4L-4.0.3-5.i386.rpm XFree86-VGA16-3.3.6-35.i386.rpm XFree86-W32-3.3.6-35.i386.rpm XFree86-xf86cfg-4.0.3-5.i386.rpm XFree86-Xnest-4.0.3-5.i386.rpm XFree86-Xvfb-4.0.3-5.i386.rpm |
以上這些套件﹐大部份是各種 X server ﹐我們可以選擇安裝不同的 X server 在機器上﹐也可以同時安裝多個 X server﹐以適應不同的硬體環境。然而﹐在設定 X 的時候﹐要求您非常了解系統的硬體資訊﹐尤其是顯示卡和熒幕。您最好能參考下表﹐填上所有您能夠獲得的資訊﹕
滑鼠 | 鍵盤 | ||
廠牌 | Microsoft | 廠牌 | Acer |
型號 | IteliMouse 1.1A | 型號 | 6511-TA |
類型 | PS/2 | 類型 | 104 |
顯示卡 | 熒幕 | ||
廠牌 | Creative | 廠牌 | NEC |
型號 | Voodo Banshee | 型號 | C&C-15RI28 |
最高解析度 | 1280x1024 | 最高解析度 | 1024x768 |
晶片組 | tdfx | 水平掃瞄 | 30~64 KHz |
記憶體 | 16MB | 垂直掃瞄 | 47~120 Hz |
RAMDAC速率 | **不詳 ** |
一些比較新的顯示卡都暫時沒被內定支援﹐要設定起來可真是件非常棘手的事情。如果真的設定不起來﹐我建議您暫時放棄﹐或換張確定可以支援的顯示卡。又或者﹐期待日後新版的 XFree86 版本會支援﹐當然是沒人敢保證的啦。如果真如此﹐您只要到網路上面下載最新的 X server (如果有 rpm 更好)回來安裝就是了﹐您根本不需要重新安裝 Linux 系統的。
用 RPM 來安裝 X Server ﹐應該不會很困難的﹐除非您碰到 library 相關的問題﹐不過﹐您最好當成這是 RPM 的最佳鍛煉機會 ^_^ 然而﹐假如您不了解硬體資訊﹐或是硬體太新而暫時沒有現成的支援﹐要設定好一個 X Window 通常卻要費盡九牛二虎之力﹐有時候耗費整個星期的時間也設定不好﹐實不出奇。事實上﹐由於不同的硬體搭配﹐需要的設定也大相徑庭﹐也很難找到一個放之四海皆宜的安裝法門﹐總離不開不停的反復嘗試就是了。
下面﹐我打算用我的 Linux 機器做例子﹐和大家一起看看安裝 X Window 的過程。這裡﹐我也不打算用太新的硬體來做例子了﹐免得畫虎不成反類犬啦。
- 首先要設定的是 mouse﹐如果當初您在安裝的時候已經設定好了的話﹐應該就無需擔心了。假如您當初真的陽春到連滑鼠都沒裝﹐要是知道您的滑鼠類型和接到哪個連接埠口的話﹐也可以打輸入 mouseconfig 來設定﹕
注意﹕在我的 RH7.1 上的實作測試中﹐跑完這個﹐似乎會讓後面的 Xconfigurator 程式不能順利執行﹐必須要手工的修改 /etc/sysconfig/mouse 檔案﹐將 ‘DEVICE=/dev/mouse’ 這行設定刪除掉才行。如果您碰到的問題和我一樣﹐那就要留意了。 - 再來﹐是關於 keyboard 的設定。不過﹐這機會不大吧﹖但假如您覺得真有這個必要﹐那就試試執行 kbdconfig 命令吧﹕
不過﹐我相信您能選擇的修改非常有限啦。
- 無論如何﹐當 mouse 和 keyboard 都設定好之後﹐您可輸入﹕
Xconfigurator - 您看到的第一畫面將是“Welcome”說明﹕
這個不用管它﹐直接 Enter 就好。
- 接著﹐就是“PCI Probe”畫面﹕
如果您的顯示卡晶片組能夠被系統偵測到的話﹐在這裡您就看得到了。否則的話﹐恐怕要花的力氣就更多了。無論如何﹐您都要按‘OK’的了。
- 再來﹐您會看到“Monitor Probe”畫面﹕
如果您的顯示能順利偵測得到﹐那是最理想的﹐然則直接到下一步。要不然﹐參考如下的設定﹕
在“Monitor Setup”的清單之內﹐選擇適當的型號。如果清單裡面也沒有﹐您還可以用‘Custom’來指定﹔
然後在接下來的“Custom Monitor Setup”裡為您的顯示熒幕指定好‘水平掃描頻率’﹐您可能參考手冊找到正確的數值。如果找不到或懶得去找的話﹐不妨選擇‘Non-Interlaced SVGA, 1024x768 @ 60 Hz, 800x600 @ 72 Hz ’﹐不太舊的熒幕都應該可以使用這個設定。如果您的熒幕真的太舊﹐建議從較低值開始。
然後﹐您得為您的顯示器設定‘垂直掃描頻率’。這又要參考廠家手冊了﹗不想這樣做的話﹐挑最頂上那個最保險。不過﹐我知道我的熒幕可以使用‘50-100’這個範圍。
熒幕的設定﹐在整個 X 設定中﹐是至為關鍵的﹐請一定要找到熒幕的準確數據。要不然﹐要嘗試的組合是非常多樣的﹐這需要您要有過人的耐性﹗
- 好了﹐當您完成熒幕的設定之後﹐系統會嘗試偵測您的顯示卡記憶體數量﹕
如果在‘Video Memory’畫面裡面找到的顯示卡記憶體數量和實際不符的話﹐您可以自行選擇。不過﹐在我以前的一些測試中﹐曾碰到過 4MB 最多只能使用到2MB 的情形。假如您不確定是否可以接受您的實際設定﹐建議先從低數量開始往上調整。
- 再來﹐就是“Clockchip Configuration”畫面了﹕
如果您不確定您的 Clockship 是否在選擇清單中的話﹐明智的選擇是 No Clockchip Setting (recomended)。除非﹐您肯定顯示卡所使用的 Clockchip 型號(如 S3 Trio 64+ 可以使用‘S3 GenDAC’)。
- 接著在‘Probe for clocks’畫面裡面﹐可以選擇‘Probe’來讓系統自動對熒幕的解析度和色深進行偵測。不過﹐在我的經驗裡﹐選擇‘Skip’更保險﹕
這樣您可以確切的設定自己需要的解析度和色深﹕
接下來﹐系統會嘗試對您的設定進行測試﹐我也建議您如此。當然﹐如果您實在太有信心了﹐可以選擇‘Skip’﹕
- 假如一切順利﹐接下來的畫面會出現十秒(因為擷取不到該畫面﹐所以這裡欠奉了)。如果您能清晰的看到文字﹐以及文字在畫面的正中央且與您所選擇的解析度一致﹐那您可以放心的選擇‘Yes’。如果您超過十秒還沒動作﹐就當您看不到文字了﹐那樣系統就會告訴您‘Error’﹐您可以‘Back’回去重新設定﹐也可以選擇‘Quit’退出。
- 如果您能看到上一步的文字﹐並且在十秒內按了‘Yes’﹐系統會問您是否想“一開機就直接進入 X Window 界面”﹐我建議您還是選擇‘No’好了。因為如果您選擇了 Yes 之後要回到文字模式的話要費一番功夫才行﹔但我們卻可以隨時從文字模式進入 X Window。當然﹐如果您非常喜歡用圖形界面﹐而且確實希望一開機就進入 X ﹐那就選擇 Yes 吧。
- 最後﹐當一切設定妥當之後﹐就可以結束並離開 Xconfigurator 程式了﹕
Okay﹐假如一切妥當的話﹐只要您輸入:
startx |
然後﹐就可以看到美麗的 X Window 啦﹗如果您很不幸在 X Window 裡面卡住了﹐可以在任何時候嘗試按﹕
Ctrl + Alt + Backspace |
好了﹐如果您夠幸運進入 X window﹐真要恭喜您了﹗別看我在這裡例子裡面選這按那的好像一點都不難﹐但事實上﹐當初要找出選擇什麼﹐按哪個鍵卻花費了不少時間呢﹗如果您發現您的 X Window 老設定不來﹐別喪氣﹐好多人都不能一次搞定呢。關於 X 系統的設定﹐一直都是 Linux 的一個難題﹐卻也沒有什麼捷徑﹐只能靠多嘗試了。
上面所教的 X Window 設定方法叫 “Xconfigurator”﹐好像只有 RedHat Linux 才有這個程式。如果您用其他套件的話﹐可以使用“XF86Setup”或“xf86config”這兩個程式。前者非常好用和直觀﹐因為是圖形界面的﹐這裡也不就多費唇舌了﹐如果您想使用它﹐可以找 XFree86-XF86Setup-xxx.xxx.xxx.rpm 回來裝﹐然後輸入 XF86Setup 就可以了。雖然 xf86config 不是那麼好用﹐但基本上都能在各發行套件中找得到。下面就讓我們用一個最陽春的組合( S3 Trio64+ 顯示卡配搭 640x480 熒幕)來看看 xf86config 是怎麼使用的。之所以使用個組合﹐完全是因為成功的機會大﹐如果您想看看 X Window 是怎麼個模樣﹐用這個組合保證您不會失望就是了。
- 在文字模式下面輸入﹕xf86config
- 然後在第一個畫面裡面﹐最後一行應該是這樣的﹕
Press enter to continue, or ctrl-c to abort.
我們按‘ Enter ’就是了。使用 xf86config 有一個不好的地方是﹕如果設定錯了﹐沒有機會回到上一步。但您可以在任何時候按 ‘Ctrl + c’鍵終止程式﹐然後重新再來。 - 然後是要您選擇滑鼠類型﹐因為我用的是 PS/2滑鼠﹐所以在“Enter a protocol number: ”那裡輸入 ‘4’ 。
- 然後會問您是否需要“三鍵模擬模式”﹐這個已經在第一章的“安裝 Linux”裡面說明過了﹐建議您在“Do you want to enable Emulate3Buttons? ”提問後後輸入‘y’然後 Enter。
- 接著問的是滑鼠設備位置﹐除非您更改過系統的設備檔﹐否則見到“Mouse device:”的時候﹐直接按‘Enter’即可。
- 再來是要您選擇鍵盤類型﹐現在的鍵盤一般都是 104 鍵或以上的﹐我這裡選擇 ‘3’。
- 然後是選擇國家代號﹐抱歉﹐暫時沒有中國或台灣的煩惱啦﹐通常用 ‘1’都不會有錯。
- 接下來的設定可以直接按 Enter﹐除非您想自己定義一個 layout 名稱。
- 接著問您要不要“XKEYBOARD 模式”﹐除非您真的很確定需要﹐要不然當我們看到“Do you want to use XKB﹖”的時候輸入‘n’就是了。
- 然後再按一次‘Enter’繼續。
- 接下來是選擇顯示器的“水平掃描頻率”﹐這裡我們選擇‘2’﹐即﹕“31.5 - 35.1; Super VGA, 800x600 @ 56 Hz”(別忘了我當前是在另外一台古老機器上哦)。
- 接下來是選擇顯示器的“垂直掃描頻率”﹐這裡我們選擇‘1’﹐即﹕“50-70”。
- 當您看到“Enter an identifier for your monitor definition:”的時候﹐您可以為您的顯示器做些註解﹐否則﹐直接‘Enter’就是了。
- 然後系統會問您是否要看一看顯示卡的資料庫﹐當然要啦﹐所以我們看到“Do you want to look at the card database?”的時候輸入‘y’。
- 然後我們就一直的按‘Enter’往下翻頁﹐直到找到自己的型號為止﹐如果錯過了﹐還是一直按‘Enter’等它繞一圈回來。這裡找到我的顯示卡是﹕“527 S3 Trio64V+ (generic)”﹐然後輸入“527”再按‘Enter’。
- 系統會顯示出您所做的選擇﹐按‘Enter’繼續就是了。
- 然後系統要您輸入顯示卡的記憶體數量﹐雖然我知道我的卡有 2MB﹐但我這裡輸入 1MB 就可以了﹐所以選擇‘4’﹐即﹕“2048K”。
- 接著系統會問您是否要為顯示卡做些註解﹐如果您不想花時間﹐直接按‘Enter’就是了。
- 接著我們得為熒幕選擇色深﹐這裡我選擇‘4’﹐即﹕“16 bits (65536 colors)”。
- 最後﹐系統會問您是否要保存設定﹐當然啦﹗要不我們花這麼多時間在這裡幹嘛﹖所以當看到“Shall I write it to /etc/X11/XF86Config﹖”的時候輸入‘y’。
然後﹐您打 startx 看看就知道設定是否生效了。
現在﹐我們知道可以用 Xconfigurator﹑XF86Setup 以及 xf86config 來設定 X Window。但事實上﹐無論您用哪一個程式來設定 X Window﹐它們最終的目的是幫助您修改一個檔案而已。這檔案就是 XF86Config-4 了﹐如果這個檔不存在﹐或是在舊版本中﹐則是 XF86Config。您可以在 /etc/X11/ 目錄下面找到它。只要您懂得如何修改這個檔案的話﹐那麼剛才用來設定 X Window 的程式都可以不用了。不過﹐修改這個檔案可真的一點也不容易啦﹐如果您真的想碰它﹐最好做一個先備份。
在 XF86Config-4 這個檔案裡面﹐您需要注意的地方主要有三個 section ﹕monitor﹑device 和 screen。
拿我們剛才用 Xconfigurator 設定的樣板來看﹐我們應該在 monitor 那個 section 裡看到有這樣的一些句子﹕
Section "Monitor" Identifier "Royal Information Company TRL/RIC DH-1570M/DH-1570" VendorName "Unknown" ModelName "Unknown" HorizSync 29.0-70.0 VertRefresh 47.0-120.0 Option "dpms" EndSection |
比較剛纔我們在 Xconfigurator 所偵測到的數值﹐應該不難理解吧。
關於 device 的部份﹐則如下﹕
Section "Device" Identifier "Voodoo Banshee (generic)" Driver "tdfx" BoardName "Unknown" EndSection Section "Device" Identifier "Linux Frame Buffer" Driver "fbdev" BoardName "Unknown" EndSection |
事實上﹐您可以在這個檔案中定義多個相同的 section﹐但這些 section 只有在後面的 screen 中有使用到才有意義。這裡我們看到有兩個 device 的定義﹐分別使用 tdfx 和 fbdev 的 driver﹐前者會在後面的 screen 中使用。而 fbdev 通常可以讓您在找不到顯示卡驅動程式的時候﹐以 frame buffer 的形式來執行圖像程式﹐不過我這裡不討論如何設定 FB 了﹐請自行參考 HOWTO 文件吧。
在其它顯示卡的設定中﹐您甚至還可以看到額外的一些 “Option” 設定﹐如果您知道怎麼設定﹐可以一一修正過來的﹐尤其您要弄一些新卡的時候﹐常要手動的修改這些設定﹐但您必須參考說明文件進行。
再來看 screen 這個 section﹐您應該會看到諸如這樣的敘述﹕
Section "Screen" Identifier "Screen0" Device "Voodoo Banshee (generic)" Monitor "Royal Information Company TRL/RIC DH-1570M/DH-1570" DefaultDepth 16 Subsection "Display" Depth 16 Modes "1024x768" EndSubSection EndSection |
在這裡﹐‘Device’和‘Monitor’都要聯係到前面所設定的 Identifier 名稱(它們必須要一致)。至於其他的設定﹐則可以再行設定。有時候﹐您發現您設定的色深和解析度都不生效﹐可以考慮到這裡將那些您不想要的‘Subsection’註解掉就可以了。
一旦您的 X Window 能正確的跑起來﹐我強烈建議您為這個設定檔做一個備份。
cp /mnt/floppy/vmware_drv.o /usr/X11R6/lib/modules/drivers |
# 為 vmware 定義一個 device ﹕ Section "Device" Identifier "VMware SVGA" Driver "vmware" BusID "PCI:0:15:0" EndSection ...... # 將 Screen 裡的 Device 改為 vmware﹕ Section "Screen" Identifier "Screen0" # Device "Voodoo Banshee (generic)" Device "VMware SVGA" Monitor "CustomConfiguration" DefaultDepth 16 Subsection "Display" Depth 16 Modes "800x600" EndSubSection EndSection |
這樣就可以進入 vmware 的 X 世界了﹗註﹕這些修改不要錯誤的在真實主機上面設定哦。
不過﹐我發現如果重新啟動 vmware 的話﹐要先跑一次 Xconfigurator﹐再修改 XF86Config-4 才行﹐我不知道是什麼原因﹐但我會將這個檔備份起來﹐然後 copy 回去就好。
至此﹐只要我們輸入 startx 就可以進入 X Window 了。同時﹐我們也知道有好幾種 X Server 可以在 Linux 裡面跑﹐相對而言﹐我們當然也有各種不同的 X Client 可以使用。在 X 系統的 client 端通常稱為 Windows Manager。RedHat 7.1 的預設 Windows Manage 會是 KDE2 (K Desktop Environment)。然而事實上﹐您除了 KDE 之外﹐還有許多 WM 可以選擇﹐例如 Gnome﹑AfterStep﹑Fvwm95 等等﹕
KDE
Gnome
VMware
這裡﹐我不詳細講述怎麼安裝 wm 了﹐您可以到網路上找到一大堆 wm 的 rpm 回來安裝。如果您想輸入 startx 後進指定的 WM﹐您可以修改自己 home 目錄的 ~/.xinitrc 檔案(如果此檔案不存在的話﹐自行建立吧)。下面是這個檔案的範例﹕
#!/bin/bash # File Name: .xinitrc # ------------- #exec gnome-session exec startkde #exec /usr/X11R6/bin/RunWM --AfterStep #exec /usr/X11R6/bin/RunWM --WindowMaker #exec /usr/X11R6/bin/RunWM --Fvwm95 #exec /usr/X11R6/bin/RunWM --FvwmMWM #exec /usr/X11R6/bin/RunWM --icewm-light |
但是﹐在 RedHat 系統上﹐還有一個更簡單辦法哦﹐您只要執行下面命令就可以切換 WM 了﹕
echo "KDE" > /etc/sysconfig/desktop |
換句話說﹐您只要將 /etc/sysconfig/desktop 裡面的 KDE 換成 GNOME 或其它 WM 名稱﹐然後打 startx 就可以了﹗這是在使用者 home 目錄中沒有 .xinitrc 檔案時所有使用的預設值。也同時影響到後面提到的 Display Manager 的選擇。
嘿﹗還不趕快試試看您喜歡哪一個 WM ﹖
不同的 WM 在工具安排和版面設置上都有很大差別。通常﹐像 KDE 和 Gnome 這些漂亮的界面﹐都非常吃記憶體﹐這當然會導致整體效能的損失。但如果您換成 WindowMaker 或是 Fvwm95 之類的﹐則會迅速得多。我建議您不妨多嘗試一些不同的 WM﹐然後找出最適合自己習慣和環境的版本來用。
到這裡﹐相信大家已經知道什麼是 X server 什麼是 X Client 了﹐也假設您已經選擇好自己喜歡的 Window Manager。當您進入 X Window 之後﹐其操作界面都差不多﹐用慣了 Windows 的朋友﹐應該不會難適應的。因為我個人很少用 X ﹐ 所以我這裡就不介紹 X Window 的具體設定了。
如果要結束 X Window﹐只要從左下方的按鍵開始選擇 Logout 就可以回到文字界面﹐也可以在任何時候按 Ctrl + Alt + Backspace 終止整個 X window 進程(這在 X 有問題的時候非常好用)。假如您已經在 X Window 裡面的話﹐您也可以隨時切換到文字界面去哦。因為 Linux 是真正的多人多工系統﹐在同一時間裡面﹐他允許您透過多個界面登陸系統。我們通常稱這樣的操作界面為 console。您只要按著 Ctrl + Alt + F# 就可以隨意切換您的 console ﹐其中的 F# 在 RedHat 上面通常是 F1 - F6 之間﹐而 F7 則保留給 X 顯示使用(唯一的)﹐它必須建立在 F1-F6 其中任何一個 console 上面。也就是說﹐在任何時候﹐您都可以在 F1 到 F6 之間切換 console﹐但同一時間內﹐只能從其中的一個 F# 進入 F7 。假如 F7 目前已經被其它 F# 聯係在一起﹐那您必須等當前的 X window 結束之後才能使用﹐先搶先贏就是了。
要從一個 console 進入 X window﹐直接輸入 startx 就可以了﹐然後當前的界面會自動切換到 F7 去。當您從 X window 退出的時候﹐則自動回到原來的 console 界面去。不過﹐在任何時候﹐您都可以按 Ctrl + Alt + F# 進行 console 切換啦。
再回到我們以前在第二章“開機與關機”裡面提到的 Run Level﹐您會知道 X window 其實是跑在 RunLevel 5 上面的﹐而 RunLevel 3 則是一般的 console 。您可以在 /etc/inittab 這個檔案裡面﹐修改下面的句子﹕
id:5:initdefault: |
將 id: 後面的數字改為預設的 RunLevel﹐那麼在下次系統開機的時候﹐就自動進入您指定的界面中了。假如您設定為 5 ﹐那麼下次的登錄畫面則不是普通的文字 console﹐而會換成預設的 Display Manager 。
嗯﹖或許您會問﹕Display Manager 是什麼﹖簡單的說﹐就是管理 X client 的程式。不如﹐按下面的步驟來實作體驗一下吧。
確保您的預設 RunLevel 是 3 ﹐然後退出 X window 回到 console 中﹐也就是將 F7 釋放出來。然後輸入﹕
xdm |
然後﹐您的所看到的就是 Display Manager 啦﹗基本上﹐DM 會詢問您的帳號和密碼﹐只有通過後才讓您進入 Window Manager。目前這個 xdm 就是這麼簡單﹐但如果您用其它 DM 的話﹐則會提供更多的選擇﹐例如﹐讓您選擇 X Server ﹑Window Manager﹐重新啟動 X server ﹑等等。
不過﹐如果您一旦啟動了 xdm﹐當您退出 X window 的時候﹐將不會切會文字界面﹐而是回到 xdm 的界面﹐就算您按 Ctrl+Alt+Backspace 也一樣﹗那您要怎麼擺脫可惡的 xdm 呢﹖不難啦﹐當您在 xdm 界面的時候﹐按 Ctrl+Alt+F# 切換到其它 console﹐然後輸入﹕
killall xdm |
這樣就回到您啟動 xdm 的 console 了。現在﹐再請您輸入﹕
kdm |
哦﹐這個比 xdm 漂亮多了﹗它是 KDE 提供的 DM 啦﹐檢查看看您有哪些功能可以使用﹖完成後再到其它 console 將 kdm 砍掉﹐然後再輸入﹕
gdm |
或許﹐您已經猜到這個 DM 是 Gnome 提供的吧。沒錯﹗只是功能和選項和 kdm 有些分別而已。至於 RunLevel 5 的預設 DM﹐則取決於 /etc/sysconfig/desktop 所指定的 WM﹕如果是 KDE﹐那麼就是 kdm﹔如果是 GNOME﹐則是 gdm。
當我們認識了 Display Manager 之後﹐再讓我們看看 X 裡面的 Desktop 吧。
現在﹐先讓我們進入任何一個 Window Manager﹐比方說 KDE 好了﹐您會發現在底下的工具欄中間部份﹐分別有著 1﹑2﹑3﹑4 這四個圖標﹕
他們都是 X 裡面的 Desktop 號碼﹐預設上您是在第一個 Desktop 上面﹐所以數字 1 是反亮的。現在﹐請您按工具欄左邊第三個按鈕﹕
這樣會開出一個 terminal 視窗﹐也就在 KDE 裡面的 konsole。這時候請您按 Desktop 上的數字 3﹐您會發現剛纔開啟的 konsole 不見了﹗哈哈﹐事實上﹐並不是不見了﹐而是您跑到另外一個 Desktop 中的緣故。如果您再仔細的回去看 Desktop 1 的圖標﹐您會隱約看到剛纔打開的視窗位置﹕
當您再點回 Desktop 1 ﹐您就發現原來的 konsole 還在那裡啦~~~ ^_^ 如果您想將一個視窗顯示在所有的 Desktop 上面﹐您可以將視窗左上角的標題欄中第二個圖標按下﹐也就是那個長得像一個圖釘模樣的﹕。
-->
然後﹐您再仔細看看底下工具欄中的 Desktop 圖標﹐這個視窗會出現在所有的號碼上﹔如果再按一些那個圖釘圖標將之復原﹐那麼視窗只顯示在原本的 Desktop 中。
-->
嗯﹐如果您直接從 Microsoft 的 Windows Desktop 轉換過來﹐或許覺得這很新鮮吧﹗而事實上﹐令您更驚訝的還在後面呢﹗
在這裡﹐我假設您的網路已經設定好了(假設 IP 為 192.168.100.23)﹐同時可以連線到同一網路的另外一台機器上(假設它的 IP 是 192.168.100.24)。如果您不知道如何設定網路﹐可以參考“Linux Servers”之第一章“”。當然﹐您也可以暫時到這裡結束這本章﹐等日後架設好自己的網路之後﹐才回來這裡繼續。
首先﹐我們進入另外那台機器上的 X window﹐開啟一個 konsole﹐然後執行﹕
xhost + 192.168.100.23 |
完成後﹐回到您當前的機器上﹐執行﹕
echo $DISPLAY |
您應該看到結果是“:0.0”﹐這是告訴您當前的顯示在本機的第一個 Display 的第一個 Screen 上面。事實上﹐我在前面已經提到過﹕X 系統是一個 network-based 的 client/server 結構。您所架設的 X server 可以服務網路上任何一台 X client﹐而在那些 client 上﹐您還可以設定多個 Display (不同的輸入設備)﹐之後還可以設定不同的 Screen (不同的熒幕)﹐而在 Screen 中也可以指定不同的 window (視窗)。這些設定都是可以改變﹐或另外指定的﹐比方說﹐您可以改變當前的 Display 設定﹕
DISPLAY="192.168.100.24:0.0" |
這樣﹐您後面所執行的 X 程式﹐都將顯示在 192.168.100.24 那台主機的第一個 Display 的第一個 Screen 上面。現在﹐您可以執行﹕
konsole & |
再下來﹐將您眼睛移到 192.168.100.24 那台機器上﹐您會發現剛纔啟動的 konsole 竟然可以開在另外一台機器上﹗太神奇了吧﹖Jack﹗而且﹐您可以完全在那台機器上操作它哦~~
如果您要將顯示改回本機端﹐那麼再執行如下命令就可以了﹕
DISPLAY=":0.0" |
不過﹐您還是可以用 -display 參數來指定視窗開在哪裡啦﹐大多數的 X 程式都支援這個參數﹕
konsole -display 192.168.100.24:0.0 & |
接下來﹐讓我們再玩些更好玩的 X 設定。
先回到自己的機器上﹐退出 X window﹐並且備份好如下檔案﹕/etc/X11/gdm/gdm.conf ﹐然後編輯它﹐修改如下部份﹕
[xdmcp] Enable=1 |
然後將 gdm 跑起來﹕
gdm |
再來﹐將您的操作轉移到 192.168.100.24 那台機器上﹐然後退出 X window﹐但保持著 "xhost +" 的狀態。然後執行﹕
X -query 192.168.100.23 |
請問您發現什麼﹖如果一切順利﹐您是在 192.168.100.24 這個 X client 連上了 192.168.100.23 的 X server﹗這情形就像 telnet 一樣﹕您的熒幕﹑鍵盤﹑滑鼠在 client 這邊﹐然而您所登錄的系統卻在 server 那邊。呵呵~~~ 這樣玩法﹐甚至可以跨平臺的﹐也就是說﹐如果您設定得宜﹐甚至可以在 Microsfot Windows 上面跑 X client ﹗如果您有興趣﹐可以抓 x-win 這個程式回來安裝(到網路上找 x-win511.exe )﹐以及 dm_x511a.zip 這支 patch 回來一起安裝在 Windows 的機器上﹐那就可以讓您連進 Linux 的 X Server 上了﹕
更甚者﹐如果您架設有 Microsoft 的 Terminal Server﹐也同樣可以在 Linux 上面跑 Terminal Server 的 Client 哦﹗嗯﹐具體的設定我就不知道了﹐但可以告訴您我的確看過成功的例子。或者﹐您可以到網路上搜索一下 VNC 和 RDP 的文件。
怎樣﹖X 系統是否很引人入勝呢﹗呵﹐還不止這些啦~~~ 下面﹐再介紹一個好玩的東西﹕xmx 。
或許﹐您在電腦補習班上面都接觸過教學廣播系統吧﹐那些通常都是用硬體來實現的。假如您用 Linux 教學的話﹐只要網路接通了﹐用 X 就可以進行廣播教學而無須任何額外的硬體設備哦﹗有興趣嗎﹖您先到這個網站看看吧﹕
假如您有興趣﹐不妨參考如下步驟來玩玩看﹕
- 下載如下檔案到 server 端﹕
(或是) - 將檔案解壓並進入安裝 source 目錄﹕
tar zxvf xmx-2.1alpha.pl7.tar.gz
cd xmx-2.1alpha.pl7 - 閱讀 README 和 README.install 等檔案。
- 進行修改﹕
cd include
ln -s /usr/include/gdbm/dbm.h .
cd .. - 執行安裝﹕
xmkmf
make World - 不過﹐我發現事實上沒這麼簡單﹐這個安裝並不完整﹐您還必須動一些手腳﹕
cd server
vi Makefile
將 DBMLIB = -ldbm 修改為﹕ vi error.cDBMLIB = -dbm
將第 41 行註解﹐變成這樣子﹕ vi rgb.c/* extern char *sys_errlist[]; */
將第 100 到 102 行註解起來﹐變成這樣子﹕ make/* #else if (dbminit(dbname) == 0) usedbm = 1; */
以及將 205 和 206 如法泡制﹕/* #else item = fetch(item); */
make install
cd ../clients
vi xmxinit/xmxinit.c
將第 591 行註解起來﹕ cd ../* extern char *sys_errlist[]; */
make
make install - 然後執行﹕
mv ~/.xinitrc ~/.xinitrc.bak
xinit
xmxinit -- -floor 192.168.100.24:0
icewm
killall xmx
有經驗的朋友應該不難看出我前面這些步驟錯漏百出﹐而且效果上也不盡完美﹐例如不能全熒幕顯示﹑不能在當前的 window manager 中執行﹑等等。不過﹐礙於能力所限﹐僅提供這些經驗給大家參考。希望能起到拋磚引玉的效果﹐等真正的 X 高手幫忙改良吧。
嘿﹐別誤會哦﹗我這裡可不是要教您如何為系統進行中文化﹐而是簡單的讓您能用 netscape 瀏覽中文網頁而已。
中文化一直是項非常龐大的工程﹐您有興趣的話﹐到 逛逛。現在﹐您只需 將需要的檔案抓回去﹐然後按如下步驟安裝﹕
- tar zxvf chinese.tgz
- cp -a chinese /usr/X11R6/lib/X11/fonts
- mkfontdir /usr/X11R6/lib/X11/fonts/chinese
- vi /etc/X11/XF86Config-4 ﹐在 Section "Files" 裡面加上﹕
FontPath "/usr/X11R6/lib/X11/fonts/chinese/" - 假如您已經在 X window 裡面﹐請退出﹐或重新啟動 X server 。
- 進入 X window 之後啟動 netscape﹐然後點選﹕Edit --> Preferences --> Fonts
--> 於 For the Encoding 選擇 "Traditional Chinese (X-X-big5)"
--> 於 Vaviable Width Font 選擇 "Ming 16 (Taipei)"
--> 於 Fixed Width Font 選擇 "Ming 16 (Taipei)"
--> OK 離開 - 關閉並重新進入 netscape ﹐如果遇到網頁不能正確顯示中文﹐那就從 View 中的 Character Set 那裡選擇 Traditional Chinese (Big5) 就可以了。
沒錯﹗就這麼簡單 ^_^
到這裡﹐您或許會問我﹕上面那些 X window 的圖片是怎麼抓下來的啊﹖
好吧﹐好人做到底﹐下面就教您一個在 X window 裡面抓圖的法門﹕
1) 以 root 身份修改 script (我暫時取名為 grapic)﹕
#!/bin/bash ID=`xwininfo | grep 'Window id' | awk '{print $4}'` HDIR=$HOME/pics/ NOW=`date +%s` OUTFILE=$HDIR$NOW.tif if [ -z $ID ]; then echo "$0: Error: Can not get window id." exit 1 fi if [ ! -d $HDIR ]; then echo "Make directory, $HDIR, for picture saving." mkdir $HDIR if [ ! "$?" = "0" ]; then exit 2 fi fi xwd -frame -id $ID -out $OUTFILE echo "Window capture is saved as $OUTFILE." exit 0 |
2) 將 script 存於 /usr/bin 裡面﹐並加上執行權限﹕
cp grapic /usr/bin
chmod +x /usr/bin/grapic
3) 回到普通用戶身份並進入 X window﹐(我這裡用 KDE2)﹐然後開一個 terminal﹐並輸入 grapic ﹐選擇一個視窗(可以是 termial 自己)﹐確定沒有任何錯誤信息﹐並能在 ~pics/ 目錄裡找到抓下來的圖檔。
4) 然後在 desktop 上按右鍵﹐並選擇﹕'Create New' --> 'Link To Application ...'
5) 在 'General' 裡面﹐將程式名稱改為 grapic﹐同時為自己選一個喜歡的 icon。
6) 在 'Execute' 裡面的 'Command' 欄位填上﹕ /usr/bin/grapic 。
7) 按 OK 完成(不必修改其它)。
8) 將 Desktop 上面的 grapic 圖標擺好﹐點選它就能使用了﹗
9) 如果要抓最大視窗(或任何當前視窗)﹐那可以按 KDE 工具列的最左邊的“OK”開始﹐然後選擇 'Run Command...' ﹐ 輸入 grapic 即可。
這樣﹐您只要用 X window 裡面的 Gimp 就可以打開 ~/pics 裡面的圖檔進行編輯了。不過﹐我發現用上面方法抓到的視窗﹐會沒有邊框﹐抱歉﹐我不知道為什麼。假如您已經習慣使用 Gimp 的話﹐其實它本身就具備 Screen Shot 功能讓您抓取 X window 或整個 Desktop 的畫面﹐您點選 File 然後 Acquire 就可以找到。
如果您用 KDE 的話﹐它本身也帶有一隻抓圖程式 KSnapshot ﹐您可以從 Start --> Graphics 找到它。不過﹐最方便還是幫它建立一個快捷鍵﹐步驟如下﹕
日後﹐當您要抓當前視窗的時候﹐只要按著 Alt + PrintScreen 兩個鍵﹐就會彈出 KSnapshot 的視窗﹐然後按一下 Grab 按鈕﹐再點選當前視窗就可以抓下來﹐然後輸入路徑﹐並按 Save 按鈕就能將圖片以 png 格式存取起來了。非常方便哦﹗
至於其它的 X 工具非常多﹐留給您自己慢慢發掘吧﹗