Изменение темы GTK для приложения

Изменение темы GTK для приложения


Недавно мне понадобился текстовый редактор Geany. Я его установил, настроил и решил написать небольшой гайд, шпаргалку по изменению темы отдельного приложения. Я использую дистрибутив Fedora 31, но эта инструкция подойдет практически для любого дистрибутива с рабочим окружением GNOME. Как мы знаем гном имеет "спартанский" выбор настроек. Хорошо это или плохо я рассуждать не буду, а разберусь как это исправить.


Разработчики GNOME и многих дистрибутивов, каждый по своему настраивают тему приложений. Весной разработчики GNOME даже написали открытое письмо с просьбой к дистростроителям, не изменять дефолтные настройки приложений GNOME. Также в интернете можно скачать и установить любые темы и значки на свой вкус.


Как изменить тему GTK для приложения


В рабочем окружении GNOME я использую светлую тему Adwaita. У вас, в зависимости от дистрибутива и личных предпочтений может быть любая другая тема. Как видим из заголовка статьи, я хочу поменять тему одного (или нескольких) приложений GTK.


Итак начнем. Как мы знаем приложение Gnome-tweak изменяет тему всех приложений в системе.

Например светлая:




Или темная:




Также есть исключения дистростроителей или разработчиков GNOME. Например у меня в светлой Adwaita приложения Eye of GNOME (eog) и Totem отображаются в темной теме:




Также на скрине я вставил видеоплеер Celluloid, он не входит в стандартный набор гномовских приложений, но тоже поставляется с темной темой. Хотя в настройках приложения ее можно поменять на светлую.


Примерно тоже хочу сделать и я с нужным мне приложением. Для примера я беру текстовый редактор Geany. По дефолту у меня он выглядит так:




Я же хочу, чтобы он выглядел примерно так, как на официальном сайте Geany:




Идем на сайт Geany: https://www.geany.org/ . Далее по ссылке : https://github.com/geany/geany-themes скачаем ZIP-файл с темами, распакуем и установим (скриптом install.sh или копированием тем в каталог ~/.config/geany/colorschemes/).






Включим в настройках Geany любую темную тему на свой вкус Вид => Цветовые схемы.






Здесь мы видим темный терминал внутри светлого приложения. Немного не так, как хотелось бы.


Идем дальше. Попробуем включить GtkInspector. Это приложение-инструмент для проверки, изменения и понимания приложений GTK+ на лету. В Debian, Ubuntu предварительно убедитесь, что у вас установлен пакет libgtk-3-dev. Наберем в терминале:



gsettings set org.gtk.Settings.Debug enable-inspector-keybinding true



Мы включили GtkInspector. Чтобы запустить GTKInspector, сфокусируйте свое приложение GTK и нажмите Control-Shift-D. Или переместите курсор мыши на нужный виджет и нажмите Control-Shift-I, чтобы специально проверить виджет под курсором мыши.


Запустим GtkInspector. Он включается только в окне с запущенным приложением.




Перейдем на вкладку Внешний вид и включим Темный вариант (или тему Adwaita-dark):






Как видим мы получили желаемый результат, в приложении Geany тема поменялась на темную. Закрываем GtkInspector. Он пока мне не нужен (далее он понадобится для проверки изменений). Вы же можете самостоятельно посмотреть здесь и поиграть с ним. Это довольно таки интересный инструмент и достоин отдельного изучения.


Попробуем перезапустить приложение Geany:




И что мы видим? Темная тема не сохранилась. Geany снова открылся в светлой теме. Нужно искать другое решение, но ничего "Нормальные герои всегда идут в обход" - Айболит - 66 к/ф.


Теперь мы попробуем жестко привязать Geany к темной теме. Согласно руководству GTK+, вы можете загрузить определенную тему и ее вариант (темный, светлый) для каждого приложения через переменную среды: GTK_THEME=theme:variant . И добавить в файл по адресу:



/usr/share/applications/"name application".desktop

команду env (позволяет модифицировать список переменных окружения перед исполнением пользовательской команды) в строке Exec. Где "name application" - имя приложения. В моем случае строка файла:



/usr/share/applications/geany.desktop

должна выглядеть так:



Exec=env GTK_THEME=Adwaita:dark geany %F

Если нам нужна светлая тема строка должна выглядеть так:



Exec=env GTK_THEME=Adwaita:ligh geany %F

Тему можно жестко привязать двумя способами. Первый вариант привязать в корне системы по адресу:



 /usr/share/applications/geany.desktop

Для всех пользователей, или второй вариант привязать в домашний каталог по адресу:



~/.local/share/applications

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


Изменение темы для текущего пользователя


Откроем и отредактируем наш файл запуска:



sudo nano /usr/share/applications/geany.desktop



Найдем строку:



Exec=geany %F



добавим в нее запись 

env GTK_THEME=Adwaita:dark
и приведем к виду :


Exec=env GTK_THEME=Adwaita:dark geany %F



Сохраним и запустим Geany:




Как видим все работает.


Снова запустим GtkInspector, перейдем на вкладку Внешний вид, попробуем переключить тему. Смена темы заблокирована (затемнена и неактивна), при наведении мыши на переключатель появляется окно с надписью "Тема жестко задана с помощью GTK_THEME" (к сожалению технически я не могу показать всплывающее окно на скриншоте). Как видим мы жестко привязали темную тему к приложению Geany, и сменить тему не получится.




Изменение темы для всех пользователей


Скопируем файл geany.desktop в домашний каталог .local/share/applications через терминал:



cp -r /usr/share/applications/geany.desktop ~/.local/share/applications



Или можно воспользоваться файловым менджером Nautilus. Далее откроем скопированный файл по адресу:



~/.local/share/applications/geany.desktop
.



Как и в первом случае найдем строку:



Exec=geany %F

Отредактируем, и приведем к виду:



Exec=env GTK_THEME=Adwaita:dark geany %F



И также проверим:









Как видим и здесь все работает. Вернуть в исходное состояние тему можно редактированием файла в корне или редактированием (или удалением) файла в домашнем каталоге.

Добавить комментарий

Автору будет очень приятно получить обратную связь.

Комментариев 0