Xgl 介紹:Linux 下的 3D 桌面特效

作者:徐秉義(Albert Hsu)

近年來拜硬體技術日新月異所賜,使得顯示卡 2D 與 3D 功能越來越強大,幾年前原先只應用在繪圖、電玩遊戲技術方面的 3D 功能,也漸漸走入最基礎的作業系統,促使各家作業系統廠商紛紛提出 3D 桌面系統,這其中又以 Windows Vista 名氣最大,而 Linux 在這方面則提出 Xgl 技術來吸引大眾目光,Linux Distribution 廠商 Novell SuSE、Ubuntu、Gentoo 與 Mandriva 也都率先將 Xgl 應用在其新版本上,可見 3D 桌面系統是未來趨勢。

今年(2006 年)在 SuSE Linux Enterprise 10 產品發表會上,不只看到 Linux 在伺服器端的進步,像是「Xen 虛擬機器」、「iSCSI 與儲存設備方面支援」,同時也看到 Linux 在桌上型部份的成長,像是「絢麗 3D 桌面效果」、「更人性化的使用者介面」、「更方便的整合搜尋工具 Beagle」等等,其中最明顯的就是『Xgl 3D 桌面效果』,使得 Linux 搶先在 Windows Vista 還未正式上市前,在桌上型作業系統的戰場,投下了一顆震撼彈。

底下先行簡介 Xgl 後,接著筆者就以 SLED 10(SuSE Linux Enterprise Desktop 10)配合 Nvidia GeForce 6600 PCIe 顯示卡,來介紹如何在 Linux 玩 3D 桌面效果,內容包括手動安裝 Nvidia 顯示卡驅動程式的整個流程。

Xgl 介紹

Xgl 是以 OpenGL 為基礎的 X Server,使用 OpenGL 的 Library 來配合顯示卡硬體 3D 加速功能,可以做到像是「3D 旋轉桌面」、「多個視窗縮圖」、「快速放大縮小圖形畫面」、「視窗果凍效果與變形」、「快速變換視窗透明度」與「水波與漣漪」等等圖形特效,使得我們在應用桌面系統的時候,更加的有效率,並且也包含部份的趣味性。

進階學習:Linux/Unix 上使用的 OpenGL 在微軟亦有相對應技術就是 DirectX / Direct3D。

以下分別是來自中文與英文的維基百科上 Xgl 圖片快照,可粗略看出「視窗透明效果」、「視窗變形效果」與「3D 旋轉桌面效果」,我們也可以在各大搜尋引擎(像是 YAHOO 或 Google)找到 Xgl 相關的圖片。

快照自 http://en.wikipedia.org/wiki/Image:Compiz_quinn_09-14-2006.png

d 圖檔

快照自 http://zh.wikipedia.org/wiki/Image:Movie-cube.jpg

d 圖檔

實戰 3D 桌面系統

硬體準備-支援 Xgl 的顯示卡

硬體部份所要準備的,最重要就是一張要能夠支援 Xgl 的顯示卡,筆者手邊這款顯示卡詳細資訊如下:製造商 nVidia 型號 GeForce 6600 採用 PCIe 介面、代號 NV43,實際運行 Xgl 的狀況還算可以,只是比較會耗用 CPU 資源,這張卡其實對 Xgl 的支援並不算是很好,但還算堪用。

溫馨提示:在 Linux 可使用指令「lspci」列出 PCI 介面上的硬體設備資訊,我們需要的 AGP、PCIe 介面顯示卡設備資訊也會列在其中。

該如何得知手邊的顯示卡是否支援 Xgl,比較笨的方法就是實際測試,雖然比較花費時間但也是最實際的方法,筆者比較建議先行上網查詢一下,這會是較聰明省時的方法,但網路上說得其實不一定準確,還有就是新舊版本的 Xgl 或 Linux Distribution 也有可能支援不同的顯示卡,截至筆者截稿前(2006年10月)拿捏出一個概念如下:

廠商大概就是 Intel(整合式晶片)、Nvidia 與 ATI(ATI 於 2006 年為 AMD 所併購),其他廠商的機會就比較低了,還有待大夥的努力;至於型號以較新、較高階的機會較大(低階也不一定說是完全不行,但太舊的顯示卡的機會就屬於渺茫)。

