Ubuntu 20.04 試驗調校心得

miZyind
miZyind Singularity
10 min readAug 23, 2020

--

前情提要

回想上次玩 Ubuntu 大概是三四年前的事了,印象中是 16.04 時代
當時的開發環境以一台 Mac mini 與一台 Ubuntu 桌機混用
後來物色了台工作娛樂兩用機 XPS 15 後則順勢跳回了 Win 平台
也算是三個系統都常用,因為同時有 iOS, Web, .NET 的開發需求

撇除開發某些專案需要特定作業系統外
當然會希望能用一台裝置搞定所有需求
XPS + Win 10 到目前為止都是我個人時間使用的最佳解!
而後來買的 MBP 2015 則是工作時間用的最佳解(在 16 吋出來以前 XD
自然而然 Ubuntu 就沒有什麼出場機會了

主因還是自己的奇怪堅持「不用任何外接螢幕、鍵盤、滑鼠」
要達成這點又不失工作效率,觸控板與其手勢支援的重要性不言而喻
MBP 與 XPS 它們搭載的系統基本上不用任何調校就支援多工手勢
Ubuntu 就得特別選購廠商有針對這塊而調校的裝置,算是先天劣勢

前陣子拿到一台 ThinkPad P1 剛好成了回來玩 Ubuntu 的契機
首先裝了 18.04 試用一陣子,再接著裝成 20.04

可惜手勢支援還是不理想,顯示卡驅動也有些小問題
指紋解鎖裝置更淪為擺設,毫無反應
循線調查終於找到了指紋驅動的相關專案 Validity90
有看到 ThinkPad P1 所使用編號為 06cb:009a 的指紋裝置在列
然而狀態卻是:Init works, leds work, scan doesn’t work yet
只好放棄用指紋解鎖的念頭…

撇除硬體與韌體問題,Ubuntu 20.04 還是有值得介紹的體驗
由於自己也一段時間沒玩 Ubuntu 了
也許有些改變在先前版本 19.04, 18.04 甚至更早就有
導致介紹時偶有鴿子封包還請見諒~

耳目一新的 UI

現在各個作業系統都走向了扁平化風格,Ubuntu 也不例外
但它的存在,讓人們得以看見不同於 Win, macOS 設計的新可能
新的 Yaru 深色主題讓人感到很舒適
無論是檔案總管、右鍵選單、系統資訊及設定頁等,都很協調且有一致性

使用 Win 很讓人惱火的一點就是不斷長大的右鍵選單
裝了個 VSCode,它可能就多長一列還帶 Icon
再裝了 Visual Studio,它又給你塞個沒 Icon
且平常完全不會用到的 Open in Visual Studio

Ubuntu 的右鍵選單頂多前幾個選項有 Icon
剩下的都還是會保持原狀,不會長出許多不必要的項目

對於工具列程式的右鍵選單也很一致
與其他兩個系統相同,會根據不同程式顯示不同的項目

再來的這點是為了個人習慣而提
由於自己滿常用 Win 的四角視窗分割功能
也就是把程式拖曳或是用快捷鍵移到桌面的四個角落
視窗就會自動等分切成四塊,算是將單螢幕利用到極致的做法

在 Ubuntu, macOS 上只支援到左右兩區分割

且 macOS 要達成視窗自動分割又更困難
需要先進入程式全螢幕再開啟多工視窗,並拖動至另一個全螢幕的視窗
系統才會自動切成左右兩塊,也許有快捷鍵能達成這點也說不定
不過印象中 macOS 本身的設計理念就不鼓勵視窗分割

另外相對於 Win 的「開始」選單,這邊稱為 Application Menu
在 macOS 內則被稱為 Launchpad
這版 Ubuntu 預設採用了跟 macOS 相似的視覺設計
且同樣可以將程式分組,並為群組命名

工具列調校

預設的置左工具列與置上狀態列實在不太合個人使用習慣
因為瀏覽文件、網頁甚至是寫程式
通常視線都會是從上到下、左到右
許多其他程式也會把工具列置左置上
例如瀏覽器的分頁列、網址列、書籤列等

又或是 VSCode, GIMP 的工具列等

可見如果系統預設又多了那置左置上的兩列
視線上會有很多「多重選單列」造成的干擾
這些干擾實在讓我難以忍受,只好開始找解決方案
所幸找到了「Dash to Panel」這個 GNOME 套件
它幾乎滿足了我的使用需求,改善了不少上述問題!
在安裝套件並調整後:

看起來已經跟 Win 10 的工具列大同小異了
將雜訊的部份分散置於左下與右下
在使用主程式時就不會帶來過多干擾

由於 macOS 會將程式本身的工具列固定在系統 Menu Bar 上
無法將其分離,降低上述的雜訊干擾
因此個人還是喜歡 Win 跟 Ubuntu 這種分離設計

而 Dash to Panel 就連 Win 頗實用的視窗掃視功能也完美呈現
甚至運作得更流暢!

攤開它豐富的設定頁面來看
不僅圖示大小與進度條顏色,就連動畫速度也能隨心所欲調整
除了解決使用習慣問題外,也帶來許多 DIY 的樂趣
非常推薦有用 Ubuntu 的朋友裝來玩玩看!

桌面調校

Win 上可以使用 Wallpaper Engine 來設定個人化的桌面
在 Linux 中則有將近十年發展歷史且輕量的 Conky 能玩

即使不像 WE 那樣能直接用 JS 等 Web 技術來客製互動型桌面
但 Conky 的設計也很易於擴充,雖然還找不太到整合 JS 的實例
不過 Python 的範例已經很普遍,寫 Python 也足以達成許多需求了
馬上載了個看得滿順眼的 Conky 主題 Serene-Conky 來試用

然而初次啟動後,天氣資訊抓取的功能一直沒成功
顯示不出像上面預覽圖中美美的資訊,只好檢查一下主題原始碼
這才發現這個主題抓「每日金句」「每日歷史」
與「天氣資訊」的功能都是由 Python 寫成的

原始碼可見天氣資訊的來源為 ForecastIO (Dark Sky)

然而這個服務正好在今年被蘋果公司收購!
可說是物換星移,原始碼中的 API 也因而失效了

既然最重要且呈現起來美觀的天氣資訊已無法運作
就順便把程式碼修剪了一番,移除所有需要網路抓取的功能
只留下系統監測資訊並調整排版,成果如下:

這一研究順道溫習了 Lua 以及 Python,也算是收穫多多啊!

Snap Priority

這點算是 Ubuntu 20.04 主打的功能,不明覺厲
它建議使用者完全用 Snap Store 取代原先的 Software Center
就連系統本身的 Gnome 也是採 Snap 的機制安裝的

但老實說之前完全沒過 Snap,也不知道它的用途
研究了一番才知道它真的是個滿有野心的計畫!
簡言之就是個希望一統 Linux 各發行版應用程式江湖的「大平台」
用起來就像 apt, npm, brew install 般
只要 snap install 就能安裝自己想要的程式
甚至不用理會程式的更新與版本控制
Snap 自己會去維護程式的相依性

因此每個包都能獨立運作,且自動更新到該包的穩定版
例如可以同時裝個 Node 12 與 Node 14,內建切換版本指令
而不用另外裝一套類似 nvm 的工具來切換版本
並自動更新 Node 12.0 到 Node 12.99 間的更動

當然用這類大平台最怕的就是自己常用的程式不支援
不過一打開 Snap Store 發現,帥!讚!
VSCode, Spotify, Postman, NodeJS, Mattermost
GitKraken, Go, Firefox, Docker, Chromium, GIMP
通通都有!已經包辦了平常開發所需!
甚至它的 Node 包還內建 Yarn 了!

試著裝完常用程式一輪,體驗真的非常不錯
商店頁面的發行版分佈與使用者分佈表也很有意思

雖然比起 Mac 的 AppStore,Snap Store 給人的質感還是差了些
但開發工具都能在這找到,實用性已經比 AppStore 好多了
畢竟在 Mac 上大多還是用 brew 來裝開發工具打天下
跟它自己的 AppStore 是脫鉤的

至於跟 Windows Store 比…
不說可能大家還不知道 Windows 有個 Store XD
雖然我是 Nokia Lumia 1520 至 Microsoft Lumia 640 的忠實用戶
也為 Windows Phone 程式開發貢獻了些青春

但還是不得不承認,微軟在統一封裝生態圈這塊是徹底失敗了…

未來 Ubuntu 究竟能在這塊被吃的差不多的大餅上
又吃到多少份量,甚至是開創新的世界呢?
實在非常令人期待!

美中不足的 Snap

Snap 並非完美,使用上還是有些莫名的相容問題
例如 Snap 版的 Firefox 無法順利執行 GNOME Shell 套件
這點在 deb 包版的 Firefox 則不會發生
以及影響滿大的,部份程式無法輸入中文等需要 IME 的語言!
實測了 VSCode, Spotify, GitKraken 都無法
Mattermost, Firefox, Postman, GIMP 則可以
原先不確定這問題是不是 Snap 所產生
不過搜尋後確實很多人跟我遇到一樣問題
例如 VSCode 的 Cannot use any input method when installed from snap
以及 Firefox 的 Snap is unable to access gnome shell connector

可見 Snap 還是有些相容性問題得讓開發者自己克服
雖然目前除了用 VSCode 多行編文章或用 Spotify 找歌外
不太需要用到中文輸入,但這問題還是挺困擾的啊…

結論

經過多年的迭代,Ubuntu 20.04 已是個成熟系統
搭配剛拿到的 ThinkPad P1 運作非常順暢!
個人會將它拿來做為 Web Side-Projects 的開發機
只可惜就需要接個滑鼠來用
不支援手勢的觸控板跟小紅點淪為擺設
偶爾用它來寫寫 Node, Deno, Golang 還是很不錯

--

--