功能价格文档博客
获取 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