筆者測試過的顯示卡,可以使用 Xgl 的除了現在本文談到的這一張 GeForce 6600 之外,還有 Intel 945G 整合式顯示卡(只要使用指令 sax2 設定介面,開啟 3D 功能即可),失敗的有 nVidia 較舊的 TNT2 系列顯示卡(分別為 8M 與 16M 顯示卡記憶體,代號 vanta、RIVA TNT2 各一),至於 ATI 的顯示卡,剛好沒有測試到。以上純粹是經驗談,實際情況則需要試了才知道。

網址 http://en.opensuse.org/Xgl 所列出的硬體建議列表

hardware 建議畫面

溫馨提示:在 SLED 10 安裝好後,開啟 /etc/X11/xgl-hardware-list,可以看到 SLED 10 Xgl 所支援的顯示卡列表

使用指令「less /etc/X11/xgl-hardware-list」觀看列表的情形(第8行到第31行),底下列表中 G 開頭的代表支援良好、B 開頭代表不工作、S 代表勉強可用但是較慢、U 則是無法辨識型號

#
# The match is not anchored at the end, so, eg, putting just a
# vendor and device will match any revision, subvendor, and
# subdevice of that card.
#
# The status code is one of:
#
#     G ("Good"):    The card is known to work with Xgl.
#
#     B ("Bad"):     The card does not work with Xgl.
#
#     S ("Slow"):    The card sort of works with Xgl, but we don't
#                    recommend you use it. (It is either too slow,
#                    or slightly buggy.)
#
#     U ("Unknown"): The card wasn't recognized, but the vendor
#                    was, in which case the suggested packages and
#                    setup script may still be useful.
#
# There are also variables, which specify things about the cards that
# follow them:
#
# DRIVER indicates the X driver to be used. (This is so that we don't
# get tricked into using a driver with only software support for 3D.)
/etc/X11/xgl-hardware-list lines 8-31/436 7%

「less /etc/X11/xgl-hardware-list」觀看第66行到第89行的情形,可看出現階段支援 nVidia 顯示卡型號,支援程度好的(G 開頭)有 GeForce 6600 GT,筆者的雖然不是高階 GT 版本,但實際跑起來勉強可用。

##
## NVIDIA cards
##
DRIVER   = nvidia
PACKAGES = x11-video-nvidia nvidia-gfx-kmp
SETUP    =
XGL_OPTS = -accel glx:pbuffer -accel xv

# Supported NVIDIA cards
G 10de:0092     # GeForce 7800 GT
G 10de:0140     # NV43 [GeForce 6600 GT]
G 10de:0161     # GeForce 6200 TurboCache(TM)
G 10de:0326     # NV34 [GeForce FX 5500]

# Unsupported-but-partially-working NVIDIA cards
S 10de:00ce     # NV41GL [Quadro FX 1400]
S 10de:0179     # NV17 [GeForce4 420 Go 32M]
S 10de:0185     # NV18 [GeForce4 MX 4000 AGP 8x]
S 10de:0286     # NV28 [GeForce4 Ti 4200 Go AGP 8x]

# Unrecognized NVIDIA cards
U 10de:0040     # GeForce 6800 Ultra
U 10de:0041     # GeForce 6800
U 10de:0043     # GeForce 6800 XE
/etc/X11/xgl-hardware-list lines 66-89/436 18%

軟體準備

準備的軟體主要就是一個有 Xgl 桌面 Linux Distribution,筆者準備的是 SLED 10,至於如何取得 SLED 10 的方式,筆者是因為參加 Novell 產品發表會而得到試用版,或是您可以直接向「台灣網威」洽詢,關於「台灣網威」可在網址 http://www.novell.com.tw/ 有詳細介紹,或是直接到 Novell 原廠英文網站 http://www.novell.com/ 下載試用版。

溫馨提示:需要先註冊成 Novell 會員,才可以下載軟體,並且為了防止中途斷線,請使用續傳軟體(例如 Linux 下的 wget 軟體)來下載。

下載 SUSE Linux Enterprise Desktop 10 網頁畫面,網址 http://download.novell.com/Download?buildid=N1YveG_t53Y~

download 畫面

安裝 SLED 10

筆者安裝 SLED 10 方式,大多採用預設值(按「Enter」或「下一步」),有些可能不是使用預設值的部份,介紹如下:

來到選取「語言/語系」畫面,既然要使用桌上型 Linux,那就選「繁體中文」吧!

zh 畫面

選擇使用中文後,到調整「時間與時區」畫面,選擇「亞洲 / 台北」的「本地時間」

localtime 畫面

筆者經常遠端管理 Linux,所以會開啟「ssh」與「vnc」功能

firewall 畫面

