Библиотека libadwaita используется в сочетании с GTK4 и включает компоненты используемой в GNOME темы оформления Adwaita, которые были вынесены из GTK в отдельную библиотеку. Вынос элементов визуального оформления GNOME в отдельную библиотеку позволяет развивать необходимые для GNOME изменения отдельно от GTK, что даёт возможность разработчикам GTK сосредоточиться на базовых вещах, а разработчикам GNOME более быстро и гибко продвигать необходимые для себя изменения стилевого оформления, не затрагивая сам GTK.
В библиотеку входят типовые виджеты, охватывающих различные элементы интерфейса, такие как списки, панели, блоки редактирования, кнопки, вкладки, формы поиска, диалоговые окна и т.п. Предложенные виджеты позволяют создавать универсальные интерфейсы, которые органично функционируют как на крупных экранах ПК и ноутбуков, так и на небольших сенсорных экранах смартфонов. Интерфейс приложений динамически меняется в зависимости от размера экрана и доступных устройств ввода. Библиотека также включает набор стилей Adwaita, приводящих внешний вид в соответствие с рекомендациями GNOME, без необходимости выполнения ручной адаптации.
![](https://www.opennet.ru/opennews/pics_base/CFD0C5CECEC5D4_1694862200.png)
Основные изменения в libadwaita 1.4:
- Предложены новые адаптивные виджеты, подстраивающиеся под размер видимой области. В новом наборе обеспечена корректная поддержка вложенного изменения размера (например, когда изменение размера боковой панели, влечёт за собой изменение размера кнопок и переключателей), решены проблемы с анимированными эффектами при переключении режимов, переделана обработка изменения ширины, повышена гибкость использования (например, в версии для мобильных устройств можно перенести часть виджетов из заголовка в нижнюю панель). Старые адаптивные виджеты AdwLeaflet, AdwFlap, AdwSqueezer и AdwViewSwitcherTitle объявлены устаревшими и со временем должны быть заменены на новые.
- Реализована система точек останова (класс Breakpoint), позволяющая менять интерфейс пользователя произвольным образом в зависимости от размера окна. Точки останова могут использоваться с классами AdwWindow, AdwApplicationWindow и AdwBreakpointBin. Среди прочего, точки останова могут определяться декларативным способом через UI-файлы.
- В виджете AdwNavigationView реализован шаблон браузинга, пришедший на смену виджету AdwLeaflet в режиме «can-unfold=false», предоставляющий стек навигации, который может настраиваться статически (через UI-файлы) или динамически, и поддерживающий действия navigation.push и navigation.pop для помещения страниц напрямую из UI-файла.
- В виджет AdwHeaderBar добавлена возможность автоматического показа корректного заголовка для каждой страницы навигации, а также показа кнопки «назад» для перехода к прошлой странице или вывода меню для выбора страниц для перехода.
- Добавлен виджет AdwNavigationSplitView, имеющий два дочерних элемента — боковую панель и содержимое, которые выводятся бок о бок. Размер боковой панели может выбираться как определённый процент от общей ширины видимой области.
- Добавлен виджет AdwToolbarView, включающий виджет с содержимым и несколько верхних и нижних панелей (например, AdwHeaderBar, AdwTabBar, GtkSearchBar, GtkActionBar или GtkBox со стилем .toolbar).
- Добавлен виджет для вывода переключателей AdwSwitchRow, реализованный как подкласс AdwActionRow, содержащий GtkSwitch.
- Добавлен виджет AdwSpinRow c реализацией строки списка, включающей GtkSpinButton.
- Добавлен новый класс стилей «.property» для отображения свойств.
- Добавлена функция adw_about_window_new_from_appdata() для упрощения создания окон с информацией о программе.
- В виджете AdwComboRow реализована поддержка полей поиска.
- Добавлено свойство AdwPreferencesPage:description для показа описания в верхней части страницы.
- В виджете AdwTabOverview значительно переделана обработка миниатюр для лучшей работы с WebKitWebView.
- Цвет заголовков и панелей инструментов в светлых темах заменён на белый вместо серого. Серый цвет теперь задействован в боковых панелях.
Источник: http://www.opennet.ru/opennews/art.shtml?num=59767