GTK - Увімкніть / встановіть темну тему на основі програми


54

Чи є спосіб встановити gtk-application-предпочитаю-dark-тему для програми?

Зазвичай програма встановлюється в коді. Такі програми, як Eye of Gnome і Totem, включають його. Я хочу, як користувач вмикає його, на основі додатків для кожної програми.

Для gnome-терміналу я зазвичай використовую білий текст на чорній кольоровій гамі тла, а наявність темної межі вікна покращить загальний вигляд.

Я також хочу включити його для vlc.

Відповіді:


61

За допомогою програми gtk+ ≥ 3.12ви можете завантажувати конкретну тему та її варіант (темний, світлий) за допомогою програми 1 за допомогою змінної оточення GTK_THEME=theme:variant. Відповідно до gtk+посібника :

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.

Таким чином, щоб завантажити 2 в темний варіант ви б працювати:

GTK_THEME=Adwaita:dark gedit

Так само, щоб досягти протилежного (коли тема за замовчуванням темна), ви завантажуєте світлий варіант:

GTK_THEME=Adwaita:light gedit

Зауважте, що якщо ви хочете використовувати його за допомогою спеціального запуску ( .desktopфайлу), вам доведеться передати envкоманду в Execрядку:

Exec=env GTK_THEME=Adwaita:dark eog %U

1: Варто зазначити, що - відповідно до рішення розробників - новіший gnome-terminalмає власну конфігурацію через меню> налаштування, і він ігнорує тему. Крім того, оскільки це досить нові речі, деякі програми gtk + 3 можуть (ще) не шанувати GTK_THEMEзмінну середовища.
2: Схоже, це не працює, якщо у вас вже є запущений екземпляр цієї програми, наприклад, якщо nautilusвін вже працює в темному режимі, тоді запуск GTK_THEME=Adwaita:light nautilusвідкриє нове nautilusвікно, але все ще знаходиться в темному режимі. Я не знаю, чи це функція чи помилка ...


Отже, ви можете назвати конкретну тему, але не можете сказати "темний варіант будь-якої теми, встановленої"?
XTL

2
@XTL - Саме так. Хоча, GTK_THEME=:light eogздається, теж працює ...
don_crissti

5
Схоже, це не працює для більшості програм.
Thayne

1
Мені ще не вдалося знайти додаток, який би це працював, коли у мене є темна тема.
Thayne

2
Я спробував вище (для. desktopФайлів), але це не працює, навіть із env. При запуску з терміналу він працює найкраще. Я використовую gtk 3.14.5-1 + deb8u1 і спробував з gedit 3.14.0-3, працює на Debian "jessie / stable" 8.
aBarocio80

21

Для додатків GTK + -3 ви можете застосувати темний варіант теми, використовуючи налаштування 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

Для таких програм, які не є GTK + vnc, ви все одно можете застосувати темні прикраси вікон, встановивши _GTK_THEME_VARIANTвластивість X типу UTF8_STRINGна dark. Для цього xpropвведіть таку команду та після цього натисніть вікно:

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

xpropВи також можете вибрати вікна за WM_NAMEвластивостями (мітка рядка заголовка) або за ідентифікатором вікна:

$ 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

Щоб отримати ідентифікатори вікна та імена, використовуйте xlsclients -l.


Чомусь gnome-terminalвирішили, що докласти код для темної теми занадто багато зусиль, тому, якщо ваш дистрибутив не зафіксував це назад у цій роботі, за якоюgnome-terminal
MattSturgeon

6

Ось сценарій bash, який я використовував для запуску програми з іншою темою. Не використовував його протягом років, тому я не знаю, чи буде він працювати з поточним 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 "$@"

Ось трохи інформації, яку я дістав із архівів ubuntu fourms. Не впевнений, чи це буде проблема. ( тут ) Є також допис у блозі, де детально описаний цей метод. ( тут ) і ( тут ). На цьому сайті також є подібне запитання, на яке вже відповіли. ( тут )

У програмі gnome програми отримують свою тему від gnome-settings-daemon. Це миттєво застосовує будь-яку зміну теми до всіх активних додатків, що робить неможливим зміна теми за програмою.


5
Друкарська помилка чи помилка? ('gnome-settings-demon') ... Слово daemon (не демон) .. Він має зовсім інше значення кореня: …(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 .. (вимовляється день-пн. )
Peter.O

Друкарська помилка, ось що відбувається, коли ви не проконтролюєте все: |
giodamelio

2
@ Peter.O: Різне значення в сучасній англійській мові, але справді таке саме походження. etymonline.com/index.php?term=demon
Joce

1
спробував GTK2_RC_FILES=/usr/share/themes/Adwaita/gtk-2.0/gtkrc /opt/ide/eclipseі не працює
Роббі Неспу

1

Спеціально для gnome-terminalвикористання темного додатка можна використовувати наступне:

gsettings set org.gnome.Terminal.Legacy.Settings theme-variant 'dark'
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.