现代 GNOME 已经不是那个换一份 GTK 主题就能包办全桌面的时代。GNOME Shell、GTK 3 应用、GTK 4 应用和 libadwaita 应用是四个不同表面。Tweaks 里选中的主题可能只改变其中一两层,其他部分完全不动。这通常是架构使然,不一定是主题包坏了。

本文中的三张结构图为根据官方文档制作的示意图,不是桌面实拍截图。外部官方截图资源在本次准备期间无法稳定获取,因此图中明确标为「STYLISED MOCKUP / 示意图」。

GNOME 50 主题 的主题层级示意图

先弄清楚:这里的「主题」到底是哪一层

负责什么 用户目录 / 入口
GNOME Shell 顶栏、概览、Dash、通知与快速设置 Shell 样式表;自定义主题需要扩展
libadwaita 应用 当前 GNOME 应用控件与自适应布局 内置 Adwaita,加亮/暗、强调色和高对比接口
GTK 4 应用 未必使用 libadwaita 的 GTK 4 控件 应用自身或工具包 CSS
GTK 3 应用 较老的原生应用和不少第三方工具 ~/.local/share/themes/<name>/gtk-3.0/
图标与光标 Freedesktop 图标和 Xcursor 主题 ~/.local/share/icons/
GDM 登录界面 系统组件,与登录后的 Shell 分开

安装主题后「只变了一半」,通常不是 bug,而是只装了其中一层。图标、窗口装饰、应用控件和桌面 Shell 经常由不同组件负责。

一套不容易翻车的定制顺序

  1. 先用「设置 → 外观」。亮/暗模式、强调色、壁纸和高对比度是受支持的系统级入口。
  2. 安装 GNOME Tweaks 来选择图标、光标和旧式 GTK 主题。它只是附加控制面板,不代表 libadwaita 应用会接受任意主题。
  3. 选择 GNOME Shell 主题前先装 User Themes 扩展。Shell 主题包通常包含 gnome-shell/gnome-shell.css。
  4. 想让界面统一,更稳妥的办法是用 adw-gtk3 让旧 GTK 3 应用靠近 libadwaita,而不是强行把 libadwaita 改成旧 GTK 主题。
  5. 每次改动后各测一个原生应用、一个 Flatpak 和 Shell。三者看到主题文件的方式和沙箱规则不同。

GNOME 50 主题 的主题文件与设置入口示意图

用命令行检查和切换

GUI 适合探索,命令行适合复现。下面的命令只操作当前用户;执行前先确认主题名称在本机确实存在。

Bash
# 设置受支持的暗色偏好
gsettings set org.gnome.desktop.interface color-scheme 'prefer-dark'

# 图标与光标
gsettings set org.gnome.desktop.interface icon-theme 'Papirus-Dark'
gsettings set org.gnome.desktop.interface cursor-theme 'Bibata-Modern-Ice'

# 已启用 User Themes 扩展时选择 Shell 主题
gsettings set org.gnome.shell.extensions.user-theme name 'MyShellTheme'

不要把整个主题目录直接 sudo cp 到系统路径作为第一选择。用户目录更容易回退,也不会在软件包升级时留下来源不明的文件。

自己改主题时,从小处开始

先复制一份现有主题到用户目录并改名,不要直接编辑 /usr/share 里的发行版文件。第一轮只改一个颜色、一个间距或一组图标,确认加载路径和缓存都正确,再继续扩大范围。这样出现黑字配黑底时,你知道是哪一行造成的。

如果主题包有 metadata 或 index.theme,同时修改内部名称。只改目录名会产生两个界面上同名的主题,也可能让继承关系继续指向旧主题。

版本变化:旧教程为什么经常不灵

GNOME 50 主题 的版本迁移时间线示意图

版本 与主题有关的变化
GNOME 3 / GTK 3 传统第三方主题模式:GTK 主题放 ~/.themes,Shell 主题通过 User Themes,Tweaks 把选项串起来。
GNOME 40 概览改成横向工作区。视觉变化很显眼,更长远的技术变化则是向 GTK 4 迁移。
GNOME 42 与 libadwaita 大量核心应用采用 libadwaita,发行版或用户提供的任意 GTK 主题不再能可靠地改掉这些应用。
GNOME 47–50 强调色、高对比度和亮暗模式联动逐渐完善。GNOME 50 还完成了 Wayland-only 桌面会话迁移;X11 应用仍可走 Xwayland。

教程里的路径可能仍然存在,但主题引擎、工具包大版本或显示服务器已经变了。判断教程是否可用时,先看它针对 GTK 2/3/4、Qt 5/6、X11 还是 Wayland,再看发布时间。

常见问题

  • 不要随便用一份 gtk.css 覆盖 libadwaita 资源并期待升级安全。控件小改动就可能让文字不可读。
  • Shell 扩展要匹配已安装的 GNOME Shell 版本。大版本升级前先停用不兼容扩展。
  • Flatpak 应用不会自动看到主机上的所有主题。优先使用匹配的 runtime 主题扩展或受支持的 color-scheme portal。
  • 修改 GDM 涉及系统文件,也影响登录路径。普通用户主题实验不要顺手碰它。

我的建议

先把默认主题调整到能长期使用,再添加一个第三方组件。一次换完整套装很有成就感,却很难定位哪一层导致可读性、缩放或 Flatpak 不一致。最稳的方案往往是:保留桌面默认控件样式,只换配色、图标、光标和窗口装饰。

同系列文章

资料来源

最后修改: 2026年7月23日

作者

评论

发表评论

您的邮箱地址不会被公开。