Projekt GNOME vydal první stabilní verzi knihovny Libadwaita, která zahrnuje sadu komponent pro stylizaci uživatelského rozhraní, odpovídající doporučením GNOME HIG (Human Interface Guidelines). Knihovna obsahuje hotové widgety a objekty pro tvorbu aplikací, které odpovídají celkovému stylu GNOME, přičemž jejich rozhraní se může adaptivně přizpůsobovat obrazovkám jakékoliv velikosti. Kód knihovny je napsán v jazyce C a je distribuován pod licencí LGPL 2.1+.

Knihovna libadwaita se používá ve spojení s GTK4 a obsahuje komponenty používané v GNOME tématu Adwaita, které byly vyčleněny z GTK do samostatné knihovny. Kód libadwaita je založen na knihovně libhandy a je pozicionován jako náhrada za tuto knihovnu, která byla původně vytvořena pro vývoj adaptivního rozhraní na mobilních platformách založených na technologiích GNOME, a byla zdokonalena v GNOME prostředí Phosh pro smartphone Librem 5.
Knihovna obsahuje standardní widgety pokrývající různé prvky rozhraní, jako jsou seznamy, panely, editační bloky, tlačítka, záložky, vyhledávací formuláře, dialogová okna atd. Navrhované widgety umožňují vytvářet univerzální rozhraní, která přirozeně fungují jak na velkých obrazovkách PC a notebooků, tak na malých dotykových obrazovkách smartphonů. Rozhraní aplikací se dynamicky mění v závislosti na velikosti obrazovky a dostupných vstupních zařízeních. Knihovna také zahrnuje sadu stylů Adwaita, které přizpůsobují vzhled v souladu s doporučeními GNOME, aniž by byla potřeba manuální adaptace.
Vyčlenění prvků vizuálního stylingu GNOME do samostatné knihovny umožňuje vyvíjet potřebné změny pro GNOME odděleně od GTK, což dává vývojářům GTK možnost soustředit se na základní věci, zatímco vývojáři GNOME mohou rychleji a flexibilněji prosazovat potřebné změny ve stylizaci bez ovlivnění samotného GTK. Nicméně takový přístup vytváří potíže pro vývojáře alternativních uživatelských prostředí založených na GTK, kteří se musí buď přizpůsobit libadwaita a opakovat jeho styling, nebo vyvinout vlastní variantu knihovny stylů pro GTK, smířeni s tím, že aplikace GNOME budou vypadat nejednotně v prostředích založených na alternativních stylových knihovnách.
Hlavní nespokojenost vývojářů různých prostředí se týká problémů s přepisováním barev prvků rozhraní, ale vývojáři libadwaita pracují na poskytnutí API pro flexibilní správu barev, které bude součástí jednoho z příštích vydání. Mezi nevyřešené problémy se také uvádí správná funkce widgetů pro ovládání gest pouze na dotykových obrazovkách - pro touchpady bude správná funkce takových widgetů zajištěna později, neboť vyžaduje změny v GTK.
Hlavní změny v libadwaita oproti libhandy:
- Kompletně přepracovaný stylový set. Používaná téma Adwaita v GNOME byla vyjmuta z GTK a modernizována, zatímco stará téma je nyní zachována v GTK pod názvem „Default“. Mezi nejvýznamnějšími rozdíly libadwaita a tématem „Default“ je změna vzhledu okenních záhlaví.

- Změněny byly mechanizmy přiřazování barev k prvkům a přepínání barev během běhu aplikace (problémy souvisejí s tím, že libadwaita přešel na SCSS, který vyžaduje překompilaci pro změnu barvy). Pro změnu barev prvků, což je například potřeba v GNOME Web pro označení přechodu do režimu inkognito, byla použita metoda navržená v elementary OS, která je založena na definování pevného seznamu pojmenovaných barev prostřednictvím „@define-color“. Mnoho barev uživatelského rozhraní se nyní počítá relativně k základní barvě textu a mění se automaticky, což neumožňuje aplikacím plně kontrolovat barevné schéma (vývojáři pracují na odstranění tohoto omezení).


- Byla zvýšena kvalita zobrazení při používání tmavých témat vzhledu díky výraznějšímu zvýraznění prvků. Akcentní barva byla učiněna jasnější a byla přidána další barva pro zvýraznění, která se může měnit mezi tmavými a světlými tématy.


- Bylo přidáno velké množství nových stylových tříd pro použití v aplikacích. Například „.pill“ pro velká zaoblená tlačítka, možnost použití „.flat“ v GtkHeaderBar, „.accent“ pro nastavení akcentační barvy ve štítcích, „.numeric“ pro tabulkovou typografii, „.card“ pro použití pozadí a stínu jako v seznamech.

- Velké monolitické soubory SCSS byly rozděleny na kolekci malých souborů se styly.
- Bylo přidáno API pro nastavení tmavého stylu vzhledu a režimu vysokého kontrastu.

- Dokumentace byla přepracována, pro její generaci je nyní používán nástroj gi-docgen.

- Bylo přidáno API pro animaci, které lze použít k vytvoření přechodných efektů při změně jednoho stavu na druhý, stejně jako k vytvoření pružinových efektů (spring animation).

- Pro karty založené na AdwViewSwitcher byla přidána možnost zobrazení štítků s počtem nepřečtených oznámení.

- Byla přidána třída AdwApplication (podtřída GtkApplication) pro automatickou inicializaci Libadwaita a načítání stylů.
- Byla přidána sbírka widgetů pro usnadnění typických operací: AdwWindowTitle pro nastavení názvu okna, AdwBin pro zjednodušení vytváření podtříd, AdwSplitButton pro kombinované tlačítka, AdwButtonContent pro tlačítka s ikonou a štítkem.
- Bylo provedeno čištění API.
Zdroj: opennet.ru










