如何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.0
和 gtk-3.20
文件夹中,但似乎没有任何改变。这是我的主题树。是否缺少所需的文件?
.
├── gtk-3.0
│ └── gtk.css
├── gtk-3.20
│ └── gtk.css
└── index.theme
此问题是由于忘记在 gnome-tweak-tool
中安装用户主题扩展引起的。因为一些应用程序的标题栏是由应用程序本身提供的,主题应用到它们,但其他程序依赖 shell 提供标题栏,因此没有样式。
我正在尝试为 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.0
和 gtk-3.20
文件夹中,但似乎没有任何改变。这是我的主题树。是否缺少所需的文件?
.
├── gtk-3.0
│ └── gtk.css
├── gtk-3.20
│ └── gtk.css
└── index.theme
此问题是由于忘记在 gnome-tweak-tool
中安装用户主题扩展引起的。因为一些应用程序的标题栏是由应用程序本身提供的,主题应用到它们,但其他程序依赖 shell 提供标题栏,因此没有样式。