Het GNOME-project heeft de eerste stabiele versie van de Libadwaita-bibliotheek uitgebracht, die een set componenten bevat voor het vormgeven van de gebruikersinterface volgens de richtlijnen van GNOME HIG (Human Interface Guidelines). De bibliotheek omvat kant-en-klare widgets en objecten voor het bouwen van applicaties die aansluiten bij de algemene stijl van GNOME, waarvan de interface zich aanpast aan schermen van elke grootte. De code van de bibliotheek is geschreven in de programmeertaal C en wordt verspreid onder de LGPL 2.1+-licentie.

De libadwaita-bibliotheek wordt gebruikt in combinatie met GTK4 en omvat componenten van het GNOME-thema Adwaita, die zijn losgekoppeld van GTK en in een aparte bibliotheek zijn geplaatst. De code van libadwaita is gebaseerd op de libhandy-bibliotheek en is gepositioneerd als een opvolger van deze bibliotheek, die oorspronkelijk is gemaakt voor het bouwen van een responsieve interface op mobiele platforms met GNOME-technologieƫn en is verfijnd in de GNOME-omgeving Phosh voor de smartphone Librem 5.
De bibliotheek bevat standaardwidgets die verschillende interface-elementen omvatten, zoals lijsten, panelen, invoervakken, knoppen, tabbladen, zoekformulieren, dialoogvensters, enzovoort. De voorgestelde widgets maken het mogelijk om veelzijdige interfaces te creƫren die goed functioneren zowel op grote schermen van pc's en laptops als op kleine touchscreen-schermen van smartphones. De interface van applicaties past zich dynamisch aan op basis van de schermgrootte en de beschikbare invoerapparaten. De bibliotheek bevat ook een set Adwaita-stijlen die het uiterlijk in overeenstemming brengen met de aanbevelingen van GNOME, zonder dat handmatige aanpassing nodig is.
Het loskoppelen van elementen van de visuele vormgeving van GNOME in een aparte bibliotheek maakt het mogelijk om noodzakelijke wijzigingen voor GNOME apart van GTK te ontwikkelen, wat de GTK-ontwikkelaars in staat stelt zich te concentreren op de basiszaken, terwijl GNOME-ontwikkelaars sneller en flexibeler noodzakelijke veranderingen in de styling kunnen doorvoeren zonder GTK zelf aan te raken. Desondanks creƫert deze aanpak moeilijkheden voor ontwikkelaars van externe gebruikersomgevingen op basis van GTK, die gedwongen zijn ofwel libadwaita te gebruiken en zich aan te passen aan de kenmerken van GNOME en zijn vormgeving te herhalen, ofwel een eigen variant van de stijlbibliotheek voor GTK te ontwikkelen, in de wetenschap dat GNOME-applicaties heterogeen zullen verschijnen in omgevingen die zijn gebaseerd op externe stijl bibliotheken.
De belangrijkste klachten van ontwikkelaars van externe omgevingen betreffen problemen met het overschrijven van kleuren van interface-elementen, maar de ontwikkelaars van libadwaita werken aan het bieden van een API voor flexibele kleurbeheer, die deel uit zal maken van een van de volgende releases. Onder de onopgeloste problemen wordt ook genoemd dat widgets voor gebarenbesturing alleen correct werken op touchscreen - voor touchpads zal de correcte werking van dergelijke widgets later gegarandeerd worden, omdat dit wijzigingen in GTK vereist.
De belangrijkste wijzigingen in libadwaita ten opzichte van libhandy:
- Volledig herzien stijlset. Het gebruikte GNOME-thema Adwaita is uit GTK gehaald en gemoderniseerd, terwijl het oude thema in GTK als 'Default' is vastgelegd. Een van de meest opvallende verschillen tussen libadwaita en het 'Default' thema is de verandering in de opmaak van venstertitels.

- De mechanismen voor het toewijzen van kleuren aan elementen en het veranderen van kleuren tijdens het gebruik van de applicatie zijn gewijzigd (problemen ontstonden doordat libadwaita overging op SCSS, wat heropbouw vereist voor het wijzigen van kleuren). Om de kleuren van elementen te veranderen, zoals nodig is in GNOME Web om de incognito-modus aan te geven, is een methode gebruikt die is voorgesteld in elementary OS en gebaseerd op het definiƫren van een vaste lijst van benoemde kleuren via '@define-color'. Hierbij worden de kleuren van veel interface-elementen nu berekend ten opzichte van de basis kleur van de tekst en automatisch gewijzigd, wat voorkomt dat applicaties de kleuren volledig kunnen controleren (ontwikkelaars werken aan het oplossen van deze beperking).


- De weergavekwaliteit bij gebruik van donkere thema's is verbeterd door een contrastrijkere markering van elementen. De accentkleur is helderder gemaakt, en er is een extra kleur toegevoegd voor markering die kan veranderen afhankelijk van de donkere of lichte thema's.


- Een grote hoeveelheid nieuwe stijlklassen is toegevoegd voor gebruik in applicaties. Bijvoorbeeld, '.pill' voor grote afgeronde knoppen, de mogelijkheid om '.flat' in GtkHeaderBar te gebruiken, '.accent' voor het instellen van de accentkleur in labels, '.numeric' voor tabeltypografie, en '.card' voor het gebruik van achtergrond en schaduw in lijsten.

- Grote monolithische SCSS-bestanden zijn opgesplitst in een collectie van kleine stijlbestanden.
- Een API is toegevoegd voor het aanpassen van de donkere opmaakstijl en de modus van hoge contrast.

- De documentatie is herzien, waarvoor nu het hulpmiddel gi-docgen wordt gebruikt.

- Een API voor animatie is toegevoegd, die kan worden gebruikt voor het creƫren van overgangseffecten bij het wisselen van de ene toestand naar de andere, evenals voor het creƫren van veerachtige effecten (spring animation).

- Voor tabbladen op basis van AdwViewSwitcher is de mogelijkheid toegevoegd om labels weer te geven met het aantal ongeopende notificaties.

- Een klasse AdwApplication (subklasse van GtkApplication) is toegevoegd voor automatische initialisatie van Libadwaita en het laden van stijlen.
- Een verzameling widgets is toegevoegd om standaardoperaties te vereenvoudigen: AdwWindowTitle voor het instellen van de titel van het venster, AdwBin voor het vereenvoudigen van het maken van subklassen, AdwSplitButton voor gecombineerde knoppen, AdwButtonContent voor knoppen met een pictogram en label.
- De API is opgeschoond.
Bron: opennet.ru










