В Linux приложения рисуются двумя большими наборами библиотек: GTK и Qt. Первый используют GNOME, Cinnamon, Xfce и большинство утилит окружения, второй — KDE, а также многие кроссплатформенные программы. Из-за этого на одном рабочем столе легко получить три разных вида: светлые окна GTK, тёмный Qt-клиент и что-то среднее у Flatpak-сборки. Ниже — как привести всё к одному виду и не сломать систему при обновлении.

Где Linux ищет темы

Тема — это каталог с CSS-подобными файлами для GTK и отдельными конфигами для Qt. Пользовательские темы ставятся в ~/.local/share/themes (современный путь) или ~/.themes (старый, но всё ещё поддерживаемый). Иконки и курсоры лежат рядом, в каталоге icons.

mkdir -p ~/.local/share/themes ~/.local/share/icons
tar -xf Nordic.tar.xz -C ~/.local/share/themes

Хорошая тема содержит каталоги gtk-2.0, gtk-3.0 и gtk-4.0. Если четвёртой ветки нет, приложения на GTK4 останутся в Adwaita — это нормально и не является ошибкой установки.

Настройка GTK

Имя темы задаётся ключом gtk-theme в схеме интерфейса. Там же меняются иконки, курсор и цветовая схема. Настройки подхватывают GTK3-приложения и те GTK4-программы, которые не используют libadwaita.

gsettings set org.gnome.desktop.interface gtk-theme 'Nordic'
gsettings set org.gnome.desktop.interface icon-theme 'Papirus'
gsettings set org.gnome.desktop.interface cursor-theme 'Bibata-Modern-Ice'
gsettings set org.gnome.desktop.interface color-scheme 'prefer-dark'

Ключ color-scheme управляет тёмным режимом на уровне окружения: его понимают libadwaita и часть Qt-приложений через портал настроек. Это более надёжный способ включить тёмное оформление, чем подменять тему целиком.

У многих тем есть отдельные варианты, например Nordic и Nordic-dark. В GTK3 переключение color-scheme не меняет набор CSS, поэтому для тёмного варианта имя темы нужно указывать явно. Проверить, какие варианты присутствуют, можно по подкаталогам внутри темы или командой ls в каталоге тем.

Проверить тему без перезапуска сессии можно переменной GTK_THEME. Она действует только на запущенный процесс и удобна для сопоставления вариантов.

GTK_THEME=Nordic gtk3-demo
GTK_THEME=Adwaita:dark gtk4-demo

Почему GTK4 выглядит иначе

Приложения на libadwaita сознательно игнорируют пользовательские темы: авторы библиотеки считают, что единый вид важнее кастомизации. Для них работают цветовая схема, акцентный цвет и настройки шрифта, но не произвольный CSS из каталога тем. Существуют патчи и утилиты вроде Gradience, однако они вмешиваются в работу библиотеки и ломаются при обновлении. Если единообразие важнее, выбирайте приложения, которые следуют системной схеме, а не воюйте с libadwaita.

Настройка Qt

Qt-приложения не читают настройки GNOME напрямую. Им нужен посредник: qt6ct для Qt6, qt5ct для Qt5 или Kvantum для тем в формате SVG. Посредник указывается переменной окружения.

sudo apt install qt6ct qt5ct kvantum
QT_QPA_PLATFORMTHEME=qt6ct qt6ct

Файлы в ~/.config/environment.d читает systemd user session, поэтому переменные попадут во все графические приложения. Если дистрибутив запускает сессию иначе, добавьте те же строки в ~/.profile и перезайдите. Дальше откройте qt6ct, выберите стиль, палитру и шрифт — настройки сохранятся в конфиге qt6ct и применятся к новым процессам.

В KDE посредник не нужен: Plasma сама задаёт оформление Qt-приложений, а специальный модуль переносит цвета и шрифты в GTK-темы.

Flatpak и Snap

Песочница видит только те каталоги, которые ей разрешили. Поэтому тема, установленная в домашний каталог, может не примениться к Flatpak-приложению. Разрешение выдаётся один раз и действует для всех сборок пользователя.

flatpak override --user --filesystem=xdg-data/themes:ro
flatpak override --user --filesystem=xdg-data/icons:ro

С Snap сложнее: доступ к домашним каталогам ограничен политикой пакета, и тема из домашнего каталога часто недоступна. Практичный вывод — для приложений из Snap оставить системное оформление и не тратить время на погоню за идеальным совпадением.

Flatpak-приложения получают настройки окружения через портал: он транслирует имя темы и тёмный режим из gsettings. Поэтому сначала добейтесь правильного вида в обычных программах, а уже потом выдавайте разрешения песочнице. Если тема лежит в системном каталоге, доступ по файловой системе не нужен — он и так виден сборке.

Проверка результата

Сопоставлять оформление лучше на одинаковых диалогах, а не на главных окнах: кнопки, поля ввода и меню демонстрируют несоответствия оперативнее. Единообразие оформления заметно экономит время и предотвращает неожиданные несовпадения между разными приложениями. Откройте рядом GTK3-программу, GTK4-приложение и Qt-клиент и пройдитесь по четырём пунктам.

  • Фон окон и цвет текста совпадают, нет внезапно белых панелей.
  • Кнопки одинаковой высоты, скругления и отступы не конфликтуют.
  • Иконки одного набора, курсор не меняется при переходе между окнами.
  • Тёмная схема сохраняется после перезапуска приложения.

Если Qt-программа выбивается, проверьте, не задан ли стиль в её собственном ярлыке. Многие установщики прописывают параметр style в файле .desktop, и он перекрывает глобальную настройку qt6ct.

Приложения от root и старые программы

Программы, запущенные через sudo, не наследуют пользовательские переменные и рисуются стандартной темой. Запускайте графические утилиты через pkexec с явной переменной, а GTK2-приложения настраивайте отдельным файлом настроек GTK2.

pkexec env GTK_THEME=Nordic gparted
printf 'gtk-theme-name="Nordic"\ngtk-icon-theme-name="Papirus"\n' > ~/.gtkrc-2.0

Диагностика

  • Проверьте, какая версия GTK у программы: ldd $(which nautilus) | grep gtk.
  • Посмотрите, не переопределяет ли тему сам ярлык: grep -i gtk ~/.local/share/applications.
  • Убедитесь, что каталог темы содержит index.theme — без него GTK не увидит оформление.
  • Для Qt проверьте переменную env | grep QT_ и наличие конфига qt6ct.

Чек-лист

  • Тема, иконки и курсор лежат в домашнем каталоге, а не в системном.
  • Тёмный режим включён через color-scheme, а не только подменой темы.
  • Для Qt задан QT_QPA_PLATFORMTHEME и установлен qt6ct.
  • Flatpak получил доступ к каталогам тем или использует GTK_THEME.
  • После обновления проверено, что тема не сломала GTK4-приложения.

Итог

Единый вид в Linux — это не одна тема, а согласованные настройки трёх уровней: GTK через gsettings, Qt через qt6ct или Plasma, и отдельные правила для песочниц. Начните с color-scheme и одной проверенной темы, затем настройте Qt и выдайте разрешения Flatpak. Такой подход переживает обновления и не требует патчей библиотек.

Насколько публикация полезна?

Нажмите на звезду, чтобы оценить!

Средняя оценка 0 / 5. Количество оценок: 0

Оценок пока нет. Поставьте оценку первым.

Поделиться: Telegram ВКонтакте