體驗帶有GNOME 3的Fedora 15
現在Ubuntu有個趨勢,就是兩年一個的LTS版本品質才算可以,而其他六個月一次的版本,有點把用戶當小白鼠——之前我總說Fedora新特性引入之快以至于把用戶當小白鼠,現在Ubuntu已經趕超了。
OK,實際上沒這么夸張啦,無論如何Ubuntu 11.04還保留了GNOME經典桌面。這篇文章,我主要想寫一下這兩天體驗GNOME 3@Fedora 15的感受。
我在MacBook Air上單獨分了一個區安裝了Fedora 15正式版,加了RPM Fusion的源,裝好了nVIDIA顯卡、Boardcom無線驅動,很快就配置好了一個可以投入使用的環境。與Ubuntu 11.04不同的是:
●Fedora需要加源才能安裝這些私有驅動,而Ubuntu默認便可以使用自帶的工具安裝;
●同樣是2.6.38內核,Fedora不能使MBA揚聲器發聲,而Ubuntu可以;
●同樣是2.6.38內核,Fedora很穩定,而Ubuntu會死機;
然后就體驗了GNOME 3桌面,總體來看正式版的可用性還是比較好的,運行很穩定,也沒有什么明顯的Bug。要說的話,GNOME把“關機菜單”隱藏起來取而代之是“掛起”這簡直是一個反用戶的舉動!
另外,正式發布兩個月之后的GNOME 3的周邊資源已經相當豐富了,有一大堆設計師設計的桌面主題都非常的漂亮,另外也有不少有用的擴展被開發出來,充分發揮了GNOME 3的定制能力。
如下圖,是Elementary的GNOME Shell主題,你還能看出來我加了什么擴展嗎?
作為一個開發者,我理所當然地也要玩玩GNOME Shell的擴展開發。目前官方并沒有文檔(自由軟件項目一直缺的都是文檔、文檔和文檔!),于是我參考其他源碼和這兩篇教程,把我的“VPN Indicator”移值到了GNOME Shell里。
More GNOME Shell Customisation
如圖所示(除UI部分外,其余還未完工):
總體來說,寫GNOME Shell的擴展還是比較輕松和愉快的,只要你懂JavaScript,知道什么是prototype,再加些類GObject API的使用經驗,就可以開工了。
簡單解說下我目前擴展所做的工作吧(源代碼在此:https://github.com/tualatrix/vpn-indicator/tree/master/gnome-shell)
●首先構建“/etc/openvpn/”這個目錄的GFile對象,然后調用“enumerate_children”方法遍歷其子文件(我嘗試用GLib的glob,但是失敗了)
●通過JavaScript正式表達式匹配后綴為“.ovpn”的配置文件,生成如上圖所示的“PopMenu”
●調用GFileType的“get_symlink_target”方法取得當前配置的真實路徑,然后就可以使用PopMenuItem的setShowDot方法來指示當前使用的配置了
●最上面是一個PopupSwitchMenuItem對象,計劃是它在Toggle的時候再去調用DBus方法以控制VPN的開關,但是目前無法取得DBus(SystemBus)返回的數據,于是得不到狀態
總體來說,GNOME Shell提供的一些UI庫,如StIcon、PopMenu、PopMenuItem和PopMenuSwitchItem等還是很豐富的,這些都可以用CSS來控制樣式,其次再利用GLib、Gio等庫,可以完成任何有關本地、網絡和進程間通訊等桌面應用程序常用到的任務,只要有什么想法一般都是可以實現的。
但目前GNOME Shell還有嚴重的問題——它的擴展機制僅僅是擴展自身,而不關心第三方應用程序與它的集成度,于是比較悲劇的是,連iBus輸入法暫時都用的是舊的StatusIcon。
這方面Ubuntu就做的好多了,AppIndicator、Unity就設計了比較好的API供第三方應用程序使用,并且已經有大量第三方應用程序開始采用。
GNOME Shell、Unity,兩者應該取長補短,這會是最好的。讓我真的在這兩者中選擇一個,我還真選不出來。目前的總結是:
●GNOME Shell:簡潔、一致、穩定、擴展能力強
●Unity:不夠穩定、Bug多、很多不一致、第三方應用集成性好、性能相對好一些
到了Ubuntu 11.10,它將同時搭載GNOME Shell和Unity,到時用戶會選哪個呢?我又會用哪個?到時再看著辦吧!
原文:http://imtx.me/archives/1638.html
【編輯推薦】