google code-beautifer

星期六, 4月 08, 2006

Skippy -- 快速視窗切換應用程式



前言



新的Mac OS X 中的 Expose' 功能可以讓使用者在同時開啟很多視窗時,可以很容易的找
到所需要的特定視窗。那在Linux下呢? Skippy 就可以提供類似的功能。

這有何重要性呢?為了提高工作效率,有一些電腦使用者往往在電腦桌面上同時開了一
大堆視窗,然後在裡面切來切去。像我自己一開機就會開8個視窗: Gaim(即時通
訊), Skype(網路電話), Gnome-terminal(遠端電腦控制), Evolution(行事曆),
Firefox(瀏覽器), Thunderbird(電子郵件), Emacs(文字編輯), Krusader(檔案
管理)。每一個視窗就算沒有佔了一個全螢幕也會佔了半個螢幕, 就算我已經用上
了兩個1280x1024解析度的LCD螢幕,而且在我的桌面管理程式(Metacity)的工
作列上裝了虛擬螢幕,但不論何時切換到虛擬螢幕下的某個工作區工作,仍然往
往還是會得讓某些視窗重疊。假如又要開其他佔空間的應用程式如Gimp(影像
處理) 或 Openoffice (辦公套件),重疊情況就更嚴重。要是得用按鍵慢慢切到
埋藏在最底下的視窗不是件很愉快的事。這時候像Expose'這樣的功
能就十分有用。按一個快速鍵就會讓所有的視窗縮小並排在一起,不管之前有多
少視窗重疊,一下子就一目瞭然,再用老鼠點一下就可以選取要的視窗。不需要
先用[Ctrl][Alt]加方向鍵在不同工作
區切換後,再用[Alt][tab]在那個工作區裡眾多的視窗一個個輪流切換。

安裝Skippy



Skippy支援大多數的視窗管理程式。安裝也很容易,
以Mandriva Linux為例,在 contrib 裡有人包好了RPM,目前分別是
skippy-0.5.0-3mdk 或 skippy-xd-0.5.0-2mdk,取一個下載就可以了。
其他的Linux發行版如Debian, Gentoo 應該也有包好的程式。找不到包好的程式
的話可以到Skippy 的網站 http://thegraveyard.org/skippy.php直接下載原始
碼。

skippy-xd 會額外用到 XRender, XComposite, XDamage 及 XFixes extensions。
而目前在Mandriva 2006下,nVidia 官方驅動程式對這些支援不好,所以我選擇
裝skippy而放棄了速度比較快的skippy-xd。

安裝RPM後,先把示範的設置檔複製到使用者家目錄下,
cp /usr/share/doc/skippy-0.5.0/skippyrc-default ~/.skippyrc
再按個別需要用編輯器去修改設置檔,裡面最重要的參數就是起動的快速鍵,
預設是 F11鍵,要更動的話,要去找下面這一行改

[general]
keysym = F11

基本上不更動預設值就可以愉快使用了。

使用



要是有意每次開機就啟用Skippy,最好是寫好Deamon 形式的設置檔放到
/etc/rc.d/init.d/下。要是偶一為之,其實可以隨便開個終端機,先執行
skippy,然後隨時用快速鍵啟動就可以了。


以在Mandriva Linux 2006 上的Gnome 桌面為例(視窗管理程式是Metacity)
,此時桌面上開了許多視窗重疊在一起,參見下圖:

圖一: overlap

一但按下 [F11] 鍵後,所有的視窗都縮到適當的大小,而且互不重疊了,參見下圖:
圖二: Skippy
為了對照方便,我選擇了
[xinerama]
showAll = false
這個選項,所以看到只有當時游標所在的左邊螢幕才會縮排。

這時可以用老鼠點一下就可以選取要跳過去工作的視窗,不管之前是藏在哪裡。
假如視窗縮圖太小造成辦識不易,移動老鼠到個別視窗縮圖上時,skippy 也會
自動顯示該視窗的名字以供辨識。
要放棄視窗預覽模式的話,按[ESC]會取消而回到沒按[F11]前的狀態。