現在裝新版的 Linux 很少遇到網路卡不能驅動的,所以筆者選擇「跳過測試」

noUpdate 畫面

建立一個帳號當普通帳戶用,筆者使用帳戶名稱 al

useradd 圖檔

至於其他沒提到的部份,大多是按下「下一步」即可,大致上整個安裝流程相當順暢,只要有裝過作業系統的讀者朋友應該就沒有問題,跟安裝 Windows 差不了多少,從光碟機安裝大約 4GB 的資料到硬碟一般需要 1 個多小時左右的時間。

基礎圖形模式操作

在裝好以後的首次登入,會給您一個耳目一新的感覺,美觀程度直逼 Mac OS X,並且整個開始功能表的操作更加人性化,可依照您不同的使用習慣來顯示(我的最愛應用程式、最近使用應用程式、最近使用的文件)。

SLED 10 開始功能表的畫面

human 圖檔

SLED 10 的畫面,可以發現大多數的硬體已經於安裝完畢後就統統都支援(像是網路與音效,顯示在桌面右下角),不需額外安裝驅動程式。

d 圖檔

在開始功能表內「控制中心」,呼叫出來是一個很像 Windows 控制台的畫面,比較值得一提的是,畫面上除了提供分類(群組)外,在左邊的中間還有「一般常用工具」,最特別的是,上方提供的「搜尋功能」(過濾)給愛用搜尋的使用者或管理者來應用。

d 圖檔

搜尋不只好用,並且可以順便趁這個機會來測試 Linux 在「中文輸入」方面也是相當實用的(筆者正使用「新酷音」輸入法,類似微軟新注音)

filter 圖檔

一般若是顯示卡比較好的,經常會造成預設顯示出來的字太小,此時就會需要調整桌面解析度,也是相當直覺化的在控制中心-硬體分類「螢幕解析度」,使用完後還會很貼心的保留在桌面右下方「快速啟動區」(若是以後不常常調整,也可以從快速啟動區移除)

d 圖檔

接下來說到我們的重點-『Xgl 桌面特效』也是在控制中心-外觀分類「桌面特效」,這張顯示卡在還沒自行安裝原廠驅動程式前,還不能使用 3D 特效。

還無法使用 3D 桌面的 Xgl 控制畫面

d 圖檔

下載新版顯示卡驅動程式

打開 Firefox 瀏覽器來到 nVidia 官方網站 http://www.nvidia.com/ 依網頁指示連接到下載 Linux 版 nVidia 顯示卡驅動程式,Firefox 預設會將檔案下載至桌面,筆者下載到的檔名為 NVIDIA-Linux-x86-1.0-8774-pkg1.run。

Note:注意到 Firefox 狀態列右方(也就是整個畫面右下方)有隻可愛的小狗狗嗎?那就是 Beagle 搜尋功能配合 Firefox 瀏覽器,所以當我們使用 Beagle 搜尋時的關鍵字也可以是曾經看過的網頁資料內容。

d 圖檔

使用及調整 gnome-terminal

安裝這個驅動程式需要用到指令模式,GNOME 圖形介面使用 gnome-terminal 當作預設「終端機模擬器」,在呼叫程式後,因為 gnome-terminal 預設字型在螢幕解析度 1024 x 768 時看起來就很小造成不舒服,所以請先調大一點。

在 gnome-terminal 下拉『編輯』選單找到「目前的設定組合」來更改字型,請記得先去掉「使用系統指定的終端機字型」,這樣才能更改下方的字型設定。

d 圖檔

至於更改 gnome-terminal 終端機顏色成「淺黃底黑字」、「黑底綠字」與「白底黑字」等等,也是在同一個地方的第三個分頁『色彩』,也請記得先去掉「使用系統佈景主題指定的色彩」,這樣才能更改下方的「內置色彩組合」。

d 圖檔

溫馨提示:以上這兩項調整是筆者在教學 Linux 期間,同學問到關於 gnome-terminal 的 FAQ

更新顯示卡驅動程式

下載到 NVIDIA-Linux-x86-1.0-8774-pkg1.run 該怎麼用呢?這個 .run 檔並沒有辦法使用滑鼠點一點就搞定,需使用指令「sh NVIDIA-Linux-x86-1.0-8774-pkg1.run」使用文字模式下的選單來安裝,筆者於安裝驅動程式期間遇到三部小插曲,需先解決這些小插曲,才有辦法繼續安裝,一個是「需使用 root 權限安裝,不能用一般使用者身份安裝」第二是「要先停用 X Window 進到文字模式(Runlevel 3)安裝」最後一個是「需先行安裝 gcc 套件(用於編譯)與 kernel-source 套件」

