1. 程式人生 > >Linux桌面玩家裝B指南:03.針對Gnome 3的Linux桌面進行美化

Linux桌面玩家裝B指南:03.針對Gnome 3的Linux桌面進行美化

特別說明

要在我的隨筆後寫評論的小夥伴們請注意了:我的部落格是使用 Markdown 編寫的,並且啟用了 MathJax 數學公式支援。如果某條評論中出現了兩個$,則 MathJax 會認為這兩個$之間的內容是數學公式,從而出現格式混亂。如果大家確定自己寫的評論不是數學公式,請使用\$轉義一下,謝謝。

想從頭閱讀該系列嗎?下面是傳送門:

前言

四年前,我寫了一篇 Linux 桌面美化那點事兒,是基於 Ubuntu 14.04 的,那時 Ubuntu 還是使用的 Unity 桌面。在四年的時間裡,這篇隨筆獲得了大約 60000 的訪問量,我甚是欣慰。世易時移,情隨事遷,Ubuntu 目前的發行版已經放棄了 Unity 桌面,迴歸到了 Gnome 3,以前的美化方案就不太適用了。在這一篇中,我將針對 Gnome 3,講一講 Linux 桌面的美化思路。

Linux 桌面的美化是非常必要的,我認為,不談美化而勸人使用Linux桌面都是耍流氓。就算你把 Linux 桌面說得天花亂墜,別人安裝完一看,不漂亮不順眼不 professional,就不會再繼續用下去了。Ubuntu 和 Fedora 的桌面已經算是比較美觀的了,但是世上沒有完美的系統,只有按照自己的想法進行改進,才能獲得比較舒服的體驗。

Gnome 3 桌面的美化可以從以下幾個方面著手:

1、主題和擴充套件。可以通過訪問網站 https://www.gnome-look.org/ 來檢視和下載主題。在 Gnome 3 中,主要需要考慮的是 gnome-shell 主題、GTK 3 主題和圖示主題。在 Ubuntu 中,預設的主題已經很不錯了,所以我一般不改。Fedora 預設的主題稍差,那種比較 low 的灰灰的 3D 質感我並不喜歡,所以我往往會把它改成簡單的、扁平的樣式。在網路上,還有不少通過修改主題來讓 Linux 桌面變成和 Mac OS 一樣的外觀,這種一味的模仿我並不喜歡,但確實可以試一試。另外,對於 gnome-shell,還可以安裝 extensions 來擴充套件它的功能和進行美化,除了官方軟體源中提供的 extensions,還可以訪問

https://extensions.gnome.org/ 來查詢最新的擴充套件。

2、桌布。賞心悅目的桌布當然是可以點亮好心情的啦。看過我前面的隨筆的朋友們應該會發現,我特別喜歡半透明的全屏視窗,露出後面的桌布。所以,我收集了一大票的桌布,然後設定為自動定時切換,怎一個爽字了得。

3、字型。Linux 桌面系統的字型一直是一個歷史遺留問題,當有人覺得 Linux 桌面不好看、不專業時,有很大一部分原因就是字型惹的禍。我曾經有一段時間就是因為 Redhat 的 Linux 字型發虛,而中科紅旗的 Linux 字型清晰而放棄過 Redhat,甚至寫過一些不正確的文章。當然,當我認識到 Linux 的字型是可以配置的後,我就把這些不正確的文章都刪了。下一篇,我再專門論述 Linux 系統中字型的歷史、現狀以及配置方法。

4、桌面小部件。一些精美的桌面小部件可以提供一些很實用的功能,同時也可以提高桌面的美化程度。由於我本人並不是特別喜歡桌面小部件,我不僅不喜歡桌面小部件,我連桌面圖示都不放,所以這一部分並不做特別介紹。喜歡桌面小部件的朋友,可以瞭解一下 conky。

