Proiectul GNOME a publicat prima versiune stabilă a bibliotecii Libadwaita, care include un set de componente pentru stylingul interfeței utilizatorului, conform recomandărilor GNOME HIG (Human Interface Guidelines). Biblioteca include widgeturi și obiecte gata pregătite pentru dezvoltarea aplicațiilor, care respectă stilul general GNOME, interfața cărora se poate adapta la ecrane de orice dimensiune. Codul bibliotecii este scris în limbajul C și este distribuit sub licența LGPL 2.1+.

Biblioteca libadwaita este utilizată împreună cu GTK4 și include componentele temei de design Adwaita, folosite în GNOME, care au fost extrase din GTK într-o bibliotecă separată. Codul libadwaita se bazează pe biblioteca libhandy și se poziționează ca un înlocuitor pentru această bibliotecă, care a fost inițial creată pentru dezvoltarea unei interfețe adaptative pe platforme mobile bazate pe tehnologiile GNOME, și a fost rafinată în mediul GNOME Phosh pentru smartphone-ul Librem 5.
Biblioteca include widgeturi standard care acoperă diverse elemente ale interfeței, cum ar fi listele, panourile, blocurile de editare, butoanele, tab-urile, formularele de căutare, feronurile de dialog etc. Widgeturile propuse permit crearea de interfețe universale, care funcționează organic atât pe ecrane mari de PC-uri și laptopuri, cât și pe ecrane mici tactile de smartphone-uri. Interfața aplicațiilor se schimbă dinamic în funcție de dimensiunea ecranului și de dispozitivele de intrare disponibile. Biblioteca include, de asemenea, un set de stiluri Adwaita, care aduce aspectul în conformitate cu recomandările GNOME, fără a necesita adaptări manuale.
Separarea elementelor de design GNOME într-o bibliotecă distinctă permite dezvoltarea modificărilor necesare pentru GNOME separat de GTK, ceea ce dă posibilitatea dezvoltatorilor GTK să se concentreze pe aspectele de bază, iar dezvoltatorilor GNOME să promoveze mai repede și mai flexibil modificările necesare stilizării, fără a afecta GTK în sine. Cu toate acestea, o astfel de abordare creează dificultăți pentru dezvoltatorii mediilor de utilizare terță parte bazate pe GTK, care sunt nevoiți să folosească fie libadwaita și să se adapteze la specificitățile GNOME, repetând stilizarea sa, fie să dezvolte propriul lor variant de bibliotecă de stiluri pentru GTK, acceptând că aplicațiile GNOME vor arăta inhomogen în medii bazate pe biblioteci de stiluri terțe.
Principala nemulțumire a dezvoltatorilor mediilor terțe se referă la problemele de redefinire a culorilor elementelor interfeței, dar dezvoltatorii libadwaita lucrează la furnizarea unui API pentru gestionarea flexibilă a culorilor, care va fi inclus în una dintre următoarele versiuni. Printre problemele nerezolvate se numără și funcționarea corectă a widgeturilor de control prin gesturi doar pe ecranele tactile — pentru trackpad-uri, funcționarea corectă a acestor widgeturi va fi asigurată ulterior, deoarece necesită modificări în GTK.
Principalele modificări în libadwaita comparativ cu libhandy:
- Un set complet de stiluri a fost reproiectat. Tema de design Adwaita folosită în GNOME a fost scoasă din GTK și modernizată, iar vechea temă de design a fost fixată în GTK sub numele „Default”. Dintre cele mai notabile diferențe, libadwaita de tema „Default” se observă schimbarea aspectului titlurilor ferestrelor.

- Mecanismele de legare a culorilor la elemente și schimbarea culorilor în timpul funcționării aplicației au fost modificate (problemele sunt legate de faptul că libadwaita a trecut la SCSS, care necesită recompilare pentru a schimba culoarea). Pentru a schimba culorile elementelor, ceea ce este necesar în GNOME Web pentru a marca trecerea în modul incognito, a fost aplicată metoda propusă în elementary OS și bazată pe definirea unei liste fixe de culori denumite prin „@define-color”. În acest fel, culorile multor elemente ale interfeței sunt acum calculate în raport cu culoarea de bază a textului și se schimbă automat, ceea ce nu permite aplicațiilor să controleze complet schema de culori (dezvoltatorii lucrează la eliminarea acestei restricții).


- Calitatea afișării a fost îmbunătățită atunci când se utilizează teme întunecate prin evidențierea mai contrastantă a elementelor. Culoarea de accent a fost făcută mai strălucitoare, iar o altă culoare pentru evidențiere a fost adăugată, care se poate schimba pentru teme întunecate și deschise.


- O gamă largă de clase de stiluri noi a fost adăugată pentru utilizare în aplicații. De exemplu, „.pill” pentru butoane mari rotunjite, posibilitatea de a utiliza „.flat” în GtkHeaderBar, „.accent” pentru setarea culorii de accent în etichete, „.numeric” pentru tipografia tabelară, „.card” pentru utilizarea fundalului și umbrelor ca în liste.

- Fișierele SCSS mari și monolitice au fost împărțite într-o colecție de fișiere mici cu stiluri.
- A fost adăugat un API pentru personalizarea stilului întunecat și a modului de înaltă contrast.

- Documentația a fost reproiectată, fiind acum generată cu ajutorul instrumentului gi-docgen.

- A fost adăugat un API pentru animație, care poate fi utilizat pentru a crea efecte de tranziție atunci când se schimbă o stare cu alta, precum și pentru a crea efecte de tip spring animation.

- Pentru filele bazate pe AdwViewSwitcher, a fost adăugată posibilitatea de a afișa etichete cu numărul de notificări neîntâmpinate.

- A fost adăugat clasa AdwApplication (subclasă a GtkApplication) pentru inițializarea automată a Libadwaita și încărcarea stilurilor.
- A fost adăugată o selecție de widget-uri pentru simplificarea operațiunilor tipice: AdwWindowTitle pentru setarea titlului feronairului, AdwBin pentru simplificarea creării subclaselor, AdwSplitButton pentru butoane combinate, AdwButtonContent pentru butoane cu pictogramă și etichetă.
- A fost efectuată curățarea API-ului.
Sursa: opennet.ro