溫馨提示:在 Linux 若遇到安裝失敗,通常會有 log(紀錄)檔案,有時會放在當下目錄(就是執行程式的目錄),也有可放在 /var/log 目錄下。

插曲一錯誤畫面

需用 root 跑圖檔

解決方法:使用指令「su -」取得 root 身份後,再執行「sh NVIDIA-Linux-x86-1.0-8774-pkg1.run」(記得先使用 cd 指令切換到 .run 檔放置的路徑下)

溫馨提示:在使用文字模式下的選單(menu)模式時,無法使用滑鼠來點選按鈕,請善用「Tab 鍵」、「空白鍵」與「Enter 鍵」來控制與設定。

插曲二錯誤畫面

runX 圖檔

解決方法:使用指令「init 3」切換到 runlevel 3 ,使用 root 登入後,再度執行「sh NVIDIA-Linux-x86-1.0-8774-pkg1.run」(一樣要記得先使用 cd 指令切換到 .run 檔放置的路徑下)

溫馨提示:使用指令「init 5」可切換到圖形模式(runlevel 5)

插曲三錯誤畫面-缺少 kernel-source

kernel 圖檔

插曲三錯誤畫面-缺少 gcc

gcc 圖檔

解決方法:就是把缺少的「gcc」、「kernel-source」套件裝起來,您可以使用指令「yast2 -i gcc」、「yast2 -i kernel-source」或是從『開始功能表』的「軟體安裝程式」來解決這個問題。

使用 yast2 來安裝軟體的快照

kernel source 圖檔

軟體安裝程式搜尋並選取 gcc 畫面,接著再點選右下方『安裝』即可。

d 圖檔

軟體安裝程式搜尋並選取 kernel-source 畫面,接著再點選右下方『安裝』即可。

d 圖檔

正確處理以上三部插曲後,成功安裝、正在編譯顯示卡驅動程式的快照。編譯完成後,請利用指令「init 5」切換到圖形模式,就可以開始享用您的 Linux 3D 桌面囉!

溫馨提示:使用 SuSE Linux 若是遇到需要調整 X Window 時,通常是使用「sax2」指令來設定(可設定顯示卡、螢幕、鍵盤與滑鼠等等)

build 圖檔

溫馨提示:各家硬體廠商的 Linux 驅動程式安裝方式雖然還不像 Windows 那般直覺化,但其實只要有一點使用 Linux 的底子,配合原廠網站上所提供的安裝說明,相信您也可以輕輕鬆鬆的在 Linux 安裝驅動程式。

使用 Xgl 桌面特效

安裝完成 nVidia 驅動程式後,迫不及待的來到「桌面特效」控制畫面,當按下「啟用桌面特效」按鈕後,會立即登出、再次登入後「桌面特效」控制畫面就可以完全控制了(共四個分頁)

我們立即感受到特效的部份,視窗的部份像是「視窗結束時淡出」、「視窗搖擺(果凍效果)」、「按下 Alt+Tab 切換視窗時會呈現縮圖」

分頁一

d 圖檔

分頁二

d 圖檔

桌面立方體的部份像是「使用 Ctrl+Alt+← →旋轉桌面」、「使用滑鼠拖曳桌面立方體」、「視窗遇到桌面邊緣是否要翻轉」等等

溫馨提示:設定畫面中的「控制鍵」就是『Ctrl 鍵』、「超級鍵」就使用『微軟鍵』、按鍵一是滑鼠左鍵而按鍵三就是滑鼠右鍵。一般來說,三鍵滑鼠有中間鍵而兩鍵滑鼠可使用左右鍵同時按下來取代中間鍵,另外滾輪滑鼠的滾輪其實也是可以按下去的喔!(可使用在文字複製後的「貼上」功能)

最後一個分頁『其他功能』:包括「視窗選擇器」、「放大鏡功能」「水波、下雨」 特效。

分頁三

d 圖檔

分頁四

d 圖檔

「並排視窗且產生縮圖效果」快照自網址 http://www.novell.com/products/desktop/img/preview_screenshots/apps3.png

並排應用程式縮圖效果圖檔

在當紅的 YouTube 網站,搜尋關鍵字「Xgl」會找到許許多多展示 Xgl 3D 桌面效果的影片,下圖快照是使用兩個螢幕正在展示『桌面局部放大』效果

桌面局部放大效果

結語

