GTK - Activer / définir un thème sombre application par application

54

Est-il possible de définir gtk-application-prefer-dark-theme pour une application?

Ceci est normalement défini dans le code par l'application. Des applications telles que Eye of Gnome et Totem l'activent. En tant qu'utilisateur, je souhaite l'activer, sur une base individuelle.

Pour gnome-terminal, j’utilise normalement un texte blanc sur un jeu de couleurs d’arrière-plan noir et la bordure sombre de la fenêtre améliorerait l’aspect général.

Je veux aussi l'activer pour vlc.

Gary van der Merwe
la source

Réponses:

61

Avec gtk+ ≥ 3.12vous pouvez charger un thème spécifique et sa variante (sombre, clair) application par application 1 via la variable d'environnement GTK_THEME=theme:variant. Selon le gtk+manuel de référence :

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.

Donc, pour charger 2 la variante sombre que vous utiliseriez:

GTK_THEME=Adwaita:dark gedit

De même, pour obtenir le contraire (lorsque le thème par défaut est sombre), chargez la variante light :

GTK_THEME=Adwaita:light gedit

Notez que si vous souhaitez l’utiliser via un programme de lancement personnalisé, .desktopvous devez ajouter envla commande au début de la commande dans la Execligne suivante:

Exec=env GTK_THEME=Adwaita:dark eog %U

1: Il est à noter que - conformément à la décision des développeurs - la plus récente gnome-terminala sa propre configuration via menu> préférences et qu’elle ignore le thème. De plus, comme il s’agit plutôt de nouveautés, il se peut que certaines applications gtk + 3 ne respectent pas (encore) la GTK_THEMEvariable d’environnement.
2: Cela ne semble pas fonctionner si vous avez déjà une instance en cours d'exécution de cette application, par exemple si elle nautiluss'exécute déjà en mode sombre, son exécution GTK_THEME=Adwaita:light nautilusouvrira une nouvelle nautilusfenêtre, mais toujours en mode sombre. Je ne sais pas s'il s'agit d'une fonctionnalité ou d'un bug ...

don_crissti
la source
Vous pouvez donc nommer un thème spécifique, mais vous ne pouvez pas dire "variante sombre de tout thème défini"?
XTL
2
@XTL - Exactement. Bien que GTK_THEME=:light eogsemble fonctionner aussi ...
don_crissti
5
Cela ne semble pas fonctionner pour la plupart des applications.
Thayne
1
Je n'ai pas encore trouvé d'application pour laquelle cela fonctionne, alors que mon thème est sombre.
Thayne
2
J'ai essayé ce qui précède (pour les desktopfichiers . ), Mais cela ne fonctionne pas, même avec le env. Lorsqu'il est lancé depuis un terminal, il fonctionne parfaitement. J'utilise gtk 3.14.5-1 + deb8u1, et j'ai essayé avec gedit 3.14.0-3, sous Debian "jessie / stable" 8.
aBarocio80 Le
21

Pour les applications GTK + -3, vous pouvez appliquer la variante de thème sombre à l'aide du fichier 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

Pour les applications autres que GTK + vnc, vous pouvez toujours appliquer des décorations de fenêtres sombres en définissant la _GTK_THEME_VARIANTpropriété X de type UTF8_STRINGsur dark. Pour ce faire xprop, tapez la commande suivante et cliquez ensuite sur la fenêtre:

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

xproppeut également sélectionner des fenêtres par la WM_NAMEpropriété (libellé de la barre de titre) ou par l'identifiant de la fenêtre:

$ 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

Pour obtenir les identifiants et les noms de fenêtre, utilisez xlsclients -l.

Florian Müllner
la source
Pour une raison quelconque, il gnome-terminala été décidé que trop d'efforts gnome-terminal
seraient
7

Voici un script bash que j'ai utilisé pour lancer une application avec un thème différent. Je ne l'ai pas utilisé depuis des années, donc je ne sais pas si cela fonctionnera avec le GTK actuel.

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

Voici un peu d’information tirée des archives d’Ubuntu Fourms. Je ne sais pas si ce sera un problème. ( ici ) Il y a aussi un article de blog détaillant cette méthode un peu plus. ( ici ) et ( ici ). Il y a aussi une question similaire sur ce site à laquelle on a déjà répondu. ( ici )

Sous gnome, les applications tirent leur thème du démon gnome-settings-daemon. Cela applique instantanément tout changement de thème à toutes les applications actives, rendant impossible le changement de thème par application.

Giodamelio
la source
5
Typo ou erreur? ('gnome-settings-demon ") ... Le mot est daemon (pas démon) .. Il a une signification racine très différente: …(in ancient Greek belief) Daemons are good or benevolent supernatural beings between mortals and gods... daemon = bon / demon = mauvais ... en.wikipedia.org/wiki / Daemon_% 28climatique_mythologie% 29 .. (prononcé jour-mon )
Peter.O le
Typo, c'est ce qui arrive quand on ne vérifie pas l'orthographe: |
Giodamelio
2
@ Peter.O: sens différent dans l'anglais actuel, mais même origine. etymonline.com/index.php?term=demon
Joce
1
essayé avec GTK2_RC_FILES=/usr/share/themes/Adwaita/gtk-2.0/gtkrc /opt/ide/eclipseet ne fonctionne pas
Robbi Nespu
Cela fonctionne bien pour gapcmon
Jonathan Neufeld Il y a
1

Spécifiquement pour gnome-terminal, vous pouvez utiliser les éléments suivants pour rendre l'application spécifique sombre:

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