Работа над стилем. Создание единого GUI. Linux статьи
Написать статью
Войдите, чтобы писать статьи

Работа над стилем. Создание единого GUI

2

Работа над стилем

Материал написан пользователем сайта.

Когда-то была статья «Такие разные GTK и Qt. Возможна ли гармония в среде пользователя?» В ней рассматривались аспекты оформления графического интерфейса с применением различных подходов: GTK, QT и вытекающими отсюда неудобствами для пользователя. Подбор готовых тем оформления - вариант так себе, хотя имеет право на жизнь. Пользователям современного GNOME можно остановиться на adwaita-style, который на выходе даст очень хороший вариант совместимости. Кто-то вообще предпочтет использовать исключительно GTK или QT в своей системе, чтобы уйти от сборной солянки в стилях приложений.

Создание единого GUI

В данной статье рассмотрим динамическую адаптацию графического интерфейса системы под цвета обоев рабочего стола. Стоит сразу отметить, что все делалось в моем Hyprland Void, поэтому динамическая настройка, помимо интерфейса приложений, требовалась как для самого оконного менеджера (hyprland), так и для панели (waybar) и для меню (fuzzel) и для менеджера уведомлений (dunst) и для менеджера питания (wlogout). Задача вовсе нетривиальная, поэтому делалось все поэтапно (с чувством, с толком, с расстановкой). Еще одна ремарка, прежде чем мы начнем, - я предпочитаю светлые темы, поэтому максимальный упор делался именно на них, а темные варианты создавались уже по остаточному принципу.

В качестве базового варианта темы GTK мной был выбран Graphite-style; для QT же использован 22-цветный qt6ct-конфиг. Таким образом, для GTK+ приложений мной созданы 2 варианта одной темы (светлый и темный), для QT приложений - аналогично. Общим для них является использование одних и тех же акцентных цветов из сгенерированных pywal, которые динамически меняются вместе со сменой обоев рабочего стола. Базовые цвета (фон, текст) у них абсолютно одинаковые, а дополнительные подобраны максимально приближенными друг к другу, насколько это возможно.

Hyprland, waybar, fuzzel, dunst, wlogout используют в своем оформлении более широкую палитру pywal (не только акцентные цвета), создавая вместе единый стиль всего рабочего окружения. Ниже демонстрация того, как все выглядит, в зависимости от выбранных обоев рабочего стола.

Шаблоны генератора палитры цветов

В качестве основного инструмента использован pywal-16, представляющий собой простой генератор палитры и умеющий, по заранее подготовленным шаблонам, создавать нужные файлы, которые легко интегрируются в файлы конфигураций (gtk.css, qt6ct.config, fuzzel.ini etc.). В качестве инициатора выступает графический менеджер обоев waypaper, в post-command которого включен запуск скрипта, вызывающий адаптацию конфигураций и перезагрузку различных элементов рабочего окружения, включая оконный менеджер Hyprland.

Шаблоны (pywal templates) создаются достаточно просто, нужно всего лишь знать используемый язык конфигурационных файлов тех приложений, для которых они генерируются. Некоторые особенности (нюансы) присутствуют, например в css стилях часто используют переменные, заключенные в фигурные скобки {}; для шаблона pywal придется дважды использовать {{}}, чтобы избежать ошибок при создании файла с палитрой. Ниже пример шаблона для Hyprland на lua.

active_border = "rgba({color1.strip}77)"
inactive_border = "rgba({color0.strip}33)"
background_color = "rgba({color0.strip}FF)"
border_color = "rgba({color2.strip}AA) rgba({color2.strip}77)"

Почему не использован matugen, спросите вы, вроде бы представляющий собой современную интерпретацию pywal? В данном контексте я голосую за простой инструмент; мне не нравится, когда генератор заменяет конфигурационные файлы, сгенерированные из шаблонов. В случае смены скриптового языка, например как то было в Hyprland при переходе на lua, нужно помнить, что конфигурация цветов (а в некоторых случаях и целый файл конфигурации) генерируется по шаблону matugen, что создает дополнительную цепочку зависимостей и в целом усложняет контроль над системой.

Работа над стилем

Элементы графического окружения, не входящие в оформление окон приложений, меню, панели, также не остались без внимания. Всплывающие элементы GUI: различные подсказки, календарь, информация о погоде и т.п. проработаны в едином стиле, соответствуют цветовой гамме уведомлений рабочего стола и в целом гармонируют с общим интерфейсом системы.

Всплывающий календарь

Что сделано, уже работает и что планируется

Работает динамическая смена цветовой палитры всех элементов графического окружения в зависимости от выбранных обоев рабочего стола.

Для основных пользовательских приложений (браузер, эмулятор терминала, файловый менеджер, медиаплеер, звуковой микшер) создан скрипт, позволяющий задать переменные, которые определяют поведение тех или иных кнопок панели и меню. Таким образом, мои сегодняшние личные предпочтения, легко заменить своими, при этом сохранив полную работоспособность элементов окружения, без необходимости вносить правки в конфигурационные файлы (hyprland, waybar, fuzzel, etc). Скрипт выполнен в интерактивном стиле, делающем работу с ним интуитивно понятной.

Для панели (waybar) разработаны 2 темы: цветная (адаптивная) и монохромная; выбор расположения панели предполагает 2 варианта: верхнее или нижнее, под которые автоматически подстраиваются подсказки, уведомления, меню.

Пока не смог найти способ, чтобы приложения GTK+, QT "на лету" применяли изменения. В планах создание единого стиля QT/GTK (а-ля adwaita), а также доработка темного варианта оформления.

Адаптивный вариант темной и светлой темы GTK+
Лайков: +3
войдите, чтобы ставить лайки
2
  • Опубликовано: 23.09.2026
  • scorpii

Комментарии

Darllowin
Активный пользователь
Активный
23.09.2026
10:27
Постоянная ссылка на комментарийПостоянная ссылка на комментарий
0
войдите, чтобы ставить лайки
Хоть я цвета и, тем более, обои меняю раз в несколько лет, всё равно, как по мне, статья получилась интересной.
А что думаете насчёт того, чтобы вместо связки Waybar + Fuzzel и т. д. использовать какой-нибудь desktop shell, ту же Noctalia, например?
Там вроде есть свои встроенные инструменты, чтобы адаптировать цвета оболочки и даже сторонних приложений под цвета обоев.
yosh78
Активный пользователь
Активный
23.09.2026
10:42
Постоянная ссылка на комментарийПостоянная ссылка на комментарий
0
войдите, чтобы ставить лайки
Ну, круто, что тут сказать...Меня просят сделать что-то подобное на Enlightenment, там уже все инструменты в принципе есть. В Mabox вроде такое сделали. Глядишь, так не политкорректный Hyperland заменит, любителям такого стиля, Gnome. Успехов!

Написать комментарий

Ник:
Текст комментария:
  • Уважать других.
  • Без оскорблений и грубости.
  • Не переходить на личности.
  • Писать на русском языке.
  • Без политики.
  • Без флуда.
  • Оффтоп запрещен.
  • Любой комментарий может быть удален без объяснения причин.
Правилаправила (наведите курсор)