[Ubuntu 22.04-GNOME 42]
我搜索了整个网络,但还没有找到一种方法,让每个应用程序都由一个带有可自定义边框的窗口来管理,无论是厚度还是颜色。我只是想在每个窗口应用程序周围都有一个 10px 宽度的绿色边框。到目前为止,我能得到的最好的方法是创建一个~/.config/gtk-3.0/gtk.css
包含以下内容的文件:
decoration {
borders: 10px solid #00FF00;
}
但这仅影响少数应用程序(使用标准 gtk 后端引擎的应用程序)。一些应用程序,如鹦鹉螺和火狐,不受此修改的影响。我该如何让这些应用程序周围也带有 10 像素宽度的绿色边框?
[编辑#1]
这是我的桌面的屏幕截图,您可以在其中看到ls -al ~/.config/gtk-4.0/
命令的输出。
另外,从同一个屏幕截图中,您可以注意到 nautilus 没有任何绿色边框。对于 Firefox 窗口也是如此,我已经用 PPA 版本替换了软件包的 snap 版本。
答案1
Ubuntu 22.04 确实如此。原因是:某些应用程序正在使用利巴德瓦伊塔库,它会覆盖任何主题(它们只是忽略它)。
有两种可能的解决方法可以解决此问题:
- 编辑
.profile
主文件夹中的文件并添加一行:export GTK_THEME=yourtheme
。注销并重新登录。 - 创建一个文件夹
.config/gtk-4.0
(.config 存在于您的主文件夹中)。在那里生成一个链接:ln -s /home/\<user>/.themes/yourtheme gtk.css
如果您的主题是本地安装的,否则使用/usr/share/themes/yourtheme
作为链接的来源。
这将(目前)绕过 libadwaita 限制。
此解决方法不适用于通过 snap 安装的应用程序!
此外,一些应用程序使用自己的主题(LibreOffice、FreeOffice 和 Firefox)。后者使用自己的 userChrome.css。
更新
我们可以看到布局的不同“想法”:(Tweaks、gedit、nautilus 和终端): ]
这些是使用此 css 生成的.config/gtk-3.0/gtk.css
:
window.csd:not(.popup)>decoration{
border: 3px solid green;
box-shadow: 0 0 0 3px blue;
}
/*
decoration,window.csd {
border: 3px solid magenta;
}
*/
decoration {
border:3px solid yellow;
}
headerbar.titlebar {
border-top: 3px solid magenta;
border-left: 3px solid magenta;
border-right: 3px solid magenta;
}
调整
- window.csd 装饰(蓝色)
- 带边框的标题栏(洋红色)
- 内边框(绿色)
编辑
- window.csd 装饰(蓝色)
- 内边框(绿色)
- 不是标题(而是标题栏)
鹦鹉螺
- window.csd 装饰(蓝色)
- 既不是头栏也不是标题栏的东西
终端
- 有装饰,但没有窗户
- 标题栏
- 没有周围的窗口.csd
没有一个示例是 gtk-4.0 — — 所以如果我们关注 gtk-3.0 世界中的多种实现。
因此,最好的办法是在 window.csd 和装饰中使用 box-shadow,这样可以处理大部分排列。装饰部分还将绘制菜单周围的边框。可以使用 css window.popup >decoration
-selector 进行修复。