功能價格文件部落格
取得 mote
← 部落格
版本更新·2026年8月7日·閱讀時間 4 分鐘

為了在任何安裝形式下都呈現相同外觀,我們決定內附 GTK

同一款應用程式在不同發行版上看起來略有差異,通常不是應用程式本身的問題,而是系統安裝的工具套件版本不同。從 beta.2 開始,四種安裝形式全都會內含相同的程式庫。

m
mote
設定 → 外觀最下方的兩個開關。開啟時,強調色和 UI 字型會使用 mote 的設定;關閉時,則會跟隨桌面環境的設定值。
設定 → 外觀最下方的兩個開關。開啟時,強調色和 UI 字型會使用 mote 的設定;關閉時,則會跟隨桌面環境的設定值。

Linux 應用程式即使使用相同的建置版本,在不同發行版上看起來也可能不一樣。開關的外觀會改變、對話框的留白會錯位,有時甚至連視窗都無法開啟。這是因為每個系統安裝的工具套件都不一樣。

mote 過去也一直維護兩種建置版本。.deb 使用系統的 GTK,而 AppImage、tarball、Flatpak 則自行內含所需的程式庫。

從 beta.2 開始,我們把建置版本合而為一。

安裝方式不同,應用程式仍然相同

現在 .deb 也會在 /opt/mote 中內含 GTK 4.22 和 libadwaita 1.9。無論系統安裝了哪些程式庫,都可以在 Ubuntu 22.04 和 Debian 12 上透過 apt install 安裝。畫面與運作方式也和 AppImage、tarball、Flatpak 相同。

內含的程式庫版本與 Flatpak 的 GNOME 執行階段一致。分別是 GLib 2.88、Pango 1.56、HarfBuzz 11、cairo 1.18、fontconfig 2.16。為了能在較舊的發行版上執行,我們會直接在 glibc 2.35 容器中建置。

目標是減少需要檢查的情況數量。使用系統 GTK 時,每個 Ubuntu 版本的工具套件都不同。24.04 是 4.14、24.10 是 4.16、25.04 是 4.18。每次修改一行樣式,都必須檢查所有這些組合。現在只要檢查安裝方式即可。

我們也考慮過取消 .deb。但在 Ubuntu 桌面環境中,apt 是使用者最熟悉的安裝途徑。AppImage 的啟動速度約慢 140ms,而且需要 FUSE。tarball 沒有自動更新功能,而 Flatpak 則需要沙盒例外設定,以及約 1GB 的執行階段。

所以我們沒有取消 .deb,而是改變了它的內部。

用 14MB 換取一致性

這也有代價。.deb 的容量從 4MB 增加到 34MB。開啟同一份文件時,PSS 記憶體用量也從 115MB 增加到 129MB。這是因為應用程式內含的程式庫無法與其他 GTK 應用程式共用。

效能則維持不變。從按鍵輸入到畫面顯示所需的 p95 時間,從 4.82ms 降至 4.07ms。第一個畫面出現時間的中位數也從 306ms 降至 303ms,稍微變快了一點。只開著應用程式而不操作時,依然和之前一樣不會繪製影格。

多使用 14MB 記憶體,換來了在任何發行版上都一致的應用程式。

升級內含的工具套件,大約是每年一次的例行工作。Flatpak 的 GNOME 執行階段升級時,內含的版本也會一併升級。屆時,實驗室中的八個測試項目將成為這次更新的把關機制。

偏好由 mote 決定,無障礙設定由使用者決定

我們也整理了品牌設定。強調色和 UI 字型會使用 mote 的預設值,並同樣套用至 libadwaita 元件。若想跟隨桌面環境的設定,只要在設定 → 外觀中關閉這兩個開關即可。

但無障礙設定始終會遵循使用者的選擇。應用程式不會覆寫文字縮放比例和 HiDPI 設定。啟用大字體的使用者,在 mote 中也能看到大字體。深色模式也可以自行在系統、淺色、深色之間選擇。

韓文輸入已在八種環境中完成檢查

工具套件變更時,首先要檢查的就是輸入法。我們在由安裝方式與 ibus、fcitx5,X11、Wayland,以及 Ubuntu 22.04、24.04 組合而成的八種環境中檢查了韓文輸入。全部通過。

我們也修改了測試,避免依賴開發用的檢查功能。現在會先安裝實際發布的檔案,再確認韓文字元能否正確組合。

在 Ubuntu 版本、工作階段、輸入法及安裝方式各不相同的八種環境中,韓文輸入檢查全部通過的畫面
在 Ubuntu 版本、工作階段、輸入法及安裝方式各不相同的八種環境中,韓文輸入檢查全部通過的畫面

要打造一款無論在哪裡都一致的應用程式,最可靠的方法就是先減少可能發生變化的條件。

← 較舊完整保留手動輸入格式的表格編輯較新 →貼上圖片時,為什麼要先經過確認卡片
透過 RSS 持續關注。
只留下文字。
繁體中文
© 2026 mote