GTK-在每个应用程序的基础上启用/设置深色主题


54

有没有一种方法可以为应用程序设置gtk-application-prefer-dark-theme?

通常由应用程序在代码中设置。Eye of Gnome和Totem等应用程序将其打开。我想作为一个用户打开它,基于每个应用程序。

对于gnome-terminal,我通常在黑色背景配色方案上使用白色文本,并且使用深色窗口边框可以改善整体外观。

我也想为vlc打开它。

Answers:


61

gtk+ ≥ 3.12可以装载一个特定的主题和其上的每个应用程序的变体(暗光)1周经由环境变量的基础GTK_THEME=theme:variant。根据gtk+参考手册

GTK_THEME.  If set, makes GTK+ use the named theme instead of the theme that is
specified by the gtk-theme-name setting [...] It is also possible to specify a
theme variant to load, by appending the variant name with a colon, like this:
GTK_THEME=Adwaita:dark.

因此,装载2变种你可以运行:

GTK_THEME=Adwaita:dark gedit

同样,要实现相反的效果(默认主题为深色时),请加载light变体:

GTK_THEME=Adwaita:light gedit

请注意,如果要通过自定义启动器(.desktop文件)使用它,则必须env在该Exec行之前添加命令:

Exec=env GTK_THEME=Adwaita:dark eog %U

1:值得注意的是-根据开发人员的决定-较新的产品gnome-terminal通过菜单>偏好设置具有自己的配置,并且忽略了主题。另外,由于这是相当新的东西,因此某些gtk + 3应用程序可能(尚未)遵守GTK_THEME环境变量。
2:如果您已经具有该应用程序的运行实例,则这似乎不起作用,例如,如果nautilus已经在暗模式下运行,则运行GTK_THEME=Adwaita:light nautilus将打开一个新nautilus窗口,但仍在暗模式下。我不知道这是功能还是错误...


因此,您可以命名一个特定的主题,但是不能说“设置了任何主题的深色变体”?
XTL

2
@XTL-确实如此。虽然GTK_THEME=:light eog似乎也可以工作...
don_crissti

5
这似乎不适用于大多数应用程序。
Thayne 2015年

1
当我有一个黑暗的主题时,我还找不到适合该应用程序的应用程序。
Thayne 2015年

2
我已经尝试了上述方法(对于desktop.files文件),但是即使使用.files文件也无法正常工作env。从终端启动时,它可以正常工作。我使用GTK + 3.14.5-1 deb8u1,并试图用gedit 3.14.0-3,在Debian上运行“杰西/稳定” 8
aBarocio80

21

对于GTK + -3应用程序,您可以使用GtkSettings的settings.ini实施深色主题变体:

$ mkdir -p $HOME/.config/gnome-terminal/gtk-3.0 # the path before gtk-3.0 is arbitrary
$ cat >> $HOME/.config/gnome-terminal/gtk-3.0/settings.ini << EOF
[Settings]
gtk-application-prefer-dark-theme=true
EOF
$ echo 'alias gnome-terminal="XDG_CONFIG_HOME=$HOME/.config/gnome-terminal gnome-terminal" >> $HOME/.bashrc

对于像非GTK +应用程序vnc,您还可以通过设置执行黑暗的窗饰_GTK_THEME_VARIANT类的x属性UTF8_STRINGdark。为此xprop,请键入以下命令,然后单击窗口:

$ xprop -f _GTK_THEME_VARIANT 8u -set _GTK_THEME_VARIANT "dark"

xprop也可以通过WM_NAME属性(标题栏标签)或窗口ID 选择窗口:

$ xprop -f _GTK_THEME_VARIANT 8u -set _GTK_THEME_VARIANT "dark" -name "Spotify Premium - Linux Preview"
$ xprop -f _GTK_THEME_VARIANT 8u -set _GTK_THEME_VARIANT "dark" -id 0x380002b

要获取窗口ID和名称,请使用xlsclients -l


由于某种原因gnome-terminal,我们决定为保持Dark主题的代码而付出了过多的努力,因此,除非您的发行版对此进行了修补,否则不会起作用gnome-terminal
MattSturgeon

6

这是我用来启动具有不同主题的应用程序的bash脚本。多年来没有使用它,所以我不知道它是否可以与当前的GTK一起使用。

#!/bin/bash
# lauch a gtk application with a different theme
# set GTKRCFILE variable to your favourite theme
GTKRCFILE=Clearlooks
GTK2_RC_FILES=/usr/share/themes/"$GTKRCFILE"/gtk-2.0/gtkrc "$@"

这是我从ubuntu fourms存档获得的一些信息。不确定是否会出现问题。(在此处)还有一篇博客文章详细介绍了该方法。(在这里)和(在这里)。此站点上还有一个类似的问题已得到解答。(这里

在gnome下,应用程序从gnome-settings-daemon获得其主题。这可以将任何主题更改立即应用于所有活动应用程序,从而使按应用程序主题更改成为不可能。


5
错字还是错?('gnome-settings-demon“)...这个词是守护程序(不是恶魔)。它有非常不同的词根含义: …(in ancient Greek belief) Daemons are good or benevolent supernatural beings between mortals and gods... daemon = good / demon = bad ... en.wikipedia.org/wiki / Daemon_%28classical_mythology%29 ..(发音为day-mon
Peter.O 2011年

错别字,这就是当您不检查所有内容时会发生的事情:|
giodamelio 2011年

2
@ Peter.O:当今英语的含义不同,但实际上来源相同。etymonline.com/index.php?term=demon
乔斯(

1
尝试GTK2_RC_FILES=/usr/share/themes/Adwaita/gtk-2.0/gtkrc /opt/ide/eclipse过但
不起作用

1

专门针对gnome-terminal,您可以使用以下命令使特定的应用程序变暗:

gsettings set org.gnome.Terminal.Legacy.Settings theme-variant 'dark'
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.