Le projet GNOME a publié la version de la bibliothèque Libadwaita 1.8, qui comprend un ensemble de composants pour le style de l'interface utilisateur, conforme aux recommandations GNOME HIG (Human Interface Guidelines). La bibliothèque inclut des widgets et des objets prêts à l'emploi pour créer des applications qui respectent le style général de GNOME, dont l'interface peut s'adapter à des écrans de toutes tailles. Le code de la bibliothèque est écrit en C et est distribué sous la licence LGPL 2.1+.
La bibliothèque libadwaita est utilisée conjointement avec GTK4 et inclut des composants du thème Adwaita couramment utilisé dans GNOME, qui ont été extraits de GTK pour devenir une bibliothèque distincte. La séparation des éléments de design visuel de GNOME dans une bibliothèque distincte permet de développer les modifications nécessaires pour GNOME indépendamment de GTK, ce qui permet aux développeurs GTK de se concentrer sur les éléments fondamentaux, tandis que les développeurs GNOME peuvent promouvoir plus rapidement et de manière plus flexible les modifications de design nécessaires, sans affecter GTK lui-même.
La bibliothèque comprend des widgets standards couvrant divers éléments d'interface, tels que des listes, des panneaux, des zones de texte, des boutons, des onglets, des formulaires de recherche, des boîtes de dialogue, etc. Les widgets proposés permettent de créer des interfaces polyvalentes qui fonctionnent harmonieusement tant sur les grands écrans des PC et ordinateurs portables que sur les petits écrans tactiles des smartphones. L'interface des applications s'adapte dynamiquement en fonction de la taille de l'écran et des dispositifs d'entrée disponibles. La bibliothèque inclut également un ensemble de styles Adwaita, alignant l'apparence avec les recommandations GNOME, sans nécessiter d'adaptation manuelle.

Dans la nouvelle version :
- En remplacement de la classe GtkShortcutsWindow, déclarée obsolète dans GTK 4.18, Libadwaita implémente une nouvelle classe AdwShortcutsDialog avec un dialogue pour naviguer dans les combinaisons de touches disponibles. La nouvelle implémentation se distingue par une refonte complète et une simplification de la logique de séparation en sections et groupes. Le développeur se voit attribuer une API minimale, et les fichiers UI sont utilisés pour définir la structure et le contenu du dialogue.
Au lieu de GtkShortcutLabel pour représenter les éléments, une nouvelle classe AwsShortcutLabel est proposée, qui ne prend pas en charge l'indication d'informations sur les gestes d'écran et l'intégration d'icônes, car leur utilisation entraînait de la confusion et était limitée (par exemple, les icônes n'étaient utilisées que dans l'application gnome-games pour représenter les boutons des manettes).

- Il est désormais possible d'utiliser des requêtes médias CSS pour définir les styles de mode sombre et clair, ainsi que les vues normale et contrastée d'un même élément. Les tailles des polices pour le contenu (Adwaita Sans 12pt) et l'interface (Adwaita Sans 11pt) ont été séparées. Une classe de style « .document » a été ajoutée, utilisant la police Adwaita Sans 12pt pour une meilleure lisibilité et un interligne augmenté. L'interligne a également été augmenté dans la classe de style « .body », qui est maintenant appliquée par défaut à certains widgets intégrés.

- La classe AdwPreferencesGroup peut être utilisée avec des modèles de listes via la méthode adw_preferences_group_bind_model(). Il est également possible d'ajouter des lignes dans la liste interne qui ne sont pas de la classe AdwPreferencesRow.
- Dans la classe AdwPreferencesPage, il est permis d'insérer des groupes à n'importe quel endroit, et pas seulement à la fin de la page.
- Les classes AdwPreferencesGroup et AdwPreferencesPage ont été ajoutées avec les méthodes adw_preferences_page_get_group() et adw_preferences_group_get_row() pour inspecter les groupes et les lignes.
- La classe AdwWrapBox a ajouté la méthode adw_wrap_box_remove_all() pour supprimer tous les éléments enfants.
- Pour les éléments enfants de la classe GtkFlowBox, des styles par défaut sont fournis pour surligner l'élément au passage de la souris et activer l'élément.
- La classe AdwHeaderBar implémente la prise en charge des contrôles natifs de fenêtres sur macOS.
- Pour améliorer les performances, l'utilisation des ombres pour les fenêtres, les dialogues et les fenêtres contextuelles a été réduite.
Source : opennet.ru


