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

54

Existe uma maneira de definir o tema gtk-application-prefer-dark-para um aplicativo?

Normalmente, isso é definido no código pelo aplicativo. Aplicativos como Eye of Gnome e Totem o ativam. Desejo, como usuário ativá-lo, por aplicativo.

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

Também quero ativá-lo no vlc.

Gary van der Merwe
fonte

Respostas:

61

Com gtk+ ≥ 3.12você, você pode carregar um tema específico e sua variante (escuro, claro) por aplicativo 1 , por meio da variável de ambiente GTK_THEME=theme:variant. Conforme o gtk+manual de referência :

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.

Portanto, para carregar 2 a variante escura, você executaria:

GTK_THEME=Adwaita:dark gedit

Da mesma forma, para obter o oposto (quando o tema padrão estiver escuro), você carrega a variante clara :

GTK_THEME=Adwaita:light gedit

Observe que, se você quiser usá-lo por meio de um iniciador ( .desktoparquivo) personalizado, terá que acrescentar envo comando na Execlinha:

Exec=env GTK_THEME=Adwaita:dark eog %U

1: Vale a pena notar que - conforme a decisão do desenvolvedor - o mais novo gnome-terminaltem sua própria configuração via menu> preferências e ignora o tema. Além disso, como esse é um material bastante novo, alguns aplicativos gtk + 3 podem (ainda) não respeitar a GTK_THEMEvariável de ambiente.
2: Isso parece não funcionar se você já tiver uma instância em execução desse aplicativo, por exemplo, se nautilusjá estiver em execução no modo escuro, a execução GTK_THEME=Adwaita:light nautilusabrirá uma nova nautilusjanela, mas ainda no modo escuro. Não sei se isso é um recurso ou um bug ...

don_crissti
fonte
Então, você pode nomear um tema específico, mas não pode dizer "variante negra de qualquer tema definido"?
XTL
2
@XTL - Exatamente. Embora GTK_THEME=:light eogparece estar funcionando muito ...
don_crissti
5
Isso não parece funcionar para a maioria dos aplicativos.
Thayne
11
Não consegui encontrar um aplicativo para o qual funcione ainda, quando tenho um tema sombrio.
Thayne
2
Eu tentei o acima (para desktoparquivos . ), Mas não funciona, nem mesmo com o env. Quando iniciado a partir do terminal, ele funciona corretamente. Eu uso o gtk 3.14.5-1 + deb8u1, e tentei com o gedit 3.14.0-3, rodando no Debian "jessie / stable" 8.
aBarocio80
21

Para aplicativos GTK + -3, você pode aplicar a variante de tema escuro usando as configurações do GtkSettings '.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

Para GTK não-aplicativos + como vnc, você ainda pode fazer valer janela decorações escuras, definindo a _GTK_THEME_VARIANTpropriedade X do tipo UTF8_STRINGa dark. Para fazer isso xprop, digite o seguinte comando e clique na janela depois:

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

xpropTambém é possível selecionar janelas pela WM_NAMEpropriedade (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 os IDs e nomes das janelas, use xlsclients -l.

Florian Müllner
fonte
Por alguma razão gnome-terminaldecidiu que é muito esforço para manter o código para o tema escuro, a menos que a sua distro corrigiu esta de volta neste trabalho não vai paragnome-terminal
MattSturgeon
6

Aqui está um script bash que usei para iniciar um aplicativo com um tema diferente. Não o utilizo há anos, então não sei se ele 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ão algumas informações que obtive dos arquivos ubuntu fourms. Não tenho certeza se será um problema. ( aqui ) Há também uma postagem no blog detalhando um pouco mais esse método. ( aqui ) e ( aqui ). Há também uma pergunta semelhante neste site que já foi respondida. ( aqui )

No gnome, os aplicativos obtêm seu tema no gnome-settings-daemon. Isso aplica instantaneamente qualquer alteração de tema a todos os aplicativos ativos, impossibilitando a alteração do tema por aplicativo.

giodamelio
fonte
5
Erro de digitação ou erro? ('gnome-settings-demon ") ... A palavra é daemon (não demônio). Ela tem um significado de raiz muito diferente: …(in ancient Greek belief) Daemons are good or benevolent supernatural beings between mortals and gods... daemon = good / demon = bad ... pt.wikipedia.org/wiki / Daemon_% 28classical_mythology% 29 .. (pronunciado dia-seg )
Peter.O
Erro de digitação, é o que acontece quando você não faz a verificação ortográfica de tudo: |
giodamelio
2
@ Peter.O: Significado diferente nos dias de hoje em inglês, mas com a mesma origem. etymonline.com/index.php?term=demon
Joce
11
tentei com GTK2_RC_FILES=/usr/share/themes/Adwaita/gtk-2.0/gtkrc /opt/ide/eclipsee does't trabalhou
Robbi Nespu
1

Especificamente para gnome-terminal, você pode usar o seguinte para escurecer o aplicativo específico:

gsettings set org.gnome.Terminal.Legacy.Settings theme-variant 'dark'
Nick Bull
fonte