我升级到了 Fedora 21,它重点关注 GNOME 3.14(以及相关的 GTK+ 材料)。不幸的是,这个特定的更新似乎破坏了我为现已老化的 GNOME 3 版本编写的许多旧主题。以前它们可能会吱吱作响,但现在看起来有点格格不入。
我不想重新发明轮子:我很乐意采用预先存在的 CSS 模板(例如默认的 Adwaita 3.14 规范)并根据我的喜好到处调整它;不会有什么花哨的飞行。想象一下当我偷看 /usr/share/themes/Adwaita/gtk-3.0/gtk.css 时我撕掉的头发:
/* Adwaita is the default theme of GTK+ 3, this file is not used */
这让我陷入了困境。我缺乏 Google-fu 来挖掘有关这可能在哪里的文档(更糟糕的是,我有一种直觉,这对 GNOME 人来说是显而易见的,而我一直错过了),并且出于某种原因,GNOME 开发者网站拒绝了我尝试研究他们的主题规范。
简而言之,我想找到一个 GNOME 3.14 的原始主题规范(假设存在)。我该如何做到这一点,或者如何修改我的方法?
答案1
该文件中只有一行,.css
因为默认主题 Adwaita 以二进制形式提供:
Adwaita 是一个复杂的主题,因此为了保持其可维护性,它是在 SASS 中编写和处理的,然后在 gtk 构建期间将生成的 CSS 转换为 gresource 文件,并在运行时以不可读或可编辑的形式使用。
对于gnome 4.*
每自述文件:
如何调整主题
Default 是一个复杂的主题,因此为了保持其可维护性,它是在 SASS 中编写和处理的。然后,生成的 CSS 在 gtk 构建期间转换为 gresource 文件,并在运行时以不可读或可编辑的形式使用。
您的更改很可能会发生在 _common.scss 文件中。这是定义所有小部件选择器的地方。以下是“支持”样式表的概要,不太可能是通过样式表修复进行驱动的正确位置:
_colors.scss - 全局颜色定义。我们将定义的颜色数量保持在必要的最低限度,大多数颜色都源自少数基础知识。它涵盖了浅色变体和深色变体。
_colors-public.scss - 通过 gtk 导出的 SCSS 颜色,以允许第 3 方应用程序进行颜色混合。
_drawing.scss - 绘图助手混合/函数,以允许在特定上下文下更轻松地定义小部件绘图。这就是默认值不是 15000 LOC 的原因。
_common.scss - 每个小部件的实际样式定义。您可以在此处添加/删除更改。
您可以在以下位置阅读有关 SASS 的信息:http://sass-lang.com/documentation/。一旦您对 _common.scss 文件进行更改,GTK 将重建 CSS 文件。
另外,请检查中的指南默认light.scss和默认-dark.scss:
// 一般准则:
// - 您不太可能想要编辑其他内容_common.scss
// - 将定义的颜色数量保持在最低限度,
如果您需要微妙的阴影,请使用颜色混合功能; - 如果您需要反转颜色函数
// 使用 @if 指令来匹配深色 $variant
在同一个 git 目录 ( Default
) 中,您将找到这些文件
_common.scss
,_colors.scss
,_colors-public.scss
和_drawing.scss
对于gnome 3.*
:
由于代码已包含在gtk+
,可以查看源文件这里。根据他们的readme
:
_colors.scss - global color definitions. We keep the number of defined colors to a necessary minimum, most colors
are derived form a handful of basics. It covers both the light variant and the dark variant.
_colors-public.scss - SCSS colors exported through gtk to allow for 3rd party apps color mixing.
_drawing.scss - drawing helper mixings/functions to allow easier definition of widget drawing under specific context.
This is why Adwaita isn't 15000 LOC.
_common.scss - actual definitions of style for each widget. This is where you are likely to add/remove your changes.
在同一个git目录( Adwaita
)中你可以找到_*.scss
上面提到的文件和参考方案:
答案2
我在这里复制我自己的 TLDR,来自关于窗口顶栏颜色的类似问题
〜/.config/gtk-3.0/gtk.css
/* REMOVE "-dark" IF USING LIGHT THEME */
@import url("resource:///org/gtk/libgtk/theme/Adwaita/gtk-contained-dark.css");
/* THIS ONE CHANGES TITLEBAR COLOR */
headerbar.titlebar,
headerbar.titlebar:active {
background:#3F51B5;
}
/* THIS CHANGES NAUTILUS SEARCH BAR */
.horizontal.path-bar-box,
row:selected:backdrop {
background:#3F51B5;
border-color:#3F51B5;
}
要调试并找到合适的 CSS 选择器,请使用环境变量打开 GTK3 应用程序GTK_DEBUG=interactive
。例如,
GTK_DEBUG=interactive nautilus
这应该会打开 GTK 窗口的检查器。如果不存在,请按Ctrl+ Shift+ I。