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

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

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

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

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

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

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

Или темная:

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

И что мы видим? Темная тема не сохранилась. 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

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

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

Exec=geany %F

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

добавим в нее запись  env GTK_THEME=Adwaita:dark и приведем к виду :

Exec=env GTK_THEME=Adwaita:dark geany %F

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

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

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

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

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

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

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

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

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

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

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

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

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

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

Exec=geany %F

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

Exec=env GTK_THEME=Adwaita:dark geany %F

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

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

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

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

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

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

Таким образом можно изменить тему одного или нескольких приложений на свой вкус. Стоит отметить, что согласно решению разработчиков Gnome-terminal имеет свое меню настроек и игнорирует темы. Кроме того, некоторые приложения GTK могут не соблюдать переменную: env GTK_THEME. Но это всегда можно проверить программой GtkInspector.

Дорогие читатели, если вы увидели ошибку или опечатку в статье «Изменение темы GTK для приложения», помогите нам ее исправить! Выделите ошибку и нажмите одновременно клавиши «Ctrl» и «Enter». Мы получим ваше сообщение и внесём исправления в ближайшее время.

Источник: winzen.ru

Рейтинг
( Пока оценок нет )
Понравилась статья? Поделиться с друзьями: