操作系统:Ubuntu 18.04
dkb@dkb-G:/usr/share/themes$ find -iname gtk-3* -type d
./Radiant-MATE/gtk-3.0
./Greybird/gtk-3.0
./Emacs/gtk-3.0
./Ambiance/gtk-3.0
./Ambiance/gtk-3.20
./Adwaita-dark/gtk-3.0
./Numix/gtk-3.0
./Numix/gtk-3.20
./Ambiant-MATE-Dark/gtk-3.0
./Radiance/gtk-3.0
./Radiance/gtk-3.20
./HighContrast/gtk-3.0
./Adwaita/gtk-3.0
./Ambiant-MATE/gtk-3.0
./Default/gtk-3.0
dkb@dkb-G:/usr/share/themes$
为什么 Ambiance、Radiance 和 Numix 有gtk-3.0
和gtk-3.20
文件夹,而其他的只有gtk-3.0
?
从简单的测试来看,对中的文件的更改很gtk-3.20
重要,而对中的相应文件进行相同的更改却gtk-3.0
没有效果。
例如,我gtk-main.css
在 Ambiance 主题的两个文件夹中进行了编辑,以更改
@define-color selected_bg_color #f07746;
到
@define-color selected_bg_color #ff00ff;
并且只有 的改变gtk-3.20
才会产生效果。
答案1
gtk-3.0 和 gtk-3.20 文件夹包含基于 CSS Web 标准但经过了一些扩展和修改的文本文件。每个文件都包含许多规则,这些规则描述了在满足某些条件时应如何显示信息 - 例如,笔记本内流程框内的文本标签应使用什么颜色和字体。由于存在许多不同类型的小部件和容器,规则的数量迅速增加。
GTK 的设计者已经决定,CSS 的原始形式(3.0)不再适用,必须进行一些更改。这意味着以前的 CSS 文件不再有效,新的 CSS 文件集必须放在 gkt-3.20 文件夹中。但是,由于并非每个应用程序都可以/能够重建到新版本的框架,因此旧的 gtk-3.0 文件夹保留了下来,以便旧应用程序可以继续像以前一样工作。事实上,出于同样的原因,gtk-2.0 文件夹仍然是必需的。
如果您编辑主题,则对 3.20 文件夹所做的任何更改都只会影响那些基于 3.20(或更高版本)框架构建的应用程序。要更改旧应用程序的外观,您需要对 gtk-3.0 文件夹进行相应的更改。对于非常旧的应用程序,您还需要更改 gtk-2.0 文件夹,但这是完全不同的故事。