Проект GNOME опублікував перший стабільний випуск бібліотеки Libadwaita, що включає набір компонентів для стильового оформлення інтерфейсу користувача, що відповідає рекомендаціям GNOME HIG (Human Interface Guidelines). Бібліотека включає готові віджети та об'єкти для побудови додатків, що відповідають загальному стилю GNOME, інтерфейс яких може адаптивно підлаштовуватися під екрани будь-якого розміру. Код бібліотеки написаний мовою Сі та поширюється під ліцензією LGPL 2.1+.
Бібліотека libadwaita використовується в поєднанні з GTK4 і включає компоненти теми оформлення Adwaita, що використовуються в GNOME, які були винесені з GTK в окрему бібліотеку. Код libadwaita заснований на бібліотеці libhandy і позиціонується як бібліотека, що йде на зміну, яка була спочатку створена для побудови адаптивного інтерфейсу в мобільних платформах на базі технологій GNOME, і була відточена в GNOME-оточенні Phosh для смартфона Librem 5.
До бібліотеки входять типові віджети, що охоплюють різні елементи інтерфейсу, такі як списки, панелі, блоки редагування, кнопки, вкладки, форми пошуку, діалогові вікна тощо. Запропоновані віджети дозволяють створювати універсальні інтерфейси, що органічно функціонують як на великих екранах ПК та ноутбуків, так і на невеликих сенсорних екранах смартфонів. Інтерфейс програм динамічно змінюється залежно від розміру екрана та доступних пристроїв введення. Бібліотека також включає набір стилів Adwaita, що приводять зовнішній вигляд у відповідність до рекомендацій GNOME, без необхідності виконання ручної адаптації.
Винесення елементів візуального оформлення GNOME в окрему бібліотеку дозволяє розвивати необхідні для GNOME зміни окремо від GTK, що дає можливість розробникам GTK зосередитися на базових речах, а розробникам GNOME швидше та гнучкіше просувати необхідні для себе зміни стильового оформлення, не торкаючись сам GTK. Тим не менш, подібний підхід створює труднощі для розробників сторонніх користувачів оточення на базі GTK, які змушені або використовувати libadwaita і підлаштовуватися під особливості GNOME і повторювати його оформлення, або розвивати власний варіант бібліотеки стилів для GTK, змирившись з тим, що програми GNOME будуть виглядати неоднорідно в оточеннях на основі сторонніх стильових бібліотек.
Основне невдоволення розробників сторонніх оточень стосується проблем із перевизначенням кольорів елементів інтерфейсу, але розробники libadwaita працюють над наданням API для гнучкого керування кольорами, яке увійде до складу одного з наступних випусків. З невирішених проблем також називається коректна робота віджетів керування жестами тільки на сенсорних екранах - для тачпадів коректна робота подібних віджетів буде забезпечена пізніше, оскільки вимагає внесення змін до GTK.
Основні зміни в libadwaita в порівнянні з libhandy:
- Повністю перероблений набір стилів. Тема оформлення Adwaita, що використовується в GNOME, винесена зі складу GTK і модернізована, а стара тема оформлення зафіксована в GTK на ім'я «Default». З найбільш помітних відмінностей libadwaita від теми Default відзначається зміна оформлення заголовків вікон.
- Змінено механізми прив'язки кольорів до елементів та зміни кольорів під час роботи програми (проблеми пов'язані з тим, що libadwaita перейшов на SCSS, який вимагає перескладання для заміни кольору). Для зміни кольорів елементів, що, наприклад, потрібно в GNOME Web для позначки переходу в режим інкогніто, застосований метод, запропонований в elementary OS і заснований на завданні фіксованого списку іменованих кольорів через @define-color. При цьому кольори багатьох елементів інтерфейсу тепер обчислюються відносно базового кольору тексту і змінюються автоматично, що не дозволяє програмам повністю контролювати схему кольору (розробники працюють над усуненням даного обмеження).
- Збільшено якість відображення під час використання темних тем оформлення рахунок контрастного виділення елементів. Акцентуючий колір (accent) зроблений яскравішим, а також доданий ще один колір для виділення, який може змінюватися для темної та світлої тем оформлення.
- Додано велику частину нових класів стилів для використання в додатках. Наприклад, .pill для великих округлених кнопок, можливість використання .flat в GtkHeaderBar, .accent для виставлення кольору акцентування в мітках, .numeric для табличної друкарні, .card для використання фону і тіні як в списки.
- Великі монолітні файли SCSS поділені на колекцію із дрібних файлів зі стилями.
- Доданий API для налаштування темного стилю оформлення та режиму високої контрастності.
- Перероблено документацію, для генерації якої тепер застосовується інструментарій gi-docgen.
- Доданий API для анімації, яку можна використовувати для створення перехідних ефектів при заміні одного стану на інший, а також для створення пружинних ефектів (spring animation).
- Для вкладок на базі AdwViewSwitcher додано можливість виводу міток із числом непроглянутих повідомлень.
- Додано клас AdwApplication (підклас GtkApplication) для автоматичної ініціалізації Libadwaita та завантаження стилів.
- Додано добірку віджетів для спрощення типових операцій: AdwWindowTitle для виставлення заголовка вікна, AdwBin для спрощення створення дочірніх підкласів, AdwSplitButton для комбінованих кнопок, AdwButtonContent для кнопок з піктограмою та міткою.
- Проведено чищення API.
Джерело: opennet.ru