為了在任何安裝形式下都呈現相同外觀,我們決定內附 GTK
同一款應用程式在不同發行版上看起來略有差異,通常不是應用程式本身的問題,而是系統安裝的工具套件版本不同。從 beta.2 開始,四種安裝形式全都會內含相同的程式庫。

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 組合而成的八種環境中檢查了韓文輸入。全部通過。
我們也修改了測試,避免依賴開發用的檢查功能。現在會先安裝實際發布的檔案,再確認韓文字元能否正確組合。

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