5、Dock。即可以方便我們啟動程式,又能在螢幕底下顯示點東西,解決 Gnome 3 桌面頭重腳輕的問題。在 Gnome 3 中,使用 Dash to dock 擴充套件就可以取得不錯的效果了。如果一定要模仿蘋果那樣酷炫的效果,也可以選擇 Cairo-dock。

必須得說明的是,桌面美化是一個仁者見仁、智者見智的事。有可能你認為很美的介面,別人認為土得掉渣;有可能你認為很炫的特效,別人認為華而不實。我這裡主要是為了讓大家瞭解 Linux 桌面美化的機制,並提供一些美化思路,並不是說都讓大家把桌面搞得和我一模一樣。

Gnome 3 的特點

業界對 Gnome 3 桌面吹得很厲害,說它領先桌面設計領域十幾年。可是對我這樣的使用者來講,卻總覺得 Gnome 3 預設的介面比較醜,還不流暢。這一定是我的開啟方式不對。Gnome 3 究竟有哪些值得稱道的地方呢?我們先來看看 Gnome Shell 的官方 wiki 對它的介紹。後面的圖片均來自於 Gnome Shell 的官方 wiki。

首先,是它的 Desktop 介面,這是我們主要的工作區域,如下圖:

這就是一箇中規中矩的桌面,應用程式的視窗顯示在桌面上,只要配色和外觀不要太醜,就不影響我們工作。和 Gnome 2 比,它的主要變化是去掉了桌面底部的 panel,只保留了螢幕頂部的 panel。同時,頂部 panel 中的元素也大大減少,沒有類似 Windows 中開始選單、視窗列表這樣的元素,取而代之是最左邊的那個 Activities 按鈕。點選該按鈕,就會彈出 Activities Overview 介面,如下圖:

該介面中,左邊顯示的是 Dash,可以點選裡面的圖示啟動常用的程式。中間顯示的是應用程式視窗,可以檢視當前開啟的視窗有哪些,要切換到哪個視窗就點哪個視窗。右側顯示的是工作區,也可以通過滑鼠的點選在工作區之間切換。如下圖:

Activites Overview 介面不僅可以顯示開啟的視窗,還可以顯示系統中安裝的程式,便於啟動 Dash 中沒有的程式。程式都是大圖示,而且有搜尋功能,如下圖:

通過上面的展示,真不覺得 Gnome 3 有什麼值得吹噓的黑科技,如果真要說有什麼先進的理念的話,大概就是對觸控式螢幕裝置的支援吧。主要表現有:1. Activites Overview 是佔據整個螢幕的大介面,而不是像 Windows 的開始選單那樣只佔據螢幕的一小部分;2.應用程式介面都是大圖示,便於手指的點選;3.工作區圖示也比較大,便於手指點選,也便於預覽每個工作區中有哪些視窗。

而我們桌面使用者不一樣,桌面使用者依賴的是鍵盤和滑鼠的輸入,可以精準點選,對大圖示沒有多少依賴。如果能熟練使用快捷鍵,對 Gnome 3 的使用體驗也是可以提升不少的。例如,不用點 Activities 按鈕,按 Super 鍵(也就是鍵盤上的 Win 鍵)也可以調出 Activites Overview 介面。有一個比較人性化的功能是 Gnome 3 的工作區是動態工作區,只要佔滿了現有的工作區,它就會馬上自動建立一個新工作區,省掉了我們自己建工作區的操作。在工作區之間切換,也可以使用快捷鍵,Ctrl+Alt+↑ 和 Ctrl+Alt+↓。最後,在視窗間切換也可以使用快捷鍵 Alt+Tab。視窗切換的效果如下圖:

可以上的內容還是不足以說明 Gnome Shell 有多優秀啊。我們繼續挖掘 Gnome Shell 背後的技術。Gnome Shell 的技術架構是這樣的:

原來整個 Gnome Shell 都建立在 OpenGL 之上,這麼說來效能應該是槓槓的了,使用顯示卡加速應該是妥妥的了。在 OpenGL 之上,建立了 Clutter 圖形庫,在 Clutter 之上,建立了 mutter 視窗管理器和 Shell Toolkit,而且 Shell Toolkit 是可以使用 CSS 定義外觀的。再往上,還建立了一個 JavaScript 引擎和 gobject-introspection,這樣就可以使用 JavaScript 來操控 Gnome Shell。原來黑科技藏在這裡呢,我心裡舒服多了。而且這一整條技術棧都是可以學習的,我們程式設計師的玩具又多了一種。

Ubuntu中的 Gnome 3 桌面存在的問題

看完 Gnome Shell 的官方介紹,我們再回到親愛的 Ubuntu。Ubuntu 這個發行版是已經對這個桌面做過一定美化的,而且 Ubuntu 一直都是那種暖紅色的主題,還是比較討人喜歡的,我就很喜歡 Eclipse 在 Ubuntu 中的表現。但是,Ubuntu 的桌面還是有不少需要改進的地方。見下圖:

①左側的 Dash。Ubuntu 的傳統特色,也是我每次都要去掉的特色。Dash 雖然方便,但是螢幕左邊緣被佔掉這一條空間還是令人不爽的,而且和右邊緣不對稱。而且 Dash 的配色並不一定總能和桌面上的工作視窗保持同樣的風格,所以有時看起來比較突兀。在以前的 Ubuntu 版本中,我總是設定為自動掩藏,然後滑鼠在螢幕左側劃過時出現。在現在的版本總,該 Dash 是由 gnome-shell-extension-ubuntu-dock 擴充套件提供的,可以把它刪掉,也可以把它設定為顯示到螢幕底部。

②左上角的“活動”按鈕。這個按鈕很彆扭,本來把“Activities”翻譯成“活動”,就很有點詞不達意。而且這個按鈕有點多餘,不要它也可以,直接使用 Super 鍵調出 Activities Overview 介面更方便。使用 gnome-shell-extension-hide-activities 可以把這個按鈕隱藏。

③桌面頂端佔用空間太多。從圖中可以看到,當我把一個視窗最大化後,頂部有 Gnome Shell 的 top panel,其次是視窗的標題欄(top bar),再然後是視窗的選單欄。這幾個元素就佔據了桌面頂端太多的空間。解決這個問題,有兩個方案,一個是把視窗的標題欄放到 top panel 中,另一個是把選單欄放到 top panel 中。可以使用 pixelsaver 外掛或者 Global Application Menu 外掛。

④位於 top panel 中間的時鐘。為了在 top panel 中留出足夠的空間,我們需要把時鐘移動到右邊,可以使用 Frippery Move Clock 外掛。

⑤頭重腳輕的問題。螢幕頂端元素眾多,螢幕底端啥都沒有,有點頭重腳輕的感覺。可以使用 Dash to dock 外掛,並設定為 Dock 顯示在底部。當然,也可以使用 Cairo-dock。

⑥背景圖片太單一的問題。我當然有背景輪換大法啦。

安裝Gnome Shell的Extension

分析完問題,下面開始實戰。先從 gnome-shell-extension 入手,我們即可以使用 Ubuntu 官方軟體倉庫中的 extension,也可以到 https://extensions.gnome.org/ 下載 extension。我們需要安裝兩個工具,gnome-tweak-tool 和 chrome-gnome-shell,前者是 Gnome 的設定工具,後者可以使我們直接在 https://extensions.gnome.org/ 的網頁上安裝 extension。安裝這兩個工具的命令如下:

sudo aptitude install gnome-tweak-tool
sudo chrome-gnome-shell

使用sudo aptitude search gnome-shell-extension命令看一下 Ubuntu 的官方軟體倉庫中提供哪些 extension,並開啟 gnome-tweak-tool 看看 Ubuntu 已經給我們預裝了哪些 extension。如下圖:

這兩個外掛都不是我們想要的,把它們解除安裝掉吧。命令:

sudo aptitude purge gnome-shell-extenion-appindicator gnome-shell-extension-ubuntu-dock

