Разработчики десктоп окружения Budgie приняли решение уйти от использования библиотеки GTK в пользу библиотек EFL (Enlightenment Foundation Library), развиваемых проектом Enlightenment. Результаты миграции будут предложены в выпуске Budgie 11. Примечательно , что это не первая попытка ухода от использования GTK – в 2017 году проект уже принимал решение о переходе на Qt, но позднее пересмотрел планы, в надежде, что в GTK4 ситуация изменится.
К сожалению GTK4 не оправдал ожиданий разработчиков из-за продолжения полной ориентации только на потребности проекта GNOME, разработчики которого не прислушиваются к мнению альтернативных проектов и не желают учитывать их потребности. Основным стимулом для ухода от применения GTK послужили планы GNOME по изменению работы с темами оформления, которые затрудняют создание собственных вариантов оформления в сторонних проектах. В частности, стиль интерфейса платформы обеспечивается библиотекой libadwaitа, которая привязана к теме оформления Adwaita.
Создатели сторонних окружений, не желающих полностью повторять интерфейс GNOME, должны подготовить свои библиотеки для обработки стиля, но в этом случае возникает разнобой в оформлении приложений, использующих альтернативную библиотеку и библиотеку темы платформы. Штатных средств для добавления дополнительных возможностей в libadwaitа нет, а попытки добавить API Recoloring, который позволил бы легко менять цвета в приложениях, не удалось согласовать из-за опасений, что отличные от Adwaita темы могут негативно повлиять на качество приложений для GNOME и усложнить анализ проблем у пользователей. Таким образом, разработчики альтернативных рабочих столов оказались привязаны к теме Adwaita.
Из особенностей GTK4, которые вызывают недовольство у разработчиков Budgie, также выделяется исключение возможности изменения некоторых виджетов через создание субклассов, перевод в разряд устаревших API X11, не сочетаемых с Wayland (например, в Budgie вызовы GdkScreen и GdkX11Screen использовались для определение подключения и изменения конфигурации мониторов), проблемы с прокруткой в виджете GtkListView и пропадание возможности обработать события мыши и клавиатуры в GtkPopovers, если окно не в фокусе.
Взвесив все плюсы и минусы перехода на альтернативные тулкиты разработчики пришли к выводу, что наиболее оптимальным является переход проекта на использование библиотек EFL. Переход на Qt признан проблематичным из-за завязки данной библиотеки на C++ и неопределённости в будущей лицензионной политике. Большая часть кода Budgie написана на языке Vala, но в качестве вариантов для миграции допускалось использование тулкита на Си или Rust.
Что касается дистрибутива Solus, то проектом будет продолжено формирование альтернативной сборки на основе GNOME, но данная сборка будет помечена как некурируемая проектом и выделена в отдельную секцию на странице загрузки. После выхода Budgie 11 разработчики оценят его возможности по сравнению с GNOME Shell и примут решение продолжить формирование сборки c GNOME или прекратить, предоставив инструменты для миграции на сборку с Budgie 11. В сборке Solus с рабочим столом Budgie 11 планируется пересмотреть состав приложений, заменив приложения GNOME на аналоги, в том числе разработанные внутри проекта. Например, планируется разработать собственный центр установки приложений.
Напомним, что рабочий стол Budgie предлагает собственную реализацию оболочки GNOME Shell, панели, апплетов и системы вывода уведомлений. Для управления окнами используется оконный менеджер Budgie Window Manager (BWM), являющийся расширенной модификацией базового плагина Mutter. Основу Budgie составляет панель, близкая по организации работы к классическим панелям рабочего стола. Все элементы панели являются апплетами, что позволяет гибко настраивать состав, менять размещение и заменять реализации основных элементов панели на свой вкус. Среди доступных апплетов можно отметить классическое меню приложений, систему переключения задач, область со списком открытых окон, просмотр виртуальных рабочих столов, индикатор управления питанием, апплет управления уровнем громкости, индикатор состояния системы и часы.