不過在nVidia 自己的 Twinview雙螢幕模式上工作偶爾顯示會有些不正常,
為了用nVidia官方驅動程式上的3D加速功能。我並沒有用x.org自己出的nVidia驅動程
式來測在 xinerama 雙螢幕模式下是否有同樣的問題。看起來好像在某些情況下,
縮圖不會按照程式最新的內容顯示來呈現縮圖,FireFox 的分頁顯示也會照成問
題。大家也可以看到Xmms的播放清單及等化器也沒在縮圖中顯示。執行多重gnome
終端機就也會造成沒辦法正確顯示自己的縮圖。

趨勢延伸閱讀



Linux下類似的東西還有 Expocity。Expocity是基於metacity 的hack,在速度
上比Skippy 快一些,不過限制很多,必須先刪除 metacity 後才能安裝
Expocity。只為了新增一個功能要拿掉整個桌面管理程式,實在不方便。
而且Expocity 好像是原作者偶一為之的作品,2004年元月後就沒再更新。
Metacity 都已配合Gnome更新到 2.14。所以我最後還是選擇了Skippy。

目前 Skippy 目前還在開發的階段,而且需要太多的運算,效能並不是太好,以
我在Mandriva 2006下測試的例子。Nvidia 4200Ti雙螢幕卡既便用了Nvidia官方
7000系列的驅動程式,還是會有些延遲的現象,特別是在第一次縮圖時,再來使
用就還好。而我朋友的低階G4 powerbook 跑Mac OS X用Expose'就可以有很順暢的效果。
不過純就在Linux桌面環境下比較,還是會比傳統的視窗切換方式有效率。

在Linux上真正要作到如Mac OS X 中的 Expose' 順暢的效果,要等x.org下一代
(第7版)的X視窗伺服器廣範為各大Linux發行版納入。屆時會把Novell所推出的Xgl(X over OpenGL)的一
些相關成果放進去,其中包含前面提到skippy-xd所需要的一些X視窗加速功能,這些
圖形的縮放及透明重疊顯示,需要充份利用顯示卡的硬體加速功能才能大幅提升
效率。不過不用急,自由軟體的發展很快,這一天很快就到了(搞不好會比微軟一
直生不出來的Windows Vista 還要快...)。記得Metycity的發展程式其實已經有包含
composite/render 的實驗功能,不過已往X視窗伺服器對這些新功能的支援不太穩定,
所以到使用者手上包好的套件檔案往往都把實驗功能拿掉了。一但x.org第7版X
視窗伺服器穩定下來,其他相關的桌面或視窗管理程式很快的就會配合上來。

Novell 才發表新版的Suse Linux 下的compiz視窗管理程式就實作了類似expose'的功
能,好像稱為desktop organization ,對xgl有興趣的可以參考這裡的多媒體示
範: http://www.novell.com/linux/xglrelease/
但從示範影片看來速度似乎沒expose'快,不過東西才剛發表,要正式出來後一對一測試才比較有意義。

相對於 Suse Linux 的GLX要揚棄舊版X視窗伺服器的架構出發,Fedora/nVidia 從儘
量向下舊版的角度切入,提出另一套加速的方案。 Fedora 提出了 AIGLX (Accelerated Indirect GL X)
可以參考 http://fedoraproject.org/wiki/RenderingProject/aiglx
nVidia則在這裡
http://developer.nvidia.com/object/xdevconf_2006_presentations.html
發表用現有(6.9版)X視窗伺服器來達成 Composited X 桌面

兩者到底最後會不會有其一能像 X.org 大幅吃下XFree86 的版圖,那就只有靜觀後續的發展,
不過可以確定用加速X視窗伺服器來提高桌面使用環境的工作效率是未來的趨勢,

沒有試過這方面的朋友,不妨試試Skippy來看看未來桌面環境的趨勢 。

今天在要發佈這篇文章時,發現nVidia剛發表了新的 8756版,其中包含了許多
與此文相關的支援,待過一陣子再來更進一步探討X視窗新的發展

其他參考資料




  • 對Expose原由有興趣的可參考 Apple 網站,或維基百科的說明
    http://zh.wikipedia.org/wiki/Expos%C3%A9_(Mac_OS_X)
  • 對expocity有興趣的除了參觀官方網站
    http://www.pycage.de/software_expocity.html外,可以參考Yuren’s Info Area的這一篇
    http://yurenju.info/?p=112#comments
    上面還有Expocity 的示範影片(472K)
  • gnome開發者Seth Nickell發表的Next-Generation Rendering For the Free Desktop
    http://www.gnome.org/~seth/blog/xrendering

沒有留言: