1. Глава 27: Темы в GTK – Кастомизация Внешнего Вида

Темы в GTK (GIMP Toolkit) — это набор правил стилизации, которые определяют внешний вид виджетов (кнопок, окон, полей ввода, меню и т.д.) вашего графического приложения. Они позволяют пользователям полностью изменять «ощущение» и «взгляд» операционной системы и приложений, делая их более приятными для глаз или соответствующими индивидуальным предпочтениям.

Темы GTK основаны на CSS (Cascading Style Sheets), том же языке, который используется для стилизации веб-страниц. Это делает их мощными и гибкими, позволяя разработчикам и пользователям тонко настраивать каждый аспект интерфейса.

1.1. Что такое Темы GTK?

По своей сути, тема GTK — это набор файлов (в основном .css, а также могут быть изображения, шрифты и другие ресурсы), которые GTK-приложения используют для отрисовки своих элементов. Когда приложение запускается, GTK загружает активную тему и применяет её правила к виджетам.

Это позволяет:

  • Персонализации: Пользователи могут выбирать темы, которые соответствуют их вкусу, делая рабочий стол уникальным.

  • Брендингу: Разработчики дистрибутивов Linux могут создавать свои уникальные темы для узнаваемости.

  • Доступности: Темы могут улучшать контрастность, изменять размеры шрифтов и элементов для людей с ограниченными возможностями.

1.2. Какие бывают Темы GTK?

Темы GTK развивались вместе с самой библиотекой. Основные «поколения» тем соответствуют версиям GTK:

  1. GTK2 Темы: * Использовали систему рендеринга Theming Engine. * Сейчас практически не актуальны, так как большинство современных приложений используют GTK3 или GTK4. * Пример: Clearlooks, Raleigh.

  2. GTK3 Темы: * Перешли на CSS-подобную систему стилизации. Это значительно упростило создание и модификацию тем. * Подавляющее большинство текущих GTK-приложений используют GTK3. * Пример: Adwaita (стандартная), Arc, Materia, Yaru.

  3. GTK4 Темы: * Продолжают использовать CSS, но с некоторыми изменениями и улучшениями по сравнению с GTK3. * Имеют более современные виджеты и анимации. * Пока относительно мало приложений полностью переведены на GTK4, но их число растет. * Пример: Adwaita (для GTK4), Libadwaita.

Важно: Тема для GTK3 обычно не будет работать корректно с GTK4-приложениями (и наоборот), так как структура виджетов и CSS-свойства могут отличаться. При скачивании темы всегда обращайте внимание, для какой версии GTK она предназначена.

1.3. Новые и Популярные Темы

Некоторые из наиболее популярных и активно развивающихся тем для GTK включают:

  • Adwaita: Стандартная тема GNOME. Она является референсной и поддерживается разработчиками GTK. Существуют версии для GTK3 и GTK4. Часто является основой для других тем.

  • Arc: Одна из самых популярных тем, известная своим современным плоским дизайном с полупрозрачными элементами. Доступна в различных вариантах (Arc, Arc-Dark, Arc-Darker).

  • Materia: Материальный дизайн в духе Google, с чистыми линиями и приятными тенями. Очень элегантная и современная.

  • Yaru: Официальная тема Ubuntu, отличающаяся уникальной цветовой палитрой и стилем.

  • Numix: Широкий набор тем и пакетов иконок, которые очень популярны и хорошо поддерживаются.

  • WhiteSur: Тема, имитирующая стиль macOS, с закругленными углами и эффектами размытия.

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

1.4. Где Скачать Темы GTK?

Основные источники для скачивания тем:

  1. Gnome-Look.org / XFCE-Look.org / KDE-Look.org (OpenDesktop.org): * Это часть более крупного портала OpenDesktop.org. * Огромная коллекция тем, иконок, курсоров и других элементов кастомизации. * Поиск по версиям GTK.

  2. Pling.com: * Ещё один популярный портал для Linux-кастомизации, часто пересекается с OpenDesktop.org.

  3. GitHub / GitLab: * Многие разработчики тем размещают свои проекты на этих платформах. * Преимущество: вы можете отслеживать разработку, сообщать об ошибках и иногда даже собирать тему из исходников. * Часто это самые актуальные версии.

  4. Репозитории дистрибутивов: * Некоторые дистрибутивы Linux включают популярные темы прямо в свои стандартные репозитории. * Установка через менеджер пакетов (например, sudo apt install arc-theme).

1.5. Как Установить Темы GTK?

Установка тем GTK обычно включает два шага: размещение файлов темы и применение темы.

### Ручная установка

  1. Скачайте тему: Обычно темы распространяются в виде .tar.xz или .zip архивов.

  2. Распакуйте архив: Создайте директорию для темы. * Например, для темы «MyTheme», вы получите папку MyTheme.

  3. Разместите папку темы: * Для текущего пользователя: Создайте (если её нет) директорию ~/.themes/ в вашем домашнем каталоге и поместите распакованную папку MyTheme туда.

    • mkdir -p ~/.themes/
      mv /path/to/downloaded/MyTheme ~/.themes/
      
    • Для всех пользователей системы: Поместите папку MyTheme в /usr/share/themes/. Для этого потребуются права суперпользователя.
      • sudo mv /path/to/downloaded/MyTheme /usr/share/themes/
        
    • Убедитесь, что внутри папки MyTheme есть подпапки gtk-3.0, gtk-4.0 и/или gtk-2.0 с файлами стилей.

### Установка через менеджер пакетов

  • Некоторые дистрибутивы (например, Ubuntu, Debian) позволяют устанавливать популярные темы напрямую из репозиториев.
    • sudo apt install arc-theme # Пример для установки темы Arc
      

### Установка через GUI-инструменты

Многие окружения рабочего стола предоставляют свои собственные инструменты для управления темами:

  • GNOME Tweak Tool (GNOME Tweaks): Самый популярный инструмент для GNOME. Позволяет легко менять GTK-темы, иконки, шрифты и многое другое.
    • sudo apt install gnome-tweaks
      
  • LXAppearance (для LXDE, XFCE, MATE): Легкий и удобный инструмент для более легковесных окружений.
    • sudo apt install lxappearance
      
  • KDE System Settings: В KDE Plasma темы GTK3/GTK4 настраиваются через системные параметры (Appearance -> Application Style -> Configure GTK Application Style).

1.6. Как Использовать (Применить) Темы GTK?

После установки темы вы можете её активировать.

### Через GUI-инструменты

Это самый простой и рекомендуемый способ:

  1. GNOME Tweak Tool: Откройте GNOME Tweaks, перейдите в раздел «Appearance» (Внешний вид), и там вы сможете выбрать вашу тему GTK (обычно под «Applications» или «Legacy Applications» для GTK3, и «Shell» для GNOME Shell).

  2. LXAppearance: Откройте LXAppearance, перейдите на вкладку «Widget» (Виджеты) и выберите нужную тему из списка.

  3. KDE System Settings: В системных настройках KDE (System Settings) найдите «Appearance» -> «Application Style». Здесь вы можете выбрать темы для приложений GTK2 и GTK3 (и GTK4, если есть поддержка).

### Через команду gsettings (для GNOME/GTK3 и Wayland-композиторов)

Для окружений, использующих gsettings (как GNOME, а также многие Wayland-композиторы, включая LabWC, если установлен dconf-cli и схемы GNOME), вы можете установить тему через терминал:

gsettings set org.gnome.desktop.interface gtk-theme "MyThemeName"
  • Замените «MyThemeName» на точное название папки вашей темы (например, «Arc-Dark», «Materia»).

  • Для иконок: gsettings set org.gnome.desktop.interface icon-theme «MyIconThemeName»

  • Важно: После изменения темы с помощью gsettings может потребоваться перезапуск вашего GTK-приложения (или даже выход и повторный вход в систему, если вы хотите, чтобы вся среда рабочего стола обновилась).

### Через конфигурационные файлы GTK (для LabWC / Wayland)

