Das GNOME-Projekt hat die erste stabile Version der Bibliothek Libadwaita veröffentlicht, die eine Sammlung von Komponenten zur Gestaltung von BenutzeroberflĂ€chen enthĂ€lt, die den Empfehlungen der GNOME HIG (Human Interface Guidelines) entsprechen. Die Bibliothek umfasst fertige Widgets und Objekte zur Erstellung von Anwendungen, die den einheitlichen GNOME-Stil reprĂ€sentieren und deren BenutzeroberflĂ€chen sich an Bildschirme jeder GröĂe anpassen können. Der Code der Bibliothek ist in C geschrieben und wird unter der LGPL 2.1+ Lizenz veröffentlicht.

Die Bibliothek libadwaita wird in Kombination mit GTK4 verwendet und enthĂ€lt die Komponenten des in GNOME verwendeten Adwaita-Themen, die aus GTK in eine separate Bibliothek ausgelagert wurden. Der Code von libadwaita basiert auf der Bibliothek libhandy und wird als Nachfolger dieser Bibliothek positioniert, die ursprĂŒnglich zur Erstellung adaptiver BenutzeroberflĂ€chen auf mobilen Plattformen mit GNOME-Technologien entwickelt wurde und in der GNOME-Umgebung Phosh fĂŒr das Smartphone Librem 5 verfeinert wurde.
Die Bibliothek enthĂ€lt standardisierte Widgets, die verschiedene Elemente der BenutzeroberflĂ€che abdecken, wie Listen, Panels, Bearbeitungsblöcke, Buttons, Tabs, Suchformulare, Dialogfenster usw. Die angebotenen Widgets ermöglichen die Erstellung universeller OberflĂ€chen, die sowohl auf groĂen Bildschirmen von PCs und Laptops als auch auf kleinen Touchscreens von Smartphones gleichmĂ€Ăig funktionieren. Die BenutzeroberflĂ€che der Anwendungen passt sich dynamisch an die BildschirmgröĂe und die verfĂŒgbaren EingabegerĂ€te an. Die Bibliothek umfasst auĂerdem ein Set von Adwaita-Stilen, die das Aussehen gemÀà den Empfehlungen von GNOME anpassen, ohne dass eine manuelle Anpassung erforderlich ist.
Die Auslagerung der GNOME-Design-Elemente in eine separate Bibliothek ermöglicht es, notwendige Ănderungen fĂŒr GNOME unabhĂ€ngig von GTK zu entwickeln. Dies gibt GTK-Entwicklern die Möglichkeit, sich auf die Kernaspekte zu konzentrieren, wĂ€hrend GNOME-Entwickler notwendige Anpassungen im Design schneller und flexibler vorantreiben können, ohne GTK selbst zu beeinflussen. Dennoch bringt dieser Ansatz Herausforderungen fĂŒr Entwickler von Drittanbieter-Desktop-Umgebungen mit sich, die auf GTK basieren. Sie sind gezwungen, entweder libadwaita zu nutzen und sich an die Besonderheiten von GNOME anzupassen, wodurch sie dessen Design replizieren, oder eine eigene Stilbibliothek fĂŒr GTK zu entwickeln, wobei sie akzeptieren mĂŒssen, dass GNOME-Anwendungen in Umgebungen mit alternativen Stilbibliotheken inkonsistent aussehen werden.
Das Hauptanliegen der Entwickler von Drittanbieterumgebungen betrifft die Probleme mit der Neudefinition der Farben von BenutzeroberflĂ€chenelementen. Die Entwickler von libadwaita arbeiten jedoch an der Bereitstellung einer API fĂŒr eine flexible Farbverwaltung, die in einer der nĂ€chsten Versionen enthalten sein wird. Unter den ungelösten Problemen wird auch die ordnungsgemĂ€Ăe Funktionsweise von Gestensteuerungs-Widgets auf Touchscreens genannt â fĂŒr Touchpads wird diese ordnungsgemĂ€Ăe FunktionalitĂ€t spĂ€ter umgesetzt, da Ănderungen an GTK erforderlich sind.
Die wichtigsten Ănderungen in libadwaita im Vergleich zu libhandy:
- Ein vollstĂ€ndig ĂŒberarbeitetes Styleset. Das in GNOME verwendete Adwaita-Design wurde aus GTK herausgenommen und modernisiert, wĂ€hrend das alte Design in GTK unter dem Namen âDefaultâ festgelegt wurde. Zu den auffĂ€lligsten Unterschieden zwischen libadwaita und dem Design âDefaultâ gehört die Ănderung der FensterĂŒberschriften.

