GNOME-projektet har offentliggjort den første stabile version af Libadwaita-biblioteket, som inkluderer et sæt komponenter til stiludsmykning af brugergrænsefladen, der følger GNOME HIG (Human Interface Guidelines). Biblioteket omfatter færdige widgets og objekter til opbygning af applikationer, der passer til den overordnede GNOME-stil, hvis grænseflader kan tilpasse sig skærme i alle størrelser. Koden til biblioteket er skrevet i C og distribueres under LGPL 2.1+-licensen.

Libadwaita-biblioteket bruges sammen med GTK4 og inkluderer komponenter fra det anvendte GNOME-tema Adwaita, som er blevet adskilt fra GTK i et separat bibliotek. Koden til libadwaita er baseret på bibliotektet libhandy og positionerer sig som efterfølger til dette bibliotek, som oprindeligt blev skabt til at opbygge responsive grænseflader på mobile platforme baseret på GNOME-teknologier og blev finjusteret i GNOME-miljøet Phosh til smartphones som Librem 5.
Biblioteket indeholder typiske widgets, der dækker forskellige brugergrænsefladeelementer, såsom lister, paneler, redigeringsfelter, knapper, faner, søgeformularer, dialogvinduer osv. De foreslåede widgets gør det muligt at skabe alsidige grænseflader, der organisk fungerer både på store PC- og bærbare skærme og på små berøringsskærme af smartphones. Applikationernes grænseflade ændrer sig dynamisk afhængigt af skærmstørrelsen og de tilgængelige inputenheder. Biblioteket inkluderer også et sæt Adwaita-stilarter, der bringer udseendet i overensstemmelse med GNOME's anbefalinger uden behov for manuel tilpasning.
Adskillelsen af GNOME's visuelle designelementer i et separat bibliotek muliggør at udvikle nødvendige ændringer for GNOME uafhængigt af GTK, hvilket giver GTK-udviklere mulighed for at fokusere på de grundlæggende aspekter, mens GNOME-udviklere hurtigere og mere fleksibelt kan fremme de ændringer i stiludsmykningen, de har brug for, uden at berøre selve GTK. Alligevel skaber en sådan tilgang vanskeligheder for udviklere af tredjeparters brugergrænseflader baseret på GTK, som enten er nødt til at bruge libadwaita og tilpasse sig GNOME's særtræk og gentage dets design, eller udvikle deres egen variant af stilbiblioteket til GTK, i erkendelse af at GNOME-applikationer vil se heterogene ud i miljøer baseret på tredjeparts stilbiblioteker.
Det primære utilfredshed blandt udviklere af tredjeparts GUI'er vedrører problemer med at overstyre farverne på interfaceelementer, men udviklerne af libadwaita arbejder på at levere et API til fleksibel farvestyring, som vil være inkluderet i en af de kommende versioner. Blandt de uløste problemer nævnes også korrekt funktion af gestusstyringswidgets kun på touchskærme — for touchpads vil korrekt funktion af sådanne widgets blive sikret senere, da det kræver ændringer i GTK.
De primære ændringer i libadwaita sammenlignet med libhandy:
- Et helt redesigned sæt af stilarter. Det tema, der anvendes i GNOME, Adwaita, er adskilt fra GTK og moderniseret, mens det gamle tema er fastsat i GTK under navnet "Default". Blandt de mest iøjnefaldende forskelle mellem libadwaita og temaet "Default" er ændringen i udformningen af vinduers overskrifter.

- Mekanismerne til at binde farver til elementer og skifte farver under applikationens drift er ændret (problemerne skyldes, at libadwaita er overgået til SCSS, som kræver genbygning for at ændre farven). For at ændre farverne på elementer, som for eksempel kræves i GNOME Web for at indikere skift til privat browsing, er der anvendt en metode foreslået i elementary OS, som er baseret på at definere en fast liste af navngivne farver gennem "@define-color". Samtidig beregnes farverne for mange interfaceelementer nu i forhold til basisteksten og ændres automatisk, hvilket forhindrer applikationer i at kontrollere farveskemaet fuldstændigt (udviklerne arbejder på at løse denne begrænsning).


- Kvaliteten af visningen er forbedret ved brug af mørke temaer takket være en mere kontrastfuld fremhævelse af elementer. Accentfarven er blevet mere lysende, og der er tilføjet endnu en farve til fremhævelse, som kan ændre sig for mørke og lyse temaer.


- En stor mængde nye stilklasser er blevet tilføjet til brug i applikationer. For eksempel, " .pill " til store rundede knapper, mulighed for brug af " .flat " i GtkHeaderBar, " .accent " til at sætte accentfarven i etiketter, " .numeric " til tabeltypografi, " .card " til at bruge baggrund og skygge som i lister.

- Store monolitiske SCSS-filer er blevet opdelt i en samling af mindre stilfiler.
- API til at indstille mørkt tema og høj kontrast-tilstand er blevet tilføjet.

- Dokumentationen er blevet revideret, og værktøjet gi-docgen bruges nu til at generere den.

- API til animation er blevet tilføjet, som kan bruges til at skabe overgange mellem tilstande samt til at lave fjederanimationer.

- Muligheden for at vise label med antal ulæste meddelelser er blevet tilføjet til faner baseret på AdwViewSwitcher.

- Klassen AdwApplication (underklasse af GtkApplication) er blevet tilføjet til automatisk initialization af Libadwaita og indlæsning af stilarter.
- Der er tilføjet en samling af widgets til at forenkle almindelige opgaver: AdwWindowTitle til at indstille vinduets titel, AdwBin til at forenkle oprettelsen af underklasser, AdwSplitButton til kombinationsknapper, AdwButtonContent til knapper med ikon og label.
- API er blevet renset.
Kilde: opennet.ru










