如何覆盖每个应用程序的 GTK3 / Gnome Shell 主题

如何覆盖每个应用程序的 GTK3 / Gnome Shell 主题

我在 Fedora 17 上使用 Cinnamon 和 Gnome Shell(Gnome 3),并采用深色主题布拉普尔。相当多的应用程序不能很好地处理深色主题。

在 Gnome 2 中,我为这些程序提供了一个简单的解决方案。我只是通过环境变量指示它们使用浅色主题,GTK2_RC_FILES如下所示(示例在某些 2009 Ubuntu Gnome 2 设置中有效):

env GTK2_RC_FILES=/usr/share/themes/Human/gtk-2.0/gtkrc ooffice --writer

现在在 Gnome 3 中,这个功能不起作用。我尝试了很多不同的命令变体,例如下面这些,但目前都没有成功:

env GTK2_RC_FILES=/usr/share/themes/Adwaita/gtk-3.0/gtkrc GTK3_RC_FILES=/usr/share/themes/Adwaita/gtk-3.0 libreoffice --writer

我找不到任何关于此内容的文档。如果您知道如何操作或我可以从哪里获得该信息,请告诉我。

为什么要覆盖:对于 LibreOffice 和 OpenOffice,尝试解决这些问题似乎毫无用处。安装 Blapple 主题后,所有内容的背景都是灰色的。例如,尝试覆盖 Calc 中的默认背景颜色会使背景变为白色,但也会覆盖每个自定义背景单元格,使其变为白色,这太可怕了。不要让我开始谈论 Impress 有多好用……

答案1

我遇到了同样的问题,OpenOffice + 黑色主题看起来很丑。似乎没有什么比旧GTK2_RC_FILES变量更方便了,但看看这个:

gtk_css_provider_load_from_file()应用程序可以通过使用或 gtk_style_context_add_provider_for_screen() 调用并添加提供程序 来使 GTK+ 解析特定的 CSS 样式表gtk_style_context_add_provider()。此外,初始化 GTK+ 时将读取某些文件。首先, XDG_CONFIG_HOME/gtk-3.0/gtk.css如果文件存在,则加载该文件。然后,GTK+ 尝试加载HOME/.themes/theme-name/gtk-3.0/gtk.css,然后返回到 GTK_DATA_PREFIX/share/themes/theme-name/gtk-3.0/gtk.css,其中 theme-name 是当前主题的名称(请参阅设置"gtk-theme-name" ),GTK_DATA_PREFIX是编译 GTK+ 时配置的前缀,除非被GTK_DATA_PREFIX环境变量覆盖。

来源

这意味着通过这样做,您强制 GTK 使用默认的普通主题:

env GTK2_RC_FILES= GTK_DATA_PREFIX= libreoffice --writer

似乎没有可能覆盖主题名称(这有点愚蠢,应该修复),所以似乎唯一的方法是创建一个“假”主题目录。

答案2

我知道这是一个非常老的问题但这是在 GTK+3 中如何做到的。

GTK_THEME=Adwaita gnome-calculator

或使用

GTK_THEME=Adwaita:dark gnome-calculator

适用于 Adwaita 主题的深色版本。

答案3

GTK3+ 的工作解决方案:

在以下位置创建自定义 .desktop 文件〜/ .local /共享/应用程序/,你可以从/usr/共享/应用程序/

编辑并修改“执行官=”行,附加“环境 GTK_THEME=”之后"=",因此它看起来像这样:

Exec=env GTK_THEME='Numix Daily' /usr/share/dbeaver/dbeaver

为了方便起见,更改“名称=”到别的东西:

Name=DBeaver Community (Numix theme)

然后,运行更新桌面数据库

我这里的示例是针对 DBeaver,但我已经使用 Libreoffice Writer 对其进行了测试并且它可以工作。

相关内容