- Die Mechanismen zur Bindung von Farben an Elemente und zum Wechseln von Farben wĂ€hrend der Anwendung wurden geĂ€ndert (die Probleme hĂ€ngen damit zusammen, dass libadwaita auf SCSS umgestellt hat, was eine NeuĂŒbersetzung zum Austausch von Farben erfordert). Um die Farben von Elementen zu Ă€ndern, was beispielsweise in GNOME Web erforderlich ist, um den Wechsel in den Inkognito-Modus zu markieren, wurde eine Methode angewendet, die in elementary OS vorgeschlagen wurde und auf der Festlegung einer festen Liste von benannten Farben ĂŒber â@define-colorâ basiert. Dabei werden die Farben vieler Benutzerschnittstellenelemente jetzt relativ zur Basisfarbe des Textes berechnet und automatisch geĂ€ndert, was es den Anwendungen nicht ermöglicht, das Farbschema vollstĂ€ndig zu steuern (die Entwickler arbeiten daran, diese EinschrĂ€nkung zu beheben).


- Die AnzeigequalitĂ€t bei der Verwendung von dunklen Themes wurde durch eine kontrastreichere Hervorhebung von Elementen verbessert. Die Akzentfarbe wurde heller gestaltet, und es wurde eine weitere Farbe zur Hervorhebung hinzugefĂŒgt, die fĂŒr dunkle und helle Themes variieren kann.


- Eine groĂe Anzahl neuer Stylesheet-Klassen wurde fĂŒr die Nutzung in Anwendungen hinzugefĂŒgt. Zum Beispiel â.pillâ fĂŒr groĂe, abgerundete SchaltflĂ€chen, die Verwendung von â.flatâ in GtkHeaderBar, â.accentâ zur Festlegung der Akzentfarbe in Labels, â.numericâ fĂŒr tabellarische Typografie und â.cardâ fĂŒr die Verwendung von Hintergrund und Schatten in Listen.

- GroĂe monolithische SCSS-Dateien wurden in eine Sammlung kleinerer Stylesheet-Dateien aufgeteilt.
- Eine API zur Anpassung des Dunkelmodus und des Hochkontrastmodus wurde hinzugefĂŒgt.

- Die Dokumentation wurde ĂŒberarbeitet, fĂŒr deren Generierung nun das Tool gi-docgen verwendet wird.

- Eine API fĂŒr Animationen wurde hinzugefĂŒgt, die zur Erstellung von Ăbergangseffekten beim Wechsel von einem Zustand zu einem anderen sowie zur Erstellung von federnden Effekten (spring animation) verwendet werden kann.

- FĂŒr Tabs basierend auf AdwViewSwitcher wurde die Möglichkeit hinzugefĂŒgt, Labels mit der Anzahl ungelesener Benachrichtigungen anzuzeigen.

- Die Klasse AdwApplication (Unterklasse von GtkApplication) wurde hinzugefĂŒgt, um die automatische Initialisierung von Libadwaita und das Laden der Styles zu ermöglichen.
- Eine Sammlung von Widgets wurde hinzugefĂŒgt, um gĂ€ngige Operationen zu erleichtern: AdwWindowTitle zur Festlegung des Fenstertitels, AdwBin zur Vereinfachung der Erstellung von Unterklassen, AdwSplitButton fĂŒr kombinierte SchaltflĂ€chen und AdwButtonContent fĂŒr SchaltflĂ€chen mit Symbol und Beschriftung.
- Die API wurde bereinigt.
Quelle: opennet.ru










