GTK - Włącz / ustaw ciemny motyw dla poszczególnych aplikacji


54

Czy istnieje sposób ustawienia motywu gtk-application-prefer-dark-theme dla aplikacji?

Zwykle jest to ustawione w kodzie przez aplikację. Aplikacje takie jak Eye of Gnome i Totem włączają go. Chcę, jako użytkownik, włączyć dla poszczególnych aplikacji.

W przypadku gnome-terminal zwykle używam białego tekstu na czarnej kolorystyce tła, a ciemne obramowanie okna poprawiłoby ogólny wygląd.

Chcę też włączyć to dla VLC.

Odpowiedzi:


61

Za pomocą zmiennej środowiskowej gtk+ ≥ 3.12można załadować konkretny motyw i jego wariant (ciemny, jasny) dla każdej aplikacji 1GTK_THEME=theme:variant . Zgodnie z gtk+podręcznikiem :

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.

Tak więc, aby załadować 2 z ciemną odmianę chcesz uruchomić:

GTK_THEME=Adwaita:dark gedit

Podobnie, aby osiągnąć odwrotność (gdy domyślny motyw jest ciemny), ładujesz wariant światła :

GTK_THEME=Adwaita:light gedit

Zauważ, że jeśli chcesz użyć go za pomocą niestandardowego programu uruchamiającego ( .desktoppliku), musisz wcześniej wstawić envpolecenie do Execwiersza:

Exec=env GTK_THEME=Adwaita:dark eog %U

1: Warto zauważyć, że - zgodnie z decyzją deweloperów - nowsze gnome-terminalmają własną konfigurację poprzez menu> preferencje i ignorują motyw. Ponieważ jest to raczej nowość, niektóre aplikacje gtk + 3 mogą (jeszcze) nie honorować GTK_THEMEzmiennej środowiskowej.
2: Wydaje się, że to nie działa, jeśli masz już działającą instancję tej aplikacji, np. Jeśli nautilusjuż działa w trybie ciemnym, wówczas uruchomione GTK_THEME=Adwaita:light nautilusotworzy się nowe nautilusokno, ale nadal w trybie ciemnym. Nie wiem, czy to funkcja, czy błąd ...


Możesz więc wymienić konkretny motyw, ale nie możesz powiedzieć „ciemny wariant dowolnego ustawionego motywu”?
XTL,

2
@XTL - Dokładnie. Chociaż GTK_THEME=:light eogwydaje się, że też działa ...
don_crissti

5
To nie wydaje się działać w przypadku większości aplikacji.
Thayne

1
Nie mam jeszcze aplikacji, w której działałoby to, gdy mam ciemny motyw.
Thayne

2
Próbowałem wyżej (dla desktopplików . ), Ale to nie działa, nawet z env. Po uruchomieniu z terminala działa idealnie. Używam gtk 3.14.5-1 + deb8u1 i próbowałem z gedit 3.14.0-3, działającym na Debianie „jessie / stable” 8.
aBarocio80 13.07.16

21

W przypadku aplikacji GTK + -3 możesz wymusić wariant ciemnego motywu za pomocą ustawień 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

W przypadku aplikacji innych niż GTK +, takich jak vncnadal można wymusić ciemne dekoracje okien, ustawiając _GTK_THEME_VARIANTwłaściwość X typu UTF8_STRINGna dark. Aby to zrobić xprop, wpisz następujące polecenie, a następnie kliknij okno:

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

xpropmoże również wybrać okna według WM_NAMEwłaściwości (etykieta paska tytułu) lub według identyfikatora okna:

$ 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

Aby uzyskać identyfikatory i nazwy okien, użyj xlsclients -l.


Z jakiegoś powodu gnome-terminalzdecydowałem, że utrzymanie kodu dla motywu Dark jest zbyt wielkim wysiłkiem, więc chyba, że ​​twoja dystrybucja gnome-terminal
załatała

6

Oto skrypt bash, którego użyłem do uruchomienia aplikacji z innym motywem. Jednak nie używałem go od lat, więc nie wiem, czy będzie działać z obecnym 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 "$@"

Oto trochę informacji, które otrzymałem z archiwum Ubuntu Fourms. Nie jestem pewien, czy będzie to problem. ( tutaj ) Jest też post na blogu opisujący nieco tę metodę. ( tutaj ) i ( tutaj ). Na stronie znajduje się również podobne pytanie, na które już udzielono odpowiedzi. ( tutaj )

Pod gnome aplikacje pobierają motyw z demona ustawień gnome. To natychmiastowo stosuje każdą zmianę motywu do wszystkich aktywnych aplikacji, co uniemożliwia zmianę motywu na aplikację.


5
Literówka czy błąd? ('gnome-settings-demon ") ... Słowo to demon (nie demon) .. Ma ono zupełnie inne znaczenie root: …(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 .. (wymówić day-mon )
Peter.O

Literówka, tak się dzieje, gdy nie piszesz wszystkiego sprawdź: |
giodamelio

2
@ Peter.O: Różne znaczenie we współczesnym języku angielskim, ale rzeczywiście to samo pochodzenie. etymonline.com/index.php?term=demon
Joce

1
próbowałem GTK2_RC_FILES=/usr/share/themes/Adwaita/gtk-2.0/gtkrc /opt/ide/eclipsei nie działa
Robbi Nespu

1

W szczególności gnome-terminalmożesz użyć następujących opcji, aby przyciemnić określoną aplikację:

gsettings set org.gnome.Terminal.Legacy.Settings theme-variant 'dark'
Korzystając z naszej strony potwierdzasz, że przeczytałeś(-aś) i rozumiesz nasze zasady używania plików cookie i zasady ochrony prywatności.
Licensed under cc by-sa 3.0 with attribution required.