Недавно мне понадобился текстовый редактор 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 . И добавить в файл по адресу:
команду env (позволяет модифицировать список переменных окружения перед исполнением пользовательской команды) в строке Exec. Где "name application" - имя приложения. В моем случае строка файла:
должна выглядеть так:
Если нам нужна светлая тема строка должна выглядеть так:
Тему можно жестко привязать двумя способами. Первый вариант привязать в корне системы по адресу:
Для всех пользователей, или второй вариант привязать в домашний каталог по адресу:
Для текущего пользователя. Я предпочитаю и рекомендую хранить различные пользовательские настройки в домашнем каталоге, но рассмотрю оба варианта.
Изменение темы для текущего пользователя
Откроем и отредактируем наш файл запуска:
sudo nano /usr/share/applications/geany.desktop
Найдем строку:
добавим в нее запись
и приведем к виду :
Сохраним и запустим Geany:
Как видим все работает.
Снова запустим GtkInspector, перейдем на вкладку Внешний вид, попробуем переключить тему. Смена темы заблокирована (затемнена и неактивна), при наведении мыши на переключатель появляется окно с надписью "Тема жестко задана с помощью GTK_THEME" (к сожалению технически я не могу показать всплывающее окно на скриншоте). Как видим мы жестко привязали темную тему к приложению Geany, и сменить тему не получится.
Изменение темы для всех пользователей
Скопируем файл geany.desktop в домашний каталог .local/share/applications через терминал:
cp -r /usr/share/applications/geany.desktop ~/.local/share/applications
Или можно воспользоваться файловым менджером Nautilus. Далее откроем скопированный файл по адресу:
.
Как и в первом случае найдем строку:
Отредактируем, и приведем к виду:
И также проверим:
Как видим и здесь все работает. Вернуть в исходное состояние тему можно редактированием файла в корне или редактированием (или удалением) файла в домашнем каталоге.
Таким образом можно изменить тему одного или нескольких приложений на свой вкус. Стоит отметить, что согласно решению разработчиков Gnome-terminal имеет свое меню настроек и игнорирует темы. Кроме того, некоторые приложения GTK могут не соблюдать переменную: env GTK_THEME. Но это всегда можно проверить программой GtkInspector.
интересная статья получилась, спасибо
У меня с редактированием файлов не прокатило (Linux Mint 19.3). А вот изменил упомянутую строчку в файле ~/Рабочий стол/geany.desktop и всё получилось!
В статье явная опечатка. Нужно поменять местами названия параграфов "ИЗМЕНЕНИЕ ТЕМЫ ДЛЯ ТЕКУЩЕГО ПОЛЬЗОВАТЕЛЯ" и "ИЗМЕНЕНИЕ ТЕМЫ ДЛЯ ВСЕХ ПОЛЬЗОВАТЕЛЕЙ". Ну и логически, поменять местами параграфы, так как сначала нужно рассмотреть изменение для всех пользователей, а потом для локального. И ещё нужно упомянуть, что после внесённых изменений нужно как-то перезагрузить переменные окружения, т.к. при вызове из консоли geany запускается с темой по умолчанию.