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

Posted on 2018-09-12 06:39 京山遊俠 閱讀(257

閱讀目錄

特別說明:要在我的隨筆後寫評論的小夥伴們請注意了,我的博客開啓了 MathJax 數學公式支持,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 aptitude install 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,如下圖:

保存該文件後,就可以在系統設置中設置壁紙了,選擇這個自定義的動態壁紙即可,如下圖:
16576-20180909211844746-455785605.pnguploading.4e448015.gif轉存失敗重新上傳取消

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

回到頂部

總結

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

回到頂部

版權申明

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

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章