如何theme/style gnome-3 中的标题栏?

How to theme/style the title bar in gnome-3?

我正在尝试为 Gnome 3 创建一个主题,但我 运行 在设置标题栏样式时遇到了一些问题。我在尝试设置栏样式时使用以下 CSS,但它仅适用于使用 GtkHeaderBar 覆盖标题栏的 windows。

headerbar {
  border: 1px solid #000000;
  border-bottom: none;
  border-radius: 4px 4px 0 0;
  box-shadow: inset 1px 1px 0px 0px rgba(255, 255, 255, 0.25), inset -1px 1px 0px 0px rgba(255, 255, 255, 0.25);
  background-image: linear-gradient(to right, rgba(109, 179, 242, 0.5) 0%, rgba(84, 163, 238, 0.5) 50%, rgba(54, 144, 240, 0.5) 51%, rgba(30, 105, 222, 0.5) 100%);
  padding: 0 5px;
}

headerbar:backdrop {
  border: 1px solid #303030;
  border-bottom: none;
  background-image: linear-gradient(to right, #C1C1C1 0%, #B1B1B1 50%, #A2A2A2 51%, #8B8B8B 100%);
}

/* Window Body */
window {
  border: 1px solid #000000;
  border-top: none;
  border-radius: 0 0 4px 4px;
  box-shadow: inset 1px -1px 0px 0px rgba(255, 255, 255, 0.25), inset -1px -1px 0px 0px rgba(255, 255, 255, 0.25);
  background-image: linear-gradient(to right, rgba(109, 179, 242, 0.5) 0%, rgba(84, 163, 238, 0.5) 50%, rgba(54, 144, 240, 0.5) 51%, rgba(30, 105, 222, 0.5) 100%);
  padding: 5px;
}

window:backdrop {
  border: 1px solid #303030;
  border-top: none;
  background-image: linear-gradient(to right, #C1C1C1 0%, #B1B1B1 50%, #A2A2A2 51%, #8B8B8B 100%);
}

window > box {
  border: 1px solid black;
  border-radius: 3px;
  box-shadow: 0px 0px 0px 1px rgba(255, 255, 255, 0.25);
  margin: 4px;
  background-color: #ABABAB;
  background-image: none;
}

看来 window 管理器使用的是上次加载主题的样式信息,而不是我提供的 CSS。我正在按 运行 gsettings set org.gnome.desktop.interface gtk-theme "<theme name".

切换主题

这是标题栏应该的样子(应用于不同的window)

这是 gtk3-demo window 在 Ambiance 之后切换到我的主题时的样子

这是 gtk3-demo window 在 Adwaita 之后切换到我的主题时的样子

我由此得出的结论是,有一组单独的 css 节点或 类 与 headerbar 分开,尽管我有 none 的建议网上查到的,比如用 .header-bar 都成功了。我试图通过使用 GTK_DEBUG=interactive gtk3-demo 启动交互式调试器来检查 css 节点层次结构,但节点层次结构查看器在 window 节点处结束,该节点不包括标题栏。

gnome-3 中设置主题标题栏样式的正确方法是什么?有没有css节点的主列表可以参考?

编辑: 我刚刚遇到并尝试了 decoration 标签,但它似乎与 headerbar 有相同的问题,但它没有效果 windows 没有 GtkHeaderBar 元素。

编辑 2: 现在看来我的问题不一定出在我创建的 CSS 上。作为试图在标题栏中引起任何更改的最后努力,我创建了一个规则 * { color: #00ff00; background-color: #ff0000; background-image: none} 但它对标题没有影响。我现在开始认为默认标题栏的样式不同于应用程序 css,可能位于 ~/.themes/xyz/ 目录下的另一个文件夹中。目前,我已将整个 CSS 复制到 gtk-3.0gtk-3.20 文件夹中,但似乎没有任何改变。这是我的主题树。是否缺少所需的文件?

.
├── gtk-3.0
│   └── gtk.css
├── gtk-3.20
│   └── gtk.css
└── index.theme

此问题是由于忘记在 gnome-tweak-tool 中安装用户主题扩展引起的。因为一些应用程序的标题栏是由应用程序本身提供的,主题应用到它们,但其他程序依赖 shell 提供标题栏,因此没有样式。