GTK - Aktivieren / Festlegen eines dunklen Designs für jede Anwendung

54

Gibt es eine Möglichkeit, gtk-application-prefer-dark-theme für eine Anwendung festzulegen?

Dies wird normalerweise von der Anwendung im Code festgelegt. Apps wie Eye of Gnome und Totem schalten es ein. Ich möchte, als Benutzer, es auf einer Basis pro Anwendung einschalten.

Beim Gnome-Terminal verwende ich normalerweise einen weißen Text auf schwarzem Hintergrund, und der dunkle Fensterrand würde das Gesamtbild verbessern.

Ich möchte es auch für VLC einschalten.

Gary van der Merwe
quelle

Antworten:

61

Mit können gtk+ ≥ 3.12Sie ein bestimmtes Thema und dessen Variante (dunkel, hell) pro Anwendung 1 über die Umgebungsvariable laden GTK_THEME=theme:variant. Nach dem gtk+Referenzhandbuch :

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.

Also, um 2 die dunkle Variante zu laden , würden Sie ausführen:

GTK_THEME=Adwaita:dark gedit

Um das Gegenteil zu erreichen (wenn das Standarddesign dunkel ist), laden Sie die helle Variante:

GTK_THEME=Adwaita:light gedit

Beachten Sie, dass Sie, wenn Sie es über einen benutzerdefinierten Launcher (eine .desktopDatei) verwenden möchten, envdem Befehl in der ExecZeile voranstellen müssen :

Exec=env GTK_THEME=Adwaita:dark eog %U

1: Es ist zu beachten, dass - gemäß der Entscheidung der Entwickler - die neuere Version gnome-terminalüber menu> preferences eine eigene Konfiguration hat und das Thema ignoriert. Da es sich um ein ziemlich neues Produkt handelt, wird die GTK_THEMEUmgebungsvariable bei einigen GTK + 3-Anwendungen möglicherweise (noch) nicht berücksichtigt.
2: Dies scheint nicht zu funktionieren, wenn Sie bereits eine laufende Instanz dieser Anwendung haben. Wenn z. B. nautilusbereits im dunklen Modus ausgeführt GTK_THEME=Adwaita:light nautiluswird , wird beim Ausführen ein neues nautilusFenster geöffnet , das sich jedoch noch im dunklen Modus befindet. Ich weiß nicht, ob dies ein Feature oder ein Bug ist ...

don_crissti
quelle
Sie können also ein bestimmtes Thema benennen, aber nicht "dunkle Variante des jeweils eingestellten Themas" sagen?
XTL
2
@XTL - Genau. Obwohl GTK_THEME=:light eogscheint zu arbeiten ...
don_crissti
5
Dies scheint für die meisten Anwendungen nicht zu funktionieren.
Thayne
1
Ich habe noch keine Anwendung gefunden, für die dies funktioniert, wenn ich ein dunkles Thema habe.
Thayne
2
Ich habe die oben genannten (für. desktopFiles) ausprobiert , aber es funktioniert nicht, auch nicht mit der env. Wenn es vom Terminal aus gestartet wird, funktioniert es einwandfrei. Ich verwende gtk 3.14.5-1 + deb8u1 und probiere es mit gedit 3.14.0-3 unter Debian "jessie / stable" 8.
aBarocio80
21

Für GTK + -3-Anwendungen können Sie die Variante für dunkle Designs mithilfe der settings.ini von GtkSettings erzwingen:

$ 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

Für Nicht-GTK + -Anwendungen vnckönnen Sie weiterhin dunkle Fensterdekorationen erzwingen, indem Sie die _GTK_THEME_VARIANTX-Eigenschaft des Typs UTF8_STRINGauf festlegen dark. Geben Sie dazu xpropden folgenden Befehl ein und klicken Sie anschließend auf das Fenster:

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

xpropSie können Fenster auch anhand der WM_NAMEEigenschaft (der Beschriftung der Titelleiste) oder anhand der Fenster-ID auswählen :

$ 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

Verwenden Sie zum Abrufen von Fenster-IDs und -Namen xlsclients -l.

Florian Müllner
quelle
Aus irgendeinem Grund gnome-terminalist es zu gnome-terminal
aufwendig
6

Hier ist ein Bash-Skript, mit dem ich eine Anwendung mit einem anderen Thema gestartet habe. Habe es seit Jahren nicht mehr benutzt, daher weiß ich nicht, ob es mit der aktuellen GTK funktioniert.

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

Hier ein paar Infos, die ich aus dem Ubuntu Fourms-Archiv bekommen habe. Ich bin nicht sicher, ob es ein Problem sein wird. ( hier ) Es gibt auch einen Blog-Beitrag, der diese Methode etwas ausführlicher beschreibt. ( hier ) und ( hier ). Es gibt auch eine ähnliche Frage auf dieser Seite, die bereits beantwortet wurde. ( hier )

Unter gnome beziehen Apps ihr Thema vom gnome-settings-daemon. Auf diese Weise werden sofort alle Themenänderungen auf alle aktiven Anwendungen angewendet, sodass Änderungen des Themas pro Anwendung nicht mehr möglich sind.

giodamelio
quelle
5
Tippfehler oder Fehler? ('gnome-settings-demon ") ... Das Wort ist daemon (nicht demon). Es hat eine ganz andere Wurzelbedeutung: …(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 .. (ausgesprochen day-mon )
Peter.O
Tippfehler, das passiert, wenn Sie nicht alles überprüfen: |
Giodamelio
2
@ Peter.O: Unterschiedliche Bedeutung im heutigen Englisch, aber tatsächlich gleicher Ursprung. etymonline.com/index.php?term=demon
Joce
1
versucht mit GTK2_RC_FILES=/usr/share/themes/Adwaita/gtk-2.0/gtkrc /opt/ide/eclipseund funktioniert nicht
Robbi Nespu
1

Speziell für gnome-terminalkönnen Sie Folgendes verwenden, um die spezifische Anwendung dunkel zu machen:

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