如何针对特定应用程序使用不同的GTK 3主题

本文介绍如何将不同的GTK 3主题​​应用于特定的应用程序(全局/桌面GTK主题以外的主题)。
那么,为什么需要将某些应用程序配置为使用与整个桌面的主题集不同的GTK3主题?尽管某个应用程序看起来可能不符合预期/因特定主题而损坏,但您可能希望继续将该主题用于Linux桌面上的其他应用程序。或者,您可能只想将一个主题用于一个或两个应用程序,而将另一个主题用于其余的应用程序。您可以将文本编辑器设置为在桌面上所有其他应用程序使用浅色主题时使用深色主题。

在此屏幕截图中,Tweaks使用Mint-Y主题,Nautilus使用Canta主题,Gedit使用Yaru-dark,Eolie Web浏览器(从Flathub安装)使用Plata主题。它们都同时运行。

让我举一个例子。
默认情况下,Ubuntu 19.10使用明暗混合主题,这与以前的Ubuntu版本中使用的主题不同。窗口标题为黑色,但菜单栏为明亮。因此,默认情况下使用深色主题的代码编辑器(例如Visual Studio Code,Atom和Sublime Text)都具有深色的白色菜单栏。
如果要保留此设置(将VS Code / Atom / Sublime Text的Yaru主题和深色主题作为全局GTK 3主题​​进行混合),但想要将VS Code / Atom / Sublime Text菜单栏更改为深色,请按照本文中的步骤进行操作。您可以使用VS Code / Atom / Sublime Text来设置Yaru-dark主题,而所有其他应用程序则使用默认的Yaru混合主题。如何使用Yaru主题在Ubuntu 19.10上获取深色的GNOME Shell菜单和对话框如何更改每个应用程序的GTK主题 GTK_THEME 环境变量“主要用于轻松调试主题问题” 此GNOME GTK页面。因此,不能保证此选项在任何地方都可以使用(它实际上不适用于DBus激活应用程序)。它还可能会在某些时候停止工作。
请注意,这将更改GTK 3应用程序的应用程序主题,但不会更改不使用客户端装饰的应用程序的窗口装饰(继续使用全局GTK 3主题​​) 。这与本机应用程序Flatpak和Snap程序包相似,只要Flathub / Snapcraft支持用于特定应用程序的主题即可(请注意,Flatpak应用程序比Snap支持更多的第三方主题) )。

启动主题不同于全球GTK3主题的单个应用程序

要覆盖每个应用程序的默认GTK主题, GTK_THEME 一个环境变量,其中包含启动应用程序时应用程序用作值的主题。像这样:

GTK_THEME= 

需要更换 主题名称(例如,出现在“ Tweaks”应用程序中),以及 重要的是要注意,在运行具有自定义主题的应用程序之前,必须关闭该应用程序的所有正在运行的实例(例如,如果在后台运行,则所有正在运行的Nautilus您可以杀死实例: killall nautilus)。
让我们看一个例子。假设您以Yaru-dark为主题开始Gedit。

GTK_THEME=Yaru-dark gedit

或者,以Canta为主题启动Nautilus(文件应用),并为其他应用设置其他主题。

GTK_THEME=Canta nautilus

如果要设置的主题包含深色变体但没有分开,请指定要使用深色主题,例如: GTK_THEME=theme-name:dark。例如,要在应用程序中使用Adwaita深色主题(没有单独的Adwaita-dark文件夹,但它确实支持深色主题),请按以下方式启动应用程序:

GTK_THEME=Adwaita:dark 

始终以自定义GTK 3主题​​启动某些应用程序

如果您想在每次单击应用程序菜单或启动器中的应用程序图标时启动具有特定GTK 3主题​​(不同于桌面GTK主题)的应用程序,则很有必要。
从复制应用程序桌面文件开始 /usr/share/applications~/.local/share/applications。直接使用编辑桌面文件 /usr/share/applications,您将需要重新开始,因为每次应用程序更新都会覆盖您的桌面文件。但是,桌面文件 ~/.local/share/applications,更改会通过升级持续存在(并且只会影响用户)。
接下来,应用程序桌面文件( ~/.local/share/applications在文本编辑器(例如Gedit)中,找到以开头的行 Exec=,之后 = 新增 env GTK_THEME= 然后 Space。交换 使用主题名称(出现在“ Tweaks”应用程序等中),但不要更改其他任何内容。
例子假设您强迫VS Code使用Yaru-dark作为主题,并对桌面上的所有其他应用程序使用不同的主题。在这种情况下,复制 code.desktop 来自的文件 /usr/share/applications~/.local/share/applications/code.desktop 在这个新位置使用文本编辑器, Exec 行。
原始VS Code桌面文件(code.desktop)包括: Exec 行:

Exec=/usr/share/code/code --unity-launch %F

编辑VS Code使其强制使用Yaru-dark主题后,此行应如下所示:

Exec=env GTK_THEME=Yaru-dark /usr/share/code/code --unity-launch %F

多种应用 Exec 对每一行执行此操作(例如,如果您的应用程序的桌面文件支持右键单击该应用程序的图标时出现的桌面操作)。在使用自定义主题运行之前,请不要忘记关闭应用程序的所有正在运行的实例!
通过 r / Ubuntu (U / manyfacedgodd)

Sidebar