The GNOME developers released the first stable version of the libadwaite library, which includes a set of components for designing user interfaces that follow the GNOME HIG (Human Interface Guidelines) guidelines.
The library includes ready-to-use widgets and objects for creating applications conforming to the general GNOME style, the interface of which can be adapted to any size screen.
The Libadwaite library is used in conjunction with GTK4 and includes GNOME theme components Adwaita that have been moved from GTK to a separate library.
The libadwait codea is based on the libhandy library and is positioned to replace this library, which was originally created to create a responsive interface on mobile platforms based on GNOME technologies and was refined in the Phosh GNOME environment for the Librem 5 smartphone.
The library iIncludes standard widgets that cover various elements of the interface, such as lists, panels, edit blocks, buttons, tabs, search forms, dialog boxes, etc. The proposed widgets make it possible to create universal interfaces that work organically both on large PC and laptop screens as well as on small smartphone touchscreens.
The application interface dynamically changes based on screen size and devices input available. The library also includes a set of Adwaita presets that align the appearance with GNOME guidelines, without the need for manual customization.
Moving GNOME images to a separate library allows changes required for GNOME to be developed separately from GTK, allowing GTK developers to focus on the basics and GNOME developers pushing the style changes they need more. fast and flexible without affecting GTK itself.
But nevertheless, this approach poses a challenge for developers of third-party GTK-based user environments that have to use libadwaita and adapt to GNOME specs and reinvent it or develop your own version of the GTK style library, resigning yourself to what GNOME applications will look like heterogeneous in environments based on third-party style libraries.
The main frustration for third-party environment developers relates to issues with overriding the colors of interface elements, but the libadwaita developers are working to provide an API for flexible color management, which will be part of a future version.
Among the unresolved issues, the correct operation of gesture control widgets only on touchscreens is also called; for touch panels, the correct operation of these widgets will be provided later, as it requires changes to the GTK.
The main changes in libadwaita compared to libhandy:
- The completely redesigned style set.
- Mechanisms for linking colors to elements and changing colors during application operation have been changed (the issues are related to the fact that libadwaita switched to SCSS, which requires reassembly to replace the color).
- Improved display quality when using dark themes due to a more contrasting item selection.
- Libhandy became a Libadwaite
- Added a large part of the new style classes for use in applications.
- Large monolithic SCSS files are divided into a collection of small style files.
API added to set dark style and high contrast mode.
- The documentation has been reworked and is now generated using the gi-docgen toolkit.
- Added an animation API that can be used to create transition effects when replacing one state with another, as well as to create spring animations.
- For AdwViewSwitcher-based tabs, the ability to display labels with the number of unseen notifications was added.
- Added AdwApplication class (subclass of GtkApplication) for automatic Libadwaita initialization and loading styles.
A selection of widgets has been added to simplify common operations:
- AdwWindowTitle for setting the window title, AdwBin for simplifying child subclassing, AdwSplitButton for combo buttons, AdwButtonContent for buttons with an icon and a label.
- API cleanup done.
Finally If you are interested in knowing more about it, you can check the details In the following link.