GTK - Ativar / definir tema escuro em uma base por aplicativo

49

Existe uma maneira de configurar o Gtk-application-prefer-dark-theme para um aplicativo?

Isso é normalmente definido no código pelo aplicativo. Aplicativos como Eye of Gnome e Totem ligam. Eu quero, como um usuário ligá-lo, em uma base por aplicativo.

Para o gnome-terminal, eu normalmente uso um texto branco no esquema de cores de fundo preto, e ter a borda da janela escura melhoraria a aparência geral.

Eu também quero ativá-lo para vlc.

    
por Gary van der Merwe 01.06.2011 / 08:34

3 respostas

49

Com gtk+ ≥ 3.12 , você pode carregar um tema específico e sua variante (escuro, claro) em uma base por aplicativo 1 por meio da variável de ambiente GTK_THEME=theme:variant . De acordo com o manual de referência 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.

Então, para carregar 2 a variante dark você executaria:

GTK_THEME=Adwaita:dark gedit

Da mesma forma, para conseguir o oposto (quando o tema padrão é escuro), você carrega a variante light :

GTK_THEME=Adwaita:light gedit

Observe que, se você quiser usá-lo por meio de um ativador personalizado ( .desktop file), será necessário preceder env ao comando na linha Exec :

Exec=env GTK_THEME=Adwaita:dark eog %U

1: Vale a pena notar que - de acordo com a decisão dos desenvolvedores - o mais novo gnome-terminal tem sua própria configuração via menu > preferências e ignora o tema. Além disso, como esse é um recurso bastante novo, alguns aplicativos gtk + 3 podem não (ainda) honrar a variável de ambiente GTK_THEME .
2: Isso parece não funcionar se você já tiver uma instância em execução desse aplicativo. se nautilus já estiver em execução no modo escuro, a execução de GTK_THEME=Adwaita:light nautilus abrirá uma nova janela nautilus , mas ainda no modo escuro. Não sei se isso é um recurso ou um bug ...

    
por 16.02.2015 / 13:07
19

Para aplicativos GTK + -3, você pode impor a variante do tema escuro usando o settings.ini do GtkSettings:

$ 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

Para aplicativos não-GTK + como vnc , você ainda pode impor decorações de janelas escuras definindo a propriedade _GTK_THEME_VARIANT X do tipo UTF8_STRING a dark . Para fazer isso com xprop , digite o seguinte comando e clique na janela depois:

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

xprop também pode selecionar janelas pela propriedade WM_NAME (o rótulo da barra de título) ou pelo id da janela:

$ 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

Para obter IDs e nomes de janelas, use xlsclients -l .

    
por 06.11.2011 / 22:35
4

Aqui está um script bash que usei para iniciar um aplicativo com um tema diferente. Não tenho usado isso há anos, então não sei se vai funcionar com o GTK atual.

#!/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 "$@"

Aqui está um pouco de informação que eu peguei dos arquivos fourms do ubuntu. Não tenho certeza se será um problema. ( aqui ) Há também uma postagem no blog detalhando este método um pouco mais. ( aqui ) e ( aqui ). Há também uma questão semelhante neste site que já foi respondida. ( aqui )

Under gnome, apps get their theme from the gnome-settings-daemon. This instantaneously applies any theme change to all active applications, making per-appplication theme changing impossible.

    
por 10.06.2011 / 07:06

Tags