GTK - Abilita / imposta il tema scuro in base all'applicazione


54

C'è un modo per impostare gtk-application-prefer-dark-theme per un'applicazione?

Questo è normalmente impostato nel codice dall'applicazione. App come Eye of Gnome e Totem lo accendono. Voglio, come utente accenderlo, su una base per applicazione.

Per gnome-terminal, di solito uso un testo bianco su una combinazione di colori di sfondo nero e avere il bordo scuro della finestra migliorerebbe l'aspetto generale.

Voglio anche accenderlo per vlc.

Risposte:


61

Con gtk+ ≥ 3.12te puoi caricare un tema specifico e la sua variante (scuro, chiaro) su una base per applicazione 1 tramite la variabile d'ambiente GTK_THEME=theme:variant. Secondo il gtk+manuale di riferimento :

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.

Quindi, per caricare 2 la variante scura dovresti eseguire:

GTK_THEME=Adwaita:dark gedit

Allo stesso modo, per ottenere il contrario (quando il tema predefinito è scuro), carichi la variante chiara :

GTK_THEME=Adwaita:light gedit

Nota che se vuoi usarlo tramite un launcher personalizzato ( .desktopfile) dovrai anteporre enval comando nella Execriga:

Exec=env GTK_THEME=Adwaita:dark eog %U

1: Vale la pena notare che - secondo la decisione degli sviluppatori - il più recente gnome-terminalha una propria configurazione tramite menu> preferenze e ignora il tema. Inoltre, poiché si tratta di cose piuttosto nuove, alcune applicazioni gtk + 3 potrebbero non (ancora) onorare la GTK_THEMEvariabile d'ambiente.
2: Questo non sembra funzionare se si dispone già di un'istanza in esecuzione di tale applicazione, ad esempio se nautilusè già in esecuzione in modalità oscura, quindi in esecuzione GTK_THEME=Adwaita:light nautilussi aprirà una nuova nautilusfinestra ma ancora in modalità oscura. Non so se questa è una funzionalità o un bug ...


Quindi puoi nominare un tema specifico, ma non puoi dire "variante scura di qualunque tema sia impostato"?
XTL

2
@XTL - Esatto. Anche se GTK_THEME=:light eogsembra funzionare troppo ...
don_crissti

5
Questo non sembra funzionare per la maggior parte delle applicazioni.
Thayne,

1
Non sono ancora riuscito a trovare un'applicazione per cui funzioni, quando ho un tema scuro.
Thayne,

2
Ho provato quanto sopra (per. desktopFile), ma non funziona, nemmeno con env. Quando lanciato dal terminale funziona perfettamente. Uso gtk 3.14.5-1 + deb8u1 e ho provato con gedit 3.14.0-3, in esecuzione su Debian "jessie / stable" 8.
aBarocio80

21

Per le applicazioni GTK + -3, puoi applicare la variante del tema scuro usando le impostazioni di 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

Per applicazioni non GTK + come vnc, puoi comunque applicare decorazioni per finestre scure impostando la _GTK_THEME_VARIANTproprietà X di tipo UTF8_STRINGsu dark. Per fare ciò xprop, digita il seguente comando e fai clic sulla finestra in seguito:

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

xproppuoi anche selezionare windows dalla WM_NAMEproprietà (l'etichetta della barra del titolo) o dall'id della finestra:

$ 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

Per ottenere ID e nomi delle finestre, utilizzare xlsclients -l.


Per qualche ragione gnome-terminalha deciso che è troppo difficile mantenere il codice per il tema Dark, quindi a meno che la tua distribuzione non l'abbia gnome-terminal
corretto

7

Ecco uno script bash che ho usato per lanciare un'applicazione con un tema diverso. Non lo uso da anni, quindi non so se funzionerà con l'attuale GTK.

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

Ecco un po 'di informazioni che ho rimosso dagli archivi di Ubuntu Fourms. Non sono sicuro se sarà un problema. ( qui ) C'è anche un post sul blog che descrive un po 'di più questo metodo. ( qui ) e ( qui ). C'è anche una domanda simile su questo sito a cui è già stata data una risposta. ( qui )

Sotto gnome, le app prendono il tema dal gnome-settings-daemon. Ciò applica istantaneamente qualsiasi modifica del tema a tutte le applicazioni attive, rendendo impossibile la modifica del tema per ogni applicazione.


5
Errore di battitura o errore? ('gnome-settings-demon ") ... La parola è demone (non demone) .. Ha un significato radice molto diverso: …(in ancient Greek belief) Daemons are good or benevolent supernatural beings between mortals and gods... daemon = buono / demone = cattivo ... en.wikipedia.org/wiki / Daemon_% 28classical_mythology% 29 .. (pronunciato day-mon )
Peter.O

Errore di battitura, è quello che succede quando non controlli l'ortografia: |
Giodamelio,

2
@ Peter.O: significato diverso nell'inglese odierno, ma in effetti la stessa origine. etymonline.com/index.php?term=demon
Joce

1
provato con GTK2_RC_FILES=/usr/share/themes/Adwaita/gtk-2.0/gtkrc /opt/ide/eclipsee non ha funzionato
Robbi Nespu

Questo funziona bene per gapcmon
Jonathan Neufeld

1

In particolare gnome-terminal, è possibile utilizzare quanto segue per scurire l'applicazione specifica:

gsettings set org.gnome.Terminal.Legacy.Settings theme-variant 'dark'
Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.