One of the leaders of the Solus Linux project, Joshua Strobl, announced his intention to abandon GTK in the development of both future versions of Budgie and the entire ecosystem of applications in Solus. On his blog, he made a number of criticisms of the current state and development plans of GTK, as well as the GNOME development philosophy.
According to him, the widespread implantation of Adwaita as the only true desktop theme and the accompanying removal of part of the API for various kinds of customization has added headaches to developers who maintain the GNOME stack in distributions or integrate their applications into it. All suggested options for customizing the look and feel of GTK-based applications and related libraries are rejected, and members of the GNOME team are insolently rude in response in tickets and social media.
Joshua also complains that GTK4, released a little less than a year ago, slightly complicated the code for working with widgets by prohibiting direct inheritance. But he sees a much more important problem with the abolition of the X11 API, in particular for obtaining the configuration of the connected monitors. Moving towards full support for Wayland, GNOME removed the X server polling functionality, instructing the developer to write their own interfaces to access X11 directly (or to APIs of other operating systems, if the application turned out to be cross-platform).
While working functionality is being removed, many known bugs in GNOME have not been fixed for months or years (in particular, the author cites an example of a scrolling bug in
GtkListViewand with switching to another window when the drop-down list is open in
GtkPopover). At the same time, Joshua describes it in the context of his own experience of writing using GTK his audio player Koto.
The release of GTK 4 did not live up to the expectations of the authors of Solus, who were hoping for a number of promised changes in libhandy, which in the end were never added. And the roadmap to GTK 5 predicts even more tightening of the screws in terms of customization and a general regression both in UX and for using the library in third-party applications. Joshua bluntly states that using GTK 4 and up in development is a shot in the foot.
As a result of these reflections, the leaders of the Solus project decided to abandon the use of GTK in Budgie and generally minimize the presence of GNOME in their user environment, moving on to choosing one of the following GUI toolkits:
- EFL (library at the core of the Enlightment Desktop);
- Qt ;
- iced (a cross-platform GUI library for Rust).
In the case of Qt, the Solus developers do not want to write C ++ code, and besides, they are confused by the “commercial license” of Qt and the unpleasant aftertaste. iced is at an early stage of development and many useful things will have to be written from scratch, but there are no resources for this.
It remains the EFL, which was eventually chosen. Gradually, it is planned to write their own widgets in EFL, and then the main desktop applications, or adapt existing ones, if possible, not related to GNOME.
As for the distribution kit, the GNOME version will be compiled into a separate image, and minimal attention will be paid to it, only basic performance will be provided. Budgie 11 won’t have any GTK dependencies.