Das GNOME-Projekt hat die erste stabile Version der Libadwaita-Bibliothek veröffentlicht, die eine Reihe von Komponenten fĂŒr die Gestaltung der BenutzeroberflĂ€che umfasst, die den GNOME-HIG (Human Interface Guidelines) entsprechen. Die Bibliothek enthĂ€lt vorgefertigte Widgets und Objekte zur Erstellung von Anwendungen, die dem allgemeinen GNOME-Stil entsprechen und deren BenutzeroberflĂ€che sich dynamisch an Bildschirme jeder GröĂe anpassen kann. Der Code der Bibliothek ist in der Programmiersprache C geschrieben und steht unter der Lizenz LGPL 2.1+.

Die libadwaita-Bibliothek wird in Kombination mit GTK4 verwendet und umfasst die in GNOME verwendeten Adwaita-Designkomponenten, die aus GTK in eine separate Bibliothek ausgelagert wurden. Der Code von libadwaita basiert auf der libhandy-Bibliothek und ist als Nachfolger dieser Bibliothek positioniert, die ursprĂŒnglich zur Erstellung von responsiven Schnittstellen auf mobilen Plattformen mit GNOME-Technologien entwickelt wurde und in der GNOME-Umgebung Phosh fĂŒr das Smartphone Librem 5 verfeinert wurde.
Die Bibliothek umfasst Standard-Widgets, die verschiedene Interface-Elemente abdecken, wie Listen, Panels, Bearbeitungsfelder, SchaltflĂ€chen, Tabs, Suchformulare, Dialogfenster usw. Die angebotenen Widgets ermöglichen die Erstellung vielseitiger OberflĂ€chen, die sowohl auf groĂen Bildschirmen von PCs und Laptops als auch auf kleinen Touchscreens von Smartphones harmonisch funktionieren. Die BenutzeroberflĂ€che von Anwendungen Ă€ndert sich dynamisch in AbhĂ€ngigkeit von der BildschirmgröĂe und den verfĂŒgbaren EingabegerĂ€ten. Die Bibliothek umfasst auch einen Satz von Adwaita-Stilen, die das Erscheinungsbild gemÀà den Empfehlungen von GNOME anpassen, ohne manuelle Anpassungen vornehmen zu mĂŒssen.
Die Auslagerung von GNOME-Gestaltungselementen in eine separate Bibliothek ermöglicht es, notwendige Ănderungen fĂŒr GNOME unabhĂ€ngig von GTK zu entwickeln, was den GTK-Entwicklern erlaubt, sich auf die grundlegenden Dinge zu konzentrieren, wĂ€hrend die GNOME-Entwickler die notwendigen Anpassungen des Designs schneller und flexibler vorantreiben können, ohne das GTK selbst zu beeintrĂ€chtigen. Dennoch bringt dieser Ansatz Schwierigkeiten fĂŒr Entwickler von Drittanbieter-BenutzeroberflĂ€chen auf Basis von GTK mit sich, die entweder libadwaita verwenden und sich an die GNOME-spezifischen Merkmale anpassen oder eine eigene Style-Bibliothek fĂŒr GTK entwickeln mĂŒssen, im Bewusstsein, dass GNOME-Anwendungen in Umgebungen auf Basis von Drittanbieter-Style-Bibliotheken inkonsistent aussehen.
Hauptbeschwerden der Entwickler von Drittanbietersoftware beziehen sich auf Probleme bei der Ăbersteuerung von Farben von BenutzeroberflĂ€chenelementen, aber die Entwickler von libadwaita arbeiten an der Bereitstellung einer API fĂŒr die flexible Steuerung von Farben, die in eine der nĂ€chsten Versionen aufgenommen wird. Unter den ungelösten Problemen wird auch die korrekte Funktion von Gestensteuerungs-Widgets nur auf Touchscreen-GerĂ€ten genannt â fĂŒr Touchpads wird die korrekte Funktion solcher Widgets spĂ€ter sichergestellt, da dies Ănderungen in GTK erfordert.
Die wichtigsten Ănderungen in libadwaita im Vergleich zu libhandy:
- VollstĂ€ndig ĂŒberarbeitetes Styleset. Das in GNOME verwendete Adwaita-Design wurde aus GTK herausgelöst und modernisiert, wĂ€hrend das alte Design unter dem Namen âDefaultâ in GTK beibehalten wurde. Zu den auffĂ€lligsten Unterschieden zwischen libadwaita und dem âDefaultâ-Design gehört die Ănderung des Erscheinungsbildes von FensterĂŒberschriften.

- Die Mechanismen zur Farbbindung an Elemente und zum Farbwechsel wĂ€hrend des Betriebs der Anwendung wurden geĂ€ndert (Probleme ergeben sich daraus, dass libadwaita auf SCSS umgestiegen ist, das eine Neubearbeitung zur FarbĂ€nderung erfordert). Um die Farben der Elemente zu Ă€ndern, was beispielsweise in GNOME Web zur Kennzeichnung des Inkognito-Modus erforderlich ist, wurde eine Methode verwendet, die in elementary OS vorgeschlagen wurde und auf der Festlegung einer festen Liste von benannten Farben durch â@define-colorâ basiert. Dabei werden die Farben vieler Interface-Elemente jetzt relativ zur Grundfarbe des Textes berechnet und Ă€ndern sich automatisch, was es den Anwendungen nicht ermöglicht, das Farbschema vollstĂ€ndig zu kontrollieren (die Entwickler arbeiten daran, diese EinschrĂ€nkung zu beseitigen).


- Die AnzeigequalitĂ€t wurde durch die Verwendung dunkler Designs durch eine kontrastreichere Hervorhebung von Elementen erhöht. Die Akzentfarbe (accent) wurde heller gestaltet, zudem wurde eine weitere Farbe zur Hervorhebung hinzugefĂŒgt, die je nach dunklem oder hellem Design variieren kann.


- Eine groĂe Anzahl neuer Style-Klassen fĂŒr die Verwendung in Anwendungen wurde hinzugefĂŒgt. Zum Beispiel â.pillâ fĂŒr groĂe, abgerundete Tasten, die Möglichkeit, â.flatâ in GtkHeaderBar zu verwenden, â.accentâ zum Festlegen der Akzentfarbe in Labels, â.numericâ fĂŒr tabellarische Typografie, sowie â.cardâ zur Verwendung von Hintergrund und Schatten wie in Listen.

- GroĂe monolithische SCSS-Dateien wurden in eine Sammlung kleiner Stil-Dateien aufgeteilt.
- Eine API zur Anpassung des dunklen Designs und des Hochkontrastmodus wurde hinzugefĂŒgt.

- Die Dokumentation wurde ĂŒberarbeitet, und es wird nun das Werkzeug gi-docgen zur Generierung verwendet.

- 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 Federanimationen (spring animation) verwendet werden kann.

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

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










