The developers of the Budgie desktop environment have made the decision to move away from the GTK library in favor of the EFL Enlightenment Foundation Library ( ), developed by the Enlightenment project. The results of the migration will be offered in Budgie 11. Notably, this is not the first attempt away from GTK – in 2017 the project already made a to move decision to switch to Qt, but later revised plans in the hope that the situation would change in GTK4.
Unfortunately, GTK4 did not live up to the expectations of the developers due to the continued focus only on the needs of the GNOME project, the developers of which do not listen to the opinions of alternative projects and do not want to take their needs into account. The main incentive to move away from GTK was GNOME’s plans to change the way it works with skins, which make it difficult to create custom skins in third-party projects. In particular, the platform interface style is provided by the libadwaita library, which is tied to the Adwaita skin.
Developers of third-party environments who do not want to completely replicate the GNOME interface must prepare their libraries for styling, but in this case, there is a discrepancy in the design of applications using the alternative library and the platform theme library. There are no standard means to add additional features to libadwait, and attempts to add the Recoloring API that would make it easy to change colors in applications have failed to agree due to concerns that themes other than Adwaita could negatively affect the quality of applications for GNOME and complicate problem analysis. from users. Thus, the developers of alternative desktops became attached to the Adwaita theme.
Of the GTK4 features that displease the Budgie developers, the exclusion of the possibility of changing some widgets through the creation of subclasses, transferring to the category of outdated X11 APIs that are not compatible with Wayland (for example, in Budgie calls GdkScreen and GdkX11Screen were used to determine the connection and change the configuration of monitors ), problems with scrolling in the GtkListView widget, and the loss of ability to handle mouse and keyboard events in GtkPopovers if the window is out of focus.
Having weighed all the pros and cons of switching to alternative toolkits, the developers came to the conclusion that the most optimal is the transition of the project to using the EFL libraries. The transition to Qt was recognized as problematic due to the binding of this library in C ++ and uncertainties in the future licensing policy. Most of Budgie’s code is written in Vala, but C or Rust toolkits were allowed as migration options.
As for the Solus distribution, the project will continue to form an alternative assembly based on GNOME, but this assembly will be marked as uncaged by the project and highlighted in a separate section on the download page. After the release of Budgie 11, developers will evaluate its capabilities compared to GNOME Shell and will decide to continue building the build with GNOME or discontinue by providing tools for migrating to the build from Budgie 11. In the Solus build with the Budgie 11 desktop, it is planned to revise the composition of applications, replacing the GNOME applications for analogues, including those developed within the project. For example, it is planned to develop its own application installation center.
As a reminder, the Budgie desktop offers its own implementation of the GNOME Shell, panels, applets, and notification system. To manage windows, the Budgie Window Manager (BWM) window manager is used, which is an extended modification of the basic Mutter plugin. Budgie is based on a panel that is similar in organization of work to the classic desktop panels. All panel elements are applets, which allows you to flexibly customize the composition, change the placement and replace the implementations of the main panel elements to your liking. The available applets include the classic application menu, task switching system, area with a list of open windows, viewing virtual desktops, power management indicator, volume control applet, system status indicator and clock.