按 Alt+F2,輸入 r,按 Enter 執行,可以重啟 Gnome Shell,解除安裝下面兩個外掛後,討厭的左邊 Dash 不見了,如下圖:

下面,來看看怎麼把時鐘移到右邊。開啟 https://extensions.gnome.org/ ,搜尋 Frippery Move Clock,然後開啟這個 extension 的頁面,如下圖:

我們先要確認一下該 extension 能夠支援的 gnome-shell 版本,Ubuntu 18.04 中的 gnome-shell 是 3.28 版,所以這個 extension 是可以裝的。別的 extension 也一樣,如果不支援這個版本的 gnome-shell,安裝就會出錯。直接在網頁中點右上角的按鈕,就可以安裝了。安裝完之後,時鐘自動移到了 top panel 的右邊,網頁中的 extension 狀態也從 off 變成了 on,如下圖:

有一些外掛 Ubuntu 官方倉庫中的就不錯,可以直接安裝。例如 Hide Activities 和 pixelsaver,還有 remove dropdown arrows。使用如下命令安裝:

sudo aptitude install gnome-shell-extension-hide-activities
sudo aptitude install gnome-shell-extension-pixelsaver
sudo aptitude install gnome-shell-extension-remove-dropdown-arrows

安裝完這三個 extension,重啟 gnome-shell,使用 gnome-tweak-tool 開啟這三個 extension 後,效果是這樣的:

可以看到,“活動”按鈕隱藏起來了,以後要啟動程式必須使用 Super 鍵了。視窗的標題欄和 top panel 合併了,節約了一行空間。唯一的遺憾是視窗的最大化、最小化和關閉按鈕不是在螢幕的最右端,想關視窗的時候找起來有點費勁。不過沒關係,我們可以把這三個按鈕放置到視窗的左邊。這真的不是為了模仿蘋果哦,是這樣放要關視窗的時候按起來最方便。如下圖:

反正安裝 extension 就這兩種方法,後面我就不講安裝過程了,直接展示 extension 的效果。

Dash to dock,解決頭重腳輕的問題,將 dock 設定為顯示在螢幕下方,如下圖:

Frippery Applications Menu,顯示一個類似 Windows 開始選單的應用程式選單,我個人認為沒啥用,畢竟我們不能總是用 Windows 的習慣使用電腦嘛。如下圖:

Places Status Indicator,顯示一個選單,便於我們快速定位檔案系統中的常用位置。我也認為這個 extension 沒啥用,因為 Gnome 自帶的檔案管理器就有這樣的快速定位功能。如下圖:

Open Weather,顯示天氣功能,如下圖:

System Monitor,系統監控,如下圖:

我還是認為以上兩個外掛沒什麼用。下面是 Coverflow Alt-Tab,可以使視窗切換的效果更佳酷炫,如下圖:

在以上我考察的 extension 中,至少有四個我認為是沒有用的,它們分別是:Frippery Applications Menu、Places Status Indicator、Open Weather、System Monitor。前面兩個我認為沒用,是因為 Gnome 3 已經有更好的 Overview 介面和 Dash 了,檔案管理器也足夠好用了,沒必要再來這兩個選單。後兩個我認為沒用,是因為我覺得在桌面美化領域,大家一直以來都嚴重缺乏創意,不是顯示天氣,就是顯示系統監控,如果用 conky 搞桌面小部件,顯示的也是天氣、CPU、記憶體、檔案位置什麼的,真的是爛大街了。至於視窗切換的效果,我覺得要不要都無所謂,沒有誰一天到晚切換視窗玩,而且我覺得 Gnome 3 的動態工作區和它的快捷鍵已經很好用了。

所以,我的桌面最終是下面這樣的,前面考察的十個 extension,我只打開了五個,而且關閉了 Dock 的自動隱藏。如下圖:

更改Gnome Shell的主題

Ubuntu 的主題我已經覺得很漂亮了,不想改。所以我就弄個 Fedora 28 玩一玩。我一般到 https://www.gnome-look.org/ 查詢主題,當然,你也可以去 github 上找。Gnome Shell 的主題很多,一個一個試總會找到自己滿意的。我這裡就俗一把,以網路上最常見的模仿蘋果的主題來做示例吧。

上圖中的這幾個都是模仿 MacOS 的主題,就選擇 macOS High sierra 和 macOS High sierra Dark 吧,點進去,會發現這兩個主題都提供 for dash to dock 和 for dash to panel 的版本,而每個版本還分為透明和不透明。這裡就選擇 for dash to dock 的版本吧。下載,解壓縮,然後把包含主題的資料夾拷貝到/usr/share/themes目錄中。然後,通過 Gnome Tweak Tool 更改 Gnome Shell 的主題,如下圖:

可以看到,Top panel 的顏色改變了。當然,這還不夠,我們需要所有的視窗、視窗中的控制元件都改變樣式。這需要 GTK 3 主題。我選擇的是 X Arc Collection 這一款,如下圖:

安裝過程是一樣的,下載、解壓縮,然後拷貝到/usr/share/themes目錄,使用 Gnome Tweak Tool 設定 GTK 3 主題(應用程式主題),如下圖:

設定完之後,發現視窗漂亮多了。現在,我們還缺 dock 和圖示主題。至於圖示主題,可以選用經典的 numix 系列。非常幸運的是,Fedora 28 的官方倉庫中自帶該圖示主題。使用如下命令安裝:

sudo dnf install numix-icon-theme numix-icon-theme-circle

如下圖:

dock 就安裝 dash to dock 吧,可以在 https://extensions.gnome.org/ 中安裝,也可以直接使用 Fedora 28 官方軟體倉庫中自帶的。如果使用官方軟體倉庫中自帶的,使用如下命令安裝:

sudo dnf install gnome-shell-extension-dash-to-dock

將 dock 設定為顯示在螢幕底部,並使用 numix-circle 圖示主題,其效果如下圖:

從上圖可以看出,Gnome Shell 的主題有亮色和暗色可以選,相應的 GTK 3 主題也有亮色和暗色可以選。一般情況下,亮色和亮色搭配,暗色和暗色搭配。如果都選擇暗色,就是下面這樣的效果:

還是很漂亮的,不是嗎?當然,這裡只是簡單展示了一下修改主題,除了修改主題之外,前面提到的 Hide Activities、pixelsaver、Frippery Move Clock、Remove Dropdown Arrow 等 extension 也是可以安裝的,以便於進一步提升 Fedora 28 的體驗。如果說還差點什麼的話,那就是桌面桌布不那麼令人滿意了。下一節,我們來設定讓 Gnome 3 動態切換桌布。

動態切換桌布

所以我們需要自己去網上下載一些自己喜歡的桌布,風景也好,美女也好,動漫也好,遊戲電影 CG 也好,看自己的愛好了。桌布的尺寸和自己螢幕的解析度匹配最佳,這樣避免桌布在放大縮小的過程中出現失真。把下載的圖片都移動到/usr/share/backgrounds/目錄下,因為訪問許可權的原因,需要使用sudo mv命令,如下圖:

Gnome 3 自帶自動切換桌布的功能,這個功能是由兩個 XML 檔案控制的。首先,是在/usr/share/backgrounds/contest目錄下需要有一個動態桌布定義檔案,它定義了有哪些桌布參與切換,以及切換的時間和頻率;其次,是/usr/share/gnome-background-properties/目錄下需要一個 XML 檔案,只有在這裡的 XML 配置檔案中提到的桌布和動態桌布,才能在 Gnome 3 的系統設定介面中看到。

先來編寫/usr/share/backgrounds/contest目錄下的動態桌布定義檔案。進入該目錄後,可以看到系統自帶一個動態桌布定義檔案 bionic.xml,我們可以參考其中的內容,依葫蘆畫瓢編寫我們自己的動態桌布定義檔案。系統自帶的動態桌布定義檔案如下:

該檔案的內容非常清晰明瞭,它就是設定每一張桌布先保留多少秒,然後切換到另外一張桌布,切換過程經過幾秒。我下載的桌布比較多,要手動寫一個這樣的配置檔案是不可能的,一個一個的輸入圖片的路徑和名稱會累死人的,所以需要一個 Bash 指令碼來自動生成一個這樣的配置檔案。我寫的生成動態桌布配置檔案的 Bash 指令碼如下:

files=`ls -U /usr/share/backgrounds | grep -v contest`
last_file='empty'

echo '<background>'
echo '  <starttime>'
echo '    <year>2016</year>'
echo '    <month>07</month>'
echo '    <day>15</day>'
echo '    <hour>00</hour>'
echo '    <minute>00</minute>'
echo '    <second>00</second>'
echo '  </starttime>'

for current_file in $files
do
    if [[ $last_file == 'empty' ]]
    then
        last_file=$current_file
        echo '  <static>'
        echo '    <duration>300.0</duration>'
        echo "    <file>/usr/share/backgrounds/$last_file</file>"
        echo '  </static>'
    else
        echo '  <transition>'
        echo '    <duration>5.0</duration>'
        echo "    <from>/usr/share/backgrounds/$last_file</from>"
        echo "    <to>/usr/share/backgrounds/$current_file</to>"
        echo '  </transition>'
        echo '  <static>'
        echo '    <duration>300.0</duration>'
        echo "    <file>/usr/share/backgrounds/$current_file</file>"
        echo '  </static>'
        last_file=$current_file
    fi
done

echo '</background>'

把上面的指令碼儲存為generate_mywallpaper_xml.sh,然後使用chmod u+x generate_mywallpaper_xml.sh為該指令碼新增執行許可權。這個指令碼是直接訪問/usr/share/backgrounds目錄的,生成的 XML 配置檔案直接輸出到標準輸出。所以,這樣生成自己的配置檔案:

./generate_mywallpaper_xml.sh > youxia.xml
sudo mv youxia.xml /usr/share/backgrounds/contest

再來編寫/usr/share/gnome-background-properties/目錄下的 XML 配置檔案。進入該目錄後,同樣可以看到兩個系統自帶的配置檔案,開啟其中一個,參考其中的內容,使用sudo vim youxia-wallpapers.xml命令建立我們自己的配置檔案,在該檔案中,引用前面生成的/usr/share/backgrounds/contest/youxia.xml,如下圖:

儲存該檔案後,就可以在系統設定中設定桌布了,選擇這個自定義的動態桌布即可,如下圖:

在 Ubuntu 中設定好自動桌布切換後的效果,我在Linux桌面玩家裝B指南:01.玩轉Linux系統的方法論中已經大量展示了,所以這裡就不截圖了。在 Fedora 28 中走完以上所有步驟後,可以得到如下的效果:

總結

這一篇隨筆主要講的是 Gnome 3 桌面的美化思路。這裡展示了 gnome-shell-extension 的安裝、主題的更改(包括 shell 主題、GTK 3 主題和圖示主題)以及自動桌布切換。影響 Linux 桌面是否好看好用還有一個非常重要的方面,那就是字型。關於 Linux 桌面字型配置方面的內容,敬請期待我的下一篇。

求打賞

我對這次寫的這個系列要求是非常高的:首先內容要有意義、夠充實,資訊量要足夠豐富;其次是每一個知識點要講透徹,不能模稜兩可含糊不清;最後是包含豐富的截圖,讓那些不想裝 Linux 系統的朋友們也可以領略到 Linux 桌面的風采。如果我的努力得到大家的認可,可以掃下面的二維碼打賞一下:

版權申明

該隨筆由京山遊俠在2018年09月12日釋出於部落格園,引用請註明出處,轉載或出版請聯絡博主。QQ郵箱:[email protected]