GTK - Habilita / establece un tema oscuro por aplicación

54

¿Hay alguna manera de configurar gtk-application-prefer-dark-theme para una aplicación?

Esto normalmente lo establece la aplicación en el código. Aplicaciones como Eye of Gnome y Totem lo activan. Quiero, como usuario activarlo, en una base por aplicación.

Para gnome-terminal, normalmente uso un texto blanco sobre un esquema de color de fondo negro, y tener el borde oscuro de la ventana mejoraría el aspecto general.

También quiero activarlo para vlc.

Gary van der Merwe
fuente

Respuestas:

61

Con gtk+ ≥ 3.12usted puede cargar un tema específico y su variante (oscuro, claro) por aplicación 1 a través de la variable de entorno GTK_THEME=theme:variant. Según el gtk+manual de referencia :

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.

Entonces, para cargar 2 la variante oscura que ejecutarías:

GTK_THEME=Adwaita:dark gedit

Del mismo modo, para lograr lo contrario (cuando el tema predeterminado es oscuro), cargue la variante ligera :

GTK_THEME=Adwaita:light gedit

Tenga en cuenta que si desea usarlo a través de un iniciador ( .desktoparchivo) personalizado, deberá anteponer envel comando en la Execlínea:

Exec=env GTK_THEME=Adwaita:dark eog %U

1: Vale la pena señalar que, según la decisión de los desarrolladores, el más nuevo gnome-terminaltiene su propia configuración a través del menú> preferencias e ignora el tema. Además, dado que esto es algo bastante nuevo, algunas aplicaciones gtk + 3 podrían (todavía) no respetar la GTK_THEMEvariable de entorno.
2: Esto no parece funcionar si ya tiene una instancia en ejecución de esa aplicación, por ejemplo, si nautilusya se está ejecutando en modo oscuro, GTK_THEME=Adwaita:light nautilusse abrirá una nueva nautilusventana pero aún en modo oscuro. No sé si esta es una característica o un error ...

don_crissti
fuente
¿Entonces puede nombrar un tema específico, pero no puede decir "variante oscura de cualquier tema configurado"?
XTL
2
@XTL - Exactamente. Aunque GTK_THEME=:light eogparece estar funcionando también ...
don_crissti 18/03/2015
55
Esto no parece funcionar para la mayoría de las aplicaciones.
Thayne
1
Todavía no he podido encontrar una aplicación para la que funcione, cuando tengo un tema oscuro.
Thayne
2
He intentado lo anterior (para desktoparchivos . ), Pero no funciona, ni siquiera con el env. Cuando se inicia desde la terminal, funciona de manera perfecta. Uso gtk 3.14.5-1 + deb8u1, y probé con gedit 3.14.0-3, ejecutándose en Debian "jessie / stable" 8.
aBarocio80
21

Para las aplicaciones GTK + -3, puede aplicar la variante de tema oscuro usando settings.ini de 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 aplicaciones que no son GTK + como vnc, aún puede imponer decoraciones de ventanas oscuras configurando la _GTK_THEME_VARIANTpropiedad X de tipo UTF8_STRINGa dark. Para hacer esto xprop, escriba el siguiente comando y luego haga clic en la ventana:

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

xpropTambién puede seleccionar ventanas por la WM_NAMEpropiedad (la etiqueta de la barra de título) o por la identificación de la ventana:

$ 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 obtener identificadores y nombres de ventanas, use xlsclients -l.

Florian Müllner
fuente
Por alguna razón, gnome-terminalha decidido que es demasiado esfuerzo para mantener el código para el tema oscuro, por lo menos que su distribución ha parcheado esta de vuelta en esta costumbre trabajo paragnome-terminal
MattSturgeon
6

Aquí hay un script bash que he usado para iniciar una aplicación con un tema diferente. Sin embargo, no lo he usado en años, así que no sé si funcionará con el GTK actual.

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

Aquí hay un poco de información que obtuve de los archivos ubuntu fourms. No estoy seguro si será un problema. ( aquí ) También hay una publicación de blog que detalla un poco más este método. ( aquí ) y ( aquí ). También hay una pregunta similar en este sitio que ya ha sido respondida. ( aquí )

En gnome, las aplicaciones obtienen su tema del gnome-settings-daemon. Esto aplica instantáneamente cualquier cambio de tema a todas las aplicaciones activas, haciendo imposible el cambio de tema por aplicación.

giodamelio
fuente
55
¿Error tipográfico o error? ('gnome-settings-demon ") ... La palabra es daemon (no demonio). Tiene un significado raíz muy diferente: …(in ancient Greek belief) Daemons are good or benevolent supernatural beings between mortals and gods... daemon = bueno / demonio = malo ... en.wikipedia.org/wiki / Daemon_% 28classical_mythology% 29 .. (pronunciado day-mon )
Peter.O
Error tipográfico, eso es lo que sucede cuando no revisas la ortografía de todo: |
giodamelio
2
@ Peter.O: significado diferente en el inglés actual, pero el mismo origen de hecho. etymonline.com/index.php?term=demon
Joce
1
intentado GTK2_RC_FILES=/usr/share/themes/Adwaita/gtk-2.0/gtkrc /opt/ide/eclipsey no funcionó
Robbi Nespu
1

Específicamente para gnome-terminal, puede usar lo siguiente para oscurecer la aplicación específica:

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