Linux 在桌上型電腦的發展與未來

Linux 在桌上型電腦的應用,其實已經有相當久的一段時間,漸漸的一些常用軟體也變得更加人性化,像是瀏覽器 FireFox、收電子郵件的 evolution、即時通訊 gaim、文書軟體 OpenOffice、PDF瀏覽器 evince 與 acroread 等等,甚至一些商用軟體也是相當活躍,像是 Skype、Realplay 等等,這回 Xgl 3D 桌面特效,為 Linux 桌上型電腦應用,再度往前跨一大步。

通往 Linux 桌上型電腦的學習之路

對於一些正在學習 Linux 或是想試著使用 Linux 當作桌上型作業環境的讀者朋友們,其實筆者的建議是您不需要急著脫離 Windows 操控環境,怎麼說呢?畢竟學習 Linux 並不是為了不使用 Windows 為目的,而應該是先以原先 Windows 操控為基礎,來漸漸習慣 Linux 的操作環境,像是使用 putty.exe 透過 ssh 使用文字模式下的 Linux 指令列,或是使用 vnc 來使用 Linux 圖形桌面環境,當然若是可以直接面對面操作 Linux 更好(像是使用 KVM 切換器或是使用兩組電腦),而對於 Linux 上的一些桌面應用程式,像是 FireFox、OpenOffice、ThunderBird、Gaim 有些都有出 Windows 的版本,事實上可以先行下載到 Windows 來安裝執行使用看看,久而久之您就會習慣許多 Linux 上桌面所使用的軟體,到後來就會是一個 Windows / Linux 兩棲甚至遇到 Mac OS X 也一下子就能夠適應囉!

溫馨提示:搭配虛擬機器軟體(VMWare、Xen 或 VirtualPC),就可以一台電腦當兩台以上使用,這也是個很方便學習 Linux 的方式。

Linux 有許多好用的地方與長處優勢,想當然爾 Linux 也有其缺點與弱項,通常建議剛剛接觸 Linux 新朋友,多去使用 Linux 長處、好用的地方,先行避開 Linux 比較不足之處,這樣才不會一下子就自我阻斷了學習 Linux 之路,底下簡單列出一些 Linux 現階段常遇到的強弱項目,提供您作參考:也許您也可以像 http://distrowatch.com/ 網站所說得一樣『重拾使用電腦的樂趣,使用 Linux』(Put the fun back into computing, Use Linux, BSD.)

Note:這個 DistroWatch 網站專門介紹各家 Linux Distribution(也包含 BSD)動態的站台。

distrowatch 圖檔

 

強項例如弱項例如
各類伺服器架設一般網頁伺服器
Web-Based AP 伺服器
郵件伺服器
資料庫伺服器
即時通訊伺服器
常見於 Windows 的電玩遊戲在各類遊戲的支援度不高,但至少還有一些內建的益智遊戲
(像是:華容道、貪食蛇)
嵌入式系統應用
(Embedded Linux)
路由器、NAT、防火牆
網路負載平衡主機
防垃圾信與病毒信主機
入侵偵測防禦系統
VOIP 語音主機
影音傳遞或接收主機
部份的中文使用與應用安裝無蝦米輸入法(步驟較繁瑣)
程式開發C 與 C++ 開發環境
JAVA 與 .Net(Mono)
PHP、Perl 與 Python
幾乎各種程式語言皆可
同樣也是關於程式開發整合式開發環境介面(IDE)
許多都處於發展中階段
有多套可用可選擇但卻不見得穩定好用
磁碟管理軟體磁碟陣列
(Software RAID)
Linux Volume Manager(LVM)
專門給桌上型使用的硬體
支援程度不若 Windows 齊全
對於沒有 PostScript 功能的印表機支援度較低
與大型系統銜接相關應用SAN(Storage Area Network)
Cluster 與 Cluster File System
iSCSI 與 Fibre Channel
專門寫給 Internet Explorer 使用的網頁
或是只能在 Windows 執行的程式
IE-Based 的 Web-Based 應用程式
只發行 Windows 版的應用程式
(像是某些會計系統或 ERP 系統)
虛擬機器Xen 與 VMWare圖形方式的使用介面與管理介面
不像 Windows 那般統一
各家 Distribution 做出來的管理介面都不太一樣
(這個情況對於 Linux 的發展其實有好有壞)

Valid XHTML 1.0! Valid CSS! Get Firefox

Creative Commons License
This site is licensed under a Creative Commons Attribution 2.5 Taiwan License.