親手打造自己的Linux桌面環(huán)境
譯文【51CTO.com快譯】試問:Linux的最大好處是什么?安全性、穩(wěn)定性、高性能,還是它帶來的自由?它在所有這些方面都表現(xiàn)不賴,但是我們想著重強調(diào)的另一個特點是其模塊性。作為一款深受Unix影響的操作系統(tǒng),GNU/Linux被設(shè)計成容易拆開來,又容易裝回去,如果一切順利的話。系統(tǒng)的各個主要組件都是用小組件起來的,這些小組件可以忽略或更換,這就是為什么我們會有如此多不同的Linux發(fā)行版的原因之一。
當(dāng)然,這種模塊性有時增添了復(fù)雜性。不過它也增添了可靠性,因為各組件被設(shè)計成可以獨自運行;如果某個組件崩潰或遇到了某種軟件錯誤,其余組件在理想情況下會繼續(xù)正常運行。所以,你可以用另一個外殼來代替Bash,或者改用一個替代的SSL庫,或者甚至更換整個init系統(tǒng)――我們從主要的發(fā)行版遷移到Systemd見到了這一幕。
但是桌面環(huán)境方面又如何呢?KDE、Gnome和Xfce不都是大型的整體式項目嗎?實則不然。它們是用彼此高度依賴的較小的程序和庫組建起來的,但是可以去掉某些組件,或者把它們換成其他組件。如果更進(jìn)一步,還可以完全從頭開始構(gòu)建一個桌面環(huán)境,你只要精心挑選幾個特定的程序,把它們連接起來,然后確保它們可以同時運行。
從頭開始構(gòu)建一個桌面環(huán)境其實相當(dāng)好玩,也是一次很好的學(xué)習(xí)過程,所以我們在下面就介紹這方面。你可以選擇適合自身工作流程的組件,最終結(jié)果就是,比像Gnome和KDE這些“重量級”桌面環(huán)境輕盈得多、快速得多。另外,你在參加下一次Linux用戶組會議時可以向朋友吹噓,你才不用哪個普通的預(yù)包裝桌面環(huán)境,而是構(gòu)建了自己的定制桌面,顯擺一下你在Linux這條路上比別人走得更遠(yuǎn)。
下面是我們將要使用Openbox、PCManFM和Docky創(chuàng)建的定制桌面,但是可以把所有組件完成其他的東西!
一、桌面環(huán)境是什么?
啟動你的常規(guī)桌面,看一下:上面可能有面板、通知區(qū)、窗口標(biāo)題欄以及其他界面元素。這些都是桌面環(huán)境所提供的,但是如果我們更深入地探究一下,還會找到其他功能。桌面環(huán)境還處理實現(xiàn)應(yīng)用程序之間切換和關(guān)閉應(yīng)用程序等操作的鍵盤快捷方式,另外還處理桌面墻紙、小應(yīng)用程序(比如處理器監(jiān)視工具)和花哨的窗口效果。
現(xiàn)在,這些特性并不是由單單一個程序提供的,而是由一批程序提供的。比如在Xfce中,在終端中運行ps ax | grep xfce會顯示名稱中有xfce的所有進(jìn)程,這樣的進(jìn)程有好多個。大多數(shù)名稱顯而易見,所以你可能明白,xfce4-panel提供了位于屏幕邊緣的面板,而xfce4-power-manager監(jiān)視你的電池電量,處理電源事件(比如合上蓋子)。
Gnome和KDE的工作方式幾乎如出一轍。你忍不住想使用來自每個桌面的一個個組件,然后組合起來,以此構(gòu)建某種極其出色的混合桌面,但是最終結(jié)果實際上不是那么理想。如上所述,每個桌面環(huán)境下的程序旨在協(xié)同工作,具體來說是在那些桌面環(huán)境下工作,所以如果你使用來自KDE的面板、來自Xfce的電源管理器,以及來自Gnome的窗口管理器,最后得到的將是一種大雜燴式的桌面,耗用大量內(nèi)存。畢竟,你要裝載來自每個桌面環(huán)境的庫及其他進(jìn)程,所以這就好比同時在運行這三個桌面環(huán)境。
我們可不想這樣。我們要做的是,選擇小巧的、占用內(nèi)存少的獨立式組件,它們不依賴其他東西,但是可以順利地協(xié)同運行。如往常一樣,在自由軟件領(lǐng)域有一大堆組件可供選擇,所以不妨看一下主要的組件。
二、選擇窗口管理器
盡管我們要使用單個的獨立式程序來打造定制的桌面環(huán)境,但是X Windows System(桌面的基本圖形層)里面還是有一些標(biāo)準(zhǔn),可以確保它們能夠順利地協(xié)同運行。首先,不妨看一看窗口管理器方面的幾個選擇。
1.名稱:Openbox
網(wǎng)址:http://www.openbox.org
Openbox被設(shè)計成小巧、快速,大概是最出色的全面的獨立式窗口管理器。完全可以單獨使用它,但通常與其他工具結(jié)合使用。拿LXDE來說:這是一種使用Openbox來管理窗口的輕量級桌面環(huán)境,也是流行的ubuntu發(fā)行版的桌面。Openbox還是現(xiàn)已銷聲匿跡的CrunchBang發(fā)行版(憑借CrunchBang++迎來了新生)和ArchBabg的默認(rèn)窗口管理器。
甚至可以在Gnome或KDE里面使用Openbox,更換其原生窗口管理器。Openbox出現(xiàn)在幾乎各大發(fā)行版的軟件庫中,可以用“crunchbang”命令,從腳本來啟動(后文會有介紹)。
2.名稱:i3
網(wǎng)址:http://i3wm.org
Openbox是一種傳統(tǒng)的鼠標(biāo)操作的窗口管理器,相比之下,i3完全離不開鍵盤快捷方式。這讓用戶一開始有點難以掌握,因為你得花點時間閱讀說明文檔,才能適應(yīng)它。不過一旦你記住了鍵盤快捷方式,就會愛不釋手。i3在想要經(jīng)常使用鍵盤、而不是操作鼠標(biāo)的編程人員當(dāng)中特別受歡迎。
另外,i3是一種平鋪式窗口管理器。不像傳統(tǒng)的窗口管理器:窗口散布于屏幕四周,一些窗口覆蓋在另一些窗口上,在i3中,你可以將窗口組織整理成屏幕上不同大小的圖塊(區(qū)域)。所以在寬屏顯示器上,你可以讓火狐占用屏幕左邊50%的區(qū)域,兩個終端窗口占用右邊的上下兩部分。如果你有一塊大屏幕,會發(fā)覺平鋪式方法的效果確實很好。
3.名稱:Awesome
網(wǎng)址:http://awesome.naquadah.org
Awesome是另一種設(shè)計時就想到鍵盤使用的輕量級窗口管理器。它還旨在與各種X標(biāo)準(zhǔn)兼容,可通過Lua腳本語言來進(jìn)行擴展。其開發(fā)人員稱之為“框架窗口管理器”――換句話說,你可以在此基礎(chǔ)上,使用Lua定制及其他附件,定制一個功能更強大的窗口管理器。
4.名稱:JWM
網(wǎng)址:http://www.joewing.net/projects/jwm/
JWM是用普通C編寫而成的,使用基本的X庫,所以它的依賴項非常少,很容易編譯。它旨在最大限度地利用內(nèi)存有限的舊計算機,但是如果你就想挑戰(zhàn)一下自己,它是個不錯的選擇。JWM含有自己的簡單面板,但是你可能想要更易配置、外觀更漂亮的面板,稍后我們會探討。
好了,以上就是市面上幾個最出色的窗口管理器。不過還有更多的窗口管理器值得探究,如往常一樣,Arch Linux維基(https://wiki.archlinux.org/index.php/Window_manager)是個很好的資源,值得一讀。
三、面板、文件管理器和額外組件
一旦你選擇好了窗口管理器,就需要為它添加一些額外組件來美化,比如漂亮的面板(用于啟動和管理程序),以及文件管理器。如果你是個經(jīng)驗豐富的Linux用戶,可能很高興在終端上處理所有的文件工作,但是我們還是會介紹幾個選擇。
1.名稱:Cairo-Dock
網(wǎng)址:http://glx-dock.org
Cairo-Dock提供的面板在外觀上酷似Mac OS X的停靠欄――至少,在10.10(Yosemite)采用扁平化設(shè)計之前是這樣。它的“3D平面”模式看起來很眩,光滑的圖標(biāo)駐留在玻璃托盤上;你將鼠標(biāo)移到圖標(biāo)上后,它們的大小會稍稍變大。右擊圖標(biāo),就可以定制圖標(biāo),或者選擇一直存在的Cairo-Dock子菜單,該子菜單讓你可以配置整個面板。默認(rèn)情況下,Cairo-Dock顯示了最流行的FOSS程序(假設(shè)你已安裝)的對應(yīng)圖標(biāo),比如火狐和Thunderbird等程序。
如果你要在虛擬機中測試定制桌面,請注意:首次啟動后,Cairo-Dock會詢問你是否想使用OpenGL。這在物理硬件上很有用,讓停靠欄的效果顯得更流暢,但是在VirtualBox里面,它會帶來問題,所以最好還是讓它處于被禁用的狀態(tài)。
Cairo-Dock隨帶豐富的漂亮效果,非常酷似Mac OS X。
#p#
2.名稱:Docky
網(wǎng)址:http://wiki.go-docky.com
Docky非常類似Cairo-Dock,不過它使用Mono,因此增添了一點額外開銷。但是它也非常完善和漂亮,能夠獲得上述類似OS X的3D外觀。Docky出現(xiàn)在各大發(fā)行版中;安裝完畢后,只要在命令提示符下輸入“docky”,就可以啟動它。其默認(rèn)配置相當(dāng)簡單;你只會看到用來配置docky的錨圖標(biāo),以及用來運行程序的圖標(biāo)。不過,可以將這些圖標(biāo)變成啟動器,只需右擊圖標(biāo),選擇將它們固定到停靠欄上。然后,即便程序沒有運行,它們也依然在那里。
有了Docky,還可以添加額外組件,比如天氣小應(yīng)用程序和電池監(jiān)視工具――點擊錨圖標(biāo),即可調(diào)出配置方框,然后選擇Docklets標(biāo)簽即可顯示列表。選擇一個你喜歡的,然后點擊加號(+)按鈕,就可以將它添加到停靠欄的右邊。
3.名稱:PCManFM
網(wǎng)址:http://wiki.lxde.org/en/PCManFM
文件管理器在Linux界多得可以抓一把挑挑;大多數(shù)提供了很少的功能。PCManFM用于LXDE桌面中,它是名氣最大的文件管理器之一:它比Gnome和KDE中所用的“重量級”文件管理器來得輕便,但是功能仍相當(dāng)強,能夠處理你需要的99%的任務(wù)。它在設(shè)計方面也不想試圖過于標(biāo)新立異,而是選擇了一種熟悉的布局,誰都可以迅速上手。另外,它幾乎無所不在,出現(xiàn)在各大發(fā)行版中。
4.名稱:XFE
網(wǎng)址:http://roland65.free.fr/xfe/
這與Xfce沒有半毛關(guān)系;它其實是一種非常輕巧的文件管理器,使用FOX圖形化工具包。開發(fā)人員稱之為“所有喜歡輕巧快速的Unix愛好者首選的文件管理器”;雖然與同樣占用很少資源的其他程序相比,XFE并不提供許多功能特性,可是它有一個好處:仍在開發(fā)之中。因而,它不難編譯,也不難在主流的Linux發(fā)行版中找到。
XFE是一款結(jié)實又小巧的文件管理器,外觀并不特別出彩,但是很實用。
四、額外組件:合成器和背景......
可以使用主題,給我們剛才提到的一些窗口管理器(比如Openbox)增添一點吸引力;但是如果你確實很想要大量的視覺效果,有必要添加一個合成管理器。這樣一來,窗口出現(xiàn)時,就能夠獲得陰影和微妙動畫之類的效果。最出色的一個合成管理器就是Compton(https://github.com/chjj/compton)。它還非常易于使用:只要啟動你的窗口管理器,然后啟動Compton,即可開始使用特效。
要考慮的另一個方面就是桌面墻紙。大多數(shù)輕量級窗口管理器并不直接提供添加桌面墻紙的方法,所以你需要找到另一個墻紙工具。這方面一個特別有用的工具就是Feh(http://feh.finalrewind.org),這個命令行驅(qū)動的圖像查看器還能設(shè)置“根窗口”(root window)圖像。沒錯,這是“根”在Unix用語中的另一種用途,另外還有超級管理員用戶和文件系統(tǒng)頂層。用X術(shù)語來說,根窗口實際上就是背景,所以如果你為其應(yīng)用一個圖像,就可以設(shè)置桌面墻紙。
五、把一切組件連接起來
好了,不妨開始做有意思的部分!我們現(xiàn)在要把這一堆組件變成一個完全實用的桌面環(huán)境。在這里,我們將使用Openbox作為窗口管理器、Docky作為面板、PCManFM作為文件管理器,然后添加Compton和Feh,讓桌面環(huán)境看起來可愛、漂亮。
由于這些都是獨立的程序,我們需要創(chuàng)建一個腳本,讓它們都按正確的順序來運行。以根用戶身份,在/usr/local/bin/mydesk下創(chuàng)建一個文件,比如:
- sudo nano -w /usr/local/bin/mydesk
輸入下列內(nèi)容,使用Ctrl+O組合鍵保存,然后按Ctrl+X組合鍵,退出Nano編輯工具。
- #!/bin/sh
- docky &
- pcmanfm &
- feh --bg-fill /home/user/desktop.jpg
- compton -c --shadow-exclude 'n:e:Docky' &
- openbox
你還需要讓這個文件成為可執(zhí)行文件,為此使用sudo chmod +x /usr/local/bin/mydesk。該腳本啟動一堆程序,先從Docky和PCManFM開始。這些程序后面的“&”符號表明,我們想要在后臺運行這些程序,而不是讓腳本等待每個程序關(guān)閉。就Feh而言,應(yīng)該更改桌面圖像的位置,以便與主目錄下的圖片相匹配;請注意,Compton這一行排除了在Docky窗口上繪制陰影(因為Docky窗口已經(jīng)有自己的特效)。
現(xiàn)在,在平常的Linux桌面會話中,我們根本無法運行這個腳本,指望一切都可以正常,因為我們已經(jīng)在運行窗口管理器、面板及其他組件。相反,我們需要告訴登錄管理器(輸入用戶名和密碼的那個屏幕):我們的腳本啟動其自己的桌面環(huán)境,我們稱之為MyDesk。以根用戶身份,創(chuàng)建含有下列內(nèi)容的文本文件/usr/share/xsessions/mydesk.desktop。
- [Desktop Entry]
- Name=MyDesk
- Comment=Custom desktop
- Exec=/usr/local/bin/mydesk
- TryExec=/usr/local/bin/mydesk
- Type=XSession
一旦你為會話創(chuàng)建好了啟動腳本和.desktop文件,它就會出現(xiàn)在登錄管理器中。
六、是時候測試一下了
現(xiàn)在退出當(dāng)前桌面,在登錄屏幕,選擇MyDesk作為你的會話。輸入你的用戶名和密碼,哇!你的定制桌面環(huán)境就會出現(xiàn)!看一下示例屏幕截圖:在這里,我們點擊了左下方的錨圖標(biāo),選擇了選項中的“面板模式”(讓它占用屏幕的整個寬度),然后應(yīng)用了Matte主題。我們還在右邊添加了一個工作空間切換器Docklet。
請注意:Docky并不包括一個傳統(tǒng)的“開始”程序菜單;相反,可以在桌面上右擊鼠標(biāo),選擇“終端”,打開命令行窗口。輸入你想添加到面板中的某個程序(比如“firefox”或“libreoffice”),該程序啟動后,相應(yīng)圖標(biāo)就會出現(xiàn)在面板上。右擊圖標(biāo),選擇“固定”,那樣即使該程序沒有運行,啟動器也依然在那里。想要退出定制桌面,只要在桌面上任何地方右擊鼠標(biāo),選擇“退出”。(想對Openbox窗口管理器實行精細(xì)控制,有必要安裝Obconf,然后從右擊桌面菜單中選擇它。)
而這僅僅是個開始!這只是你能創(chuàng)建的桌面的一個例子。你可以試著在/usr/local/bin/mydesk腳本中運行cairo-dock &,而不是docky &,嘗試另一種停靠欄,或者更換窗口管理器。這點很重要:窗口管理器是腳本中的最后一行,并不以“&”符號結(jié)束,那樣你退出窗口管理器時,它同時退出了整個會話,讓你回到登錄屏幕。
好好試一試窗口管理器、面板、文件管理器及其他工具的不同組合;如果你打造了特別出色的桌面環(huán)境,歡迎留言交流。說不定哪一天某個Ubuntu分支就基于你定制的桌面,天曉得。
原文標(biāo)題:CREATE YOUR OWN DESKTOP ENVIRONMENT,作者:Mike Saunders
【51CTO譯稿,合作站點轉(zhuǎn)載請注明原文譯者和出處為51CTO.com】