Проект GNOME опубликовал выпуск библиотеки Libadwaita 1.2, включающей набор компонентов для стилевого оформления интерфейса пользователя, соответствующего рекомендациям GNOME HIG (Human Interface Guidelines). Библиотека включает в себя готовые виджеты и объекты для построения приложений, соответствующих общему стилю GNOME, интерфейс которых может адаптивно подстраиваться под экраны любого размера. Код библиотеки написан на языке Си и распространяется под лицензией LGPL 2.1+.
![](https://www.opennet.ru/opennews/pics_base/0_1641021084.png)
Библиотека libadwaita используется в сочетании с GTK4 и включает компоненты используемой в GNOME темы оформления Adwaita, которые были вынесены из GTK в отдельную библиотеку. Вынос элементов визуального оформления GNOME в отдельную библиотеку позволяет развивать необходимые для GNOME изменения отдельно от GTK, что даёт возможность разработчикам GTK сосредоточиться на базовых вещах, а разработчикам GNOME более быстро и гибко продвигать необходимые для себя изменения стилевого оформления, не затрагивая сам GTK.
В библиотеку входят типовые виджеты, охватывающих различные элементы интерфейса, такие как списки, панели, блоки редактирования, кнопки, вкладки, формы поиска, диалоговые окна и т.п. Предложенные виджеты позволяют создавать универсальные интерфейсы, которые органично функционируют как на крупных экранах ПК и ноутбуков, так и на небольших сенсорных экранах смартфонов. Интерфейс приложений динамически меняется в зависимости от размера экрана и доступных устройств ввода. Библиотека также включает набор стилей Adwaita, приводящих внешний вид в соответствие с рекомендациями GNOME, без необходимости выполнения ручной адаптации.
Основные изменения в libadwaita 1.2:
- Добавлен виджет Adw.EntryRow, предназначенный для использования в качестве элемента списков. Виджет предоставляет поле ввода и заголовок с возможностью прикрепления дополнительных виджетов перед и после поля ввода (например, кнопки подтверждения ввода или индикатор того, что данные можно редактировать).
Дополнительно доступен вариант Adw.PasswordEntryRow, рассчитанный на ввод паролей. - Добавлен виджет Adw.MessageDialog для вывода диалога с сообщением или вопросом. Виждет является расширенной заменой Gtk.MessageDialog, которая может подстраивать компоновку элементов к размеру окна. Например, в широких окнах кнопки могут выводиться в одой строке, а в узких – разбиваться на несколько колонок. Другим отличием является то, что виджет не является дочерним классом GtkDialog и предоставляет полностью новый API, не привязанный к предопределённым типам кнопок GtkResponseType (в Adw.MessageDialog обработка всех действий выполняется приложением), упрощающий встраивание других виджетов при помощи свойства extra-child и предоставляющий отдельные стили для заголовка и основного текста.
- Добавлен виджет Adw.AboutWindow для вывода окна с информацией о программе. Виджет заменяет Gtk.AboutDialog и отличается применением адаптивной компоновки элементов и расширенными вспомогательными секциями, такими как список изменений, окно с благодарностями, информация о лицензиях сторонних компонентов, ссылки на информационные ресурсы и данные для упрощения отладки.
- Расширены возможности виджетов Adw.TabView и Adw.TabBar, в которых переработан механизм обработки горячих клавиш для решения проблемы с работой комбинаций, пересекающихся с обработчиками GTK4 (например, Ctrl+Tab). В новой версии также предложено свойство для установки всплывающих подсказок для индикаторов и кнопок вкладок.
- Добавлен класс Adw.PropertyAnimationTarget для упрощения анимирования свойств объектов.
- Значительно изменён стиль панели вкладок (Adw.TabBar) – более явно выделена активная вкладка и увеличена контрастность элементов в варианте для тёмного оформления.
- Уменьшена высота вертикальных разделителей, что позволило в панели с заголовком и строкой поиска избавится от отвлекающих светлых границ в пользу тёмных границ, задаваемых при помощи @headerbar_shade_color, и добавить стиль фона, сочетающийся с панелями в заголовке.
- Объявлен устаревшим класс стиля “.large-title”, вместо которого следует использовать “.title-1”.
- Уменьшены отступы в виджете Adw.ActionRow для приближения его внешнего вида к панелям и виджету Adw.EntryRow.
- В виджетах Gtk.Actionbar и Adw.ViewSwitcherBar использованы те же стили, что применяются в панелях заголовка, поиска и вкладок.