Главная >> Инструкции >> Изменение темы 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

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


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

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

Реклама
Посмотреть детали

Proton Drive — это облачное хранилище со сквозным шифрованием от компании, которая создала Proton Mail, которое может стать хорошей заменой Google Диску. Все файлы шифруются на вашем устройстве, поэтому они недоступны даже для самой компании Proton. Вы получаете синхронизацию между устройствами, общий доступ к файлам, автоматическое резервное копирование фото и удобные приложения для всех платформ, но с гарантией, что ваши данные останутся исключительно вашими и никто не будет тренировать на них AI. В бесплатной версии доступно 5 ГБ места на диске. Посмотреть детали

Creative Commons License
Статья распространяется под лицензией Creative Commons ShareAlike 4.0 при копировании материала ссылка на источник обязательна .

3 комментария к “Изменение темы GTK для приложения”

  1. У меня с редактированием файлов не прокатило (Linux Mint 19.3). А вот изменил упомянутую строчку в файле ~/Рабочий стол/geany.desktop и всё получилось!

    Ответить
  2. В статье явная опечатка. Нужно поменять местами названия параграфов "ИЗМЕНЕНИЕ ТЕМЫ ДЛЯ ТЕКУЩЕГО ПОЛЬЗОВАТЕЛЯ" и "ИЗМЕНЕНИЕ ТЕМЫ ДЛЯ ВСЕХ ПОЛЬЗОВАТЕЛЕЙ". Ну и логически, поменять местами параграфы, так как сначала нужно рассмотреть изменение для всех пользователей, а потом для локального. И ещё нужно упомянуть, что после внесённых изменений нужно как-то перезагрузить переменные окружения, т.к. при вызове из консоли geany запускается с темой по умолчанию.

    Ответить

Оставьте комментарий