Если gsettings не используется или не работает (что менее вероятно для LabWC с установленным dconf-cli), приложения GTK будут искать настройки темы в этих файлах. Это основной метод для минималистичных Wayland-композиторов:

  • Для GTK3: Откройте или создайте файл ~/.config/gtk-3.0/settings.ini:
    nano ~/.config/gtk-3.0/settings.ini
    

    Добавьте или измените секцию [Settings] так, чтобы она выглядела примерно так: .. code-block:: ini

    [Settings] gtk-theme-name=MyThemeName gtk-icon-theme-name=MyIconThemeName # Опционально, если есть тема иконок gtk-font-name=Sans 10 # Опционально, чтобы установить шрифт

  • Для GTK4: (Если LabWC поддерживает приложения GTK4, что менее вероятно для очень минималистичных композиторов)

    Откройте или создайте файл ~/.config/gtk-4.0/settings.ini. Структура аналогична.

  • Сохраните файл.

  • Перезапустите ваше GTK-приложение (или выйдите и войдите в сессию LabWC), чтобы изменения применились.

1.7. Управление установленными темами

### Как узнать, какие темы GTK у вас установлены

Чтобы увидеть список всех доступных тем на вашей системе, вы можете проверить стандартные директории, где они хранятся:

  1. Темы для текущего пользователя: .. code-block:: bash

    ls ~/.themes/

  2. Темы для всех пользователей системы: .. code-block:: bash

    ls /usr/share/themes/

Вывод этих команд покажет вам названия папок, которые соответствуют именам установленных тем (например, Adwaita, Arc-Dark, PiXflat). Именно эти имена вы должны использовать при активации темы.

### Как вернуться к предыдущей или стандартной теме

Вы можете вернуться к любой из установленных тем, используя тот же метод, которым вы её меняли:

  1. Если вы меняли через `gsettings`: * Чтобы вернуться к стандартной теме GTK (обычно Adwaita):

    gsettings set org.gnome.desktop.interface gtk-theme "Adwaita"
    
    • Чтобы вернуться к другой конкретной теме (например, к вашей предыдущей PiXflat):
      gsettings set org.gnome.desktop.interface gtk-theme "PiXflat"
      
  2. Если вы меняли через `~/.config/gtk-3.0/settings.ini`: * Откройте файл для редактирования:

    nano ~/.config/gtk-3.0/settings.ini
    
    • Найдите строку gtk-theme-name=… и измените её на желаемую тему:
      [Settings]
      gtk-theme-name=PiXflat  # Или любое другое имя темы из вашего списка
      
    • Сохраните файл.

    • Перезапустите ваше GTK-приложение (или выйдите и войдите в сессию LabWC), чтобы изменения применились.

1.8. Запуск отдельного GTK-приложения с определённой темой

Очень полезный приём — запустить отдельное GTK-приложение с конкретной темой, не меняя системную тему всей операционной системы или других приложений. Это идеально подходит для тестирования, отладки или просто для того, чтобы одно приложение выглядело иначе.

Для этого используется переменная окружения `GTK_THEME`.

### Запуск из терминала

Чтобы запустить приложение из терминала с определённой темой, просто добавьте env GTK_THEME=MyThemeName перед командой запуска вашего приложения:

env GTK_THEME=Arc-Dark /home/Alex/myprg/25/glade_example
  • `env`: Это утилита, которая позволяет запускать команду с изменёнными (или добавленными) переменными окружения. Это хорошая практика.

  • `GTK_THEME=Arc-Dark`: Устанавливает переменную окружения GTK_THEME для этой конкретной команды. Замените Arc-Dark на точное имя желаемой темы.

  • `/home/Alex/myprg/25/glade_example`: Полный путь к вашему исполняемому файлу.

Если приложение не находит Glade-файл (или другие ресурсы):

Как обсуждалось в Главе 26, ваше приложение может ожидать, что файл Glade находится в текущей рабочей директории. Если возникает ошибка «файл interface.glade не найден», вам нужно сначала перейти в директорию приложения:

sh -c "cd /home/Alex/myprg/25/ && env GTK_THEME=Arc-Dark ./glade_example"
  • `sh -c «…»`: Запускает новую оболочку, позволяя выполнить последовательность команд.

  • `cd /home/Alex/myprg/25/`: Первая команда, которая меняет текущую рабочую директорию.

  • `&&`: Оператор, который гарантирует, что следующая команда выполнится только если cd была успешной.

  • `env GTK_THEME=Arc-Dark ./glade_example`: После смены директории, запускает приложение с относительным путём ./glade_example и указанной темой.

### Запуск из ярлыка .desktop

Вы можете встроить эту логику прямо в ярлык вашего приложения. Откройте ваш файл .desktop (например, ~/.local/share/applications/ПримерGlade.desktop) и измените строку Exec= следующим образом:

[Desktop Entry]
Version=1.0
Name=Пример Glade (Arc Dark) ; Изменено для ясности
Comment=Мое первое GTK-приложение с Glade в тёмной теме Arc ; Изменено
Exec=sh -c "cd /home/Alex/myprg/25/ && env GTK_THEME=Arc-Dark ./glade_example" ; КОМБИНИРОВАННОЕ РЕШЕНИЕ
Icon=/home/Alex/myprg/25/GE1_64x64.png
Terminal=false
Type=Application
Categories=Development;Utility;GUI;
Path=/home/Alex/myprg/25/ ; Можно оставить, если нужно для ресурсов приложения
StartupNotify=false
  • `Exec=sh -c «cd … && env GTK_THEME=Arc-Dark ./glade_example»`: Это комбинированное решение, которое сначала переходит в нужную директорию (чтобы приложение нашло свои ресурсы), а затем запускает его с определённой темой.

  • `Name=` и `Comment=`: Рекомендуется изменить их, чтобы ярлык в меню приложений или на рабочем столе ясно указывал на то, что это версия приложения с конкретной темой.

После сохранения файла .desktop не забудьте обновить кэш рабочего стола:

update-desktop-database ~/.local/share/applications/

1.9. Как Создать Свою Тему GTK?

Создание полноценной темы GTK — это сложный процесс, требующий глубокого понимания CSS и структуры GTK-виджетов. Однако, вы можете начать с изменения существующей темы или изучения основ:

  1. Изучите CSS: GTK3/GTK4 темы используют CSS. Знание синтаксиса CSS и специфичных для GTK свойств (например, margin, padding, background-color, border, font-size и т.д.) является основой.

  2. Используйте GtkInspector: Это ваш лучший друг! * Запустите любое GTK-приложение с GTK_DEBUG=interactive your_app. * Нажмите Ctrl + Shift + I. * В GtkInspector вы можете выбрать любой виджет и посмотреть, какие CSS-правила к нему применяются, а также экспериментировать с изменением этих правил на лету. * Это бесценно для понимания, как конкретные виджеты стилизуются.

  3. Используйте существующие темы как шаблон: * Возьмите любую тему из ~/.themes/ или /usr/share/themes/. * Откройте файлы .css (например, gtk-3.0/gtk.css или gtk-4.0/gtk.css). * Изучите их структуру и классы виджетов. Начните с небольших изменений (например, изменение цвета кнопки или шрифта).

  4. Основные файлы темы: * В папке темы для GTK3 вы найдете gtk-3.0/gtk.css и gtk-3.0/gtk-dark.css (для темного варианта). * Для GTK4 это будут gtk-4.0/gtk.css. * Эти файлы содержат основные правила стилизации.

Важно: GTK-виджеты имеют сложные иерархии и классы. Правильное определение селекторов CSS для конкретных состояний виджетов (например, button:hover, entry:focus) требует практики.

1.10. Заключение

Темы GTK предоставляют мощный механизм для кастомизации внешнего вида ваших приложений и всей рабочей среды. От простой установки существующих тем до глубокого погружения в создание своих собственных стилей, мир кастомизации GTK открывает широкие возможности для персонализации пользовательского опыта. Экспериментируйте с GtkInspector и различными темами, чтобы найти свой идеальный стиль!