GTK – включить / установить темную тему для каждого приложения

Есть ли способ установить gtk-application-prefer-dark-theme для приложения?

Это обычно устанавливается в коде приложением. Такие приложения, как Eye of Gnome и Totem, включают его. Я хочу, как пользователь включить его, на основе каждого приложения.

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

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

С 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. 

Итак, чтобы загрузить темный вариант, который вы запускали:

 GTK_THEME=Adwaita:dark gedit 

Аналогично, для достижения противоположного (когда тема по умолчанию темна) вы загружаете вариант освещения :

 GTK_THEME=Adwaita:light gedit 

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

 Exec=env GTK_THEME=Adwaita:dark eog %U 

1: Стоит отметить, что – согласно решению разработчиков – новый gnome-terminal имеет свою конфигурацию через меню> предпочтения и игнорирует тему. Кроме того, поскольку это довольно новый материал, некоторые приложения gtk + 3 могут пока (но не соблюдать) переменную env GTK_THEME (одним из них является GTK_THEME ).

Для приложений GTK + -3 вы можете применить темный вариант темы, используя настройки gtkSettings. Settings:

 $ 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 свойство _GTK_THEME_VARIANT X типа UTF8_STRING . Чтобы сделать это с помощью 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 .

Вот сценарий 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. Не уверен, что это будет проблемой. ( здесь ) Существует также сообщение в блоге, подробно описывающее этот метод. ( здесь ) и ( здесь ). На этом сайте также есть аналогичный вопрос, на который уже был дан ответ. ( здесь )

Под gnome приложения получают свою тему из gnome-settings-daemon. Это мгновенно применяет любые изменения темы для всех активных приложений, что делает невозможным изменение темы для каждого приложения.