
January 6, 2025
#2024
Our main epic for 2024 was centered around the development of our Wayland support for Budgie Desktop 10.x. While it was not originally planned for the Budgie 10 series, we made the decision in late 2023 after evaluating the direction of the rest of the ecosystem and our expectations that X.org Server is on its way out sooner rather than later (quite possibly while we develop Budgie 11). A focus on delivering a Budgie 10 series on Wayland therefore would:#January
We released Budgie 10.9! This release series introduced a new redesigned Bluetooth applet and was the first release series that began integrating libxfce4windowing, "an abstraction library that attempts to present windowing concepts (screens, toplevel windows, workspaces, etc.) in a windowing-system-independent manner." For Budgie 10.9, we ported over the following to libxfce4windowing, bearing in mind this was all still running under X11 and untested on a Wayland session:#February
We followed up on 10.9 with a 10.9.1 bug fixes release in February and continued to track new libxfce4windowing releases, adjusting Budgie Desktop to ABI changes. David (fossfreedom) released Budgie Control Center 1.4.0, which removed online account functionality due to upstream changes being incompatible with GTK3, fixed SSH remote login, etc.#March
Evan (EbonJaeger) was focused on implementing our new windowing tracker as well as a massive refactor of IconTasklist, our applet which displays currently running applications with their app icons. The new windowing module is intended to wrap and extend our use of libxfce4windowing, making the code more reusable and easier to maintain, alongside merging a couple older classes / modules. Effectively this meant IconTasklist should support Wayland, however that remained untested until we got a functioning Wayland session running. Campbell worked on tearing control protocol callbacks in Magpie v1. For David and I, we were focused on distribution work with Ubuntu Budgie 24.04 and Fedora Budgie 40 respectively. Neal started an internal repo (now public) to centralize the Wayland session files of various compositors, starting off with a couple sessions (Magpie v1 and KWin) so I could start testing against them.#April
The IconTasklist refactoring pull request landed and some bugs squashed related to that. Campbell focused on fixing some segfaults in Magpie v1. David focused on distro matters with the release of Ubuntu Budgie 24.04. I began working on getting GTK Layer Shell integrated into budgie-panel so they would be real layer shell objects that could be positioned by the compositor. I started out by testing on top of the KWin-based session that Neal set up for me and while it looked hilarious, the initial bottom panel did get correctly positioned. If only the work ended there!

#May
Campbell got a head start on supporting what would become wlroots 0.18 in Magpie v1. Evan squashed some bugs related to windowing and making sure terminal-based applications show up again in Budgie Menu. I continued the development efforts related to layer shell support in the budgie panel code base. I spent a ton of time trying to get our existingBudgie.Popover code to work with layer shell, however as a result of how we were positioning these faux popovers (which were their own GtkWindows), that wasn't a viable option. So I rewrote all of it to use GtkPopovers, which we could use under Wayland since Popovers did not have window constraints nor the seat issues we had under X11.
I did some easy hacks to quickly get a usable session going, such as: disabling budgie-wm (the one that'd extend Magpie v0 / Mutter) and preventing budgie-session from creating the "fail whale" dialog which would sit on top of all our other windows (including the panel).
#June
I fixed a wide range of issues such as:

#July
My previously mentioned PR landed at the beginning on July. This properly marked the starting point of Budgie Desktop being Wayland-only, as using Budgie Desktopgit under X11 would effectively be broken due to all of the changes required for Wayland support.
Campbell implemented fractional scaling support in Magpie v1, improved handling of keyboard interactivity / focus, fixes for (sub-)surfaces, merged in his wlroots 0.18 work, and started implementing a new (currently) Budgie-specific keyboard shortcuts Wayland protocol.
Neal added a labwc session to our Wayland sessions and we began actively dogfooding under labwc instead of KWin, as it supports all the wlr Wayland protocols we need.
Surprisingly, IconTasklist did work to some degree, despite this being the first time we ever tested it on a Wayland session that supported all the required protocols. Window grouping was busted, however, we were getting icons, and apps would show up and get removed as they were opened and closed. So let's call it a draw?
David and the Ubuntu Budgie folks started looking into the Waylandizing of their Budgie Extras repo to make sure they were already off to the races before any work on our side was finalized. Great stuff!
#August
I began working on budgie-daemon v2. Budgie Daemon v2 is intended to serve as effectively the beating heart of Budgie 11, with some features / functionality applying to Budgie 10 as well. For the "minimum viable product" (MVP) for Budgie 10 Wayland support, it needed to support display configuration / configuration apply. This meant all the wiring related to wlr output management protocol, logic for applying configurations, DBus support to enable eventual communication between Budgie Control Center, and all the TOML-based configuration. This has all been quite the journey so far (August 2024 to the time of writing), but in terms of just the efforts in August, it was even more so as a learning exercise and experimentation with the protocol itself, C++, and some dabbling in Rust. The end result implementation I ended up going with is written in C++. I got end-to-end display configuration (TOML file parsing using toml11, getting all the outputs, applying configuration) working at the end of August.
#September
I progressed on my budgie-daemon v2 work in September with a focus on the DBus Server implementation leveraging sdbus-cpp, a high-level C++ abstraction library on top of sd-bus.
#October
David submitted a pull request to update Budgie Desktop to libxfce4windowing 4.19.8. Took a bit of time for us to get around to reviewing it as most of us on the team had distro-related responsibilities or were attending events (Evan with some Solus stack updates, David with Ubuntu 24.10 and attending Ubuntu Summit, myself with Fedora 41). Given all the bouncing between responsibilities and tasks, I didn't make much progress functionality-wise on budgie-daemon v2. I spent a considerable amount of time refactoring / actually organizing the codebase, implementing some display-oriented utilities to perform display changes, and started working on porting it off Meson and onto CMake + extra-cmake-modules.#November
David

#December
The holidays weren't stopping us from at least getting some work done. The end of the year was nearing, and we were trying to jam pack as much Wayland goodness as possible. Evan fixed window grouping in the IconTasklist under Wayland. I lived with it for months, but he couldn't tolerate it. Good on him honestly. David submitted a pull request that implements a new settings bridge between some of our settings key, gnome-settings-daemon, and labwc. Some of us have been using a cobbled together labwcrc.xml file to have functioning keyboard shortcuts (like pressing Meta for Budgie Menu, Meta+A for Raven applet view, etc.), but this one-way bridge eliminates all that manual work! Some examples of aspects of the experience that get bridged:
I want you to imagine your typical display configuration graphical software. You have rectangles, typically with labels in them describing the displays. At first, this is based off the current state of those heads (their position, resolution, refresh rate, adaptive sync, enabled / disabled, etc.). If you want to change the resolution and position of your monitors all in one go, you'd probably set their resolution so the rectangles change size, then move them around, then click apply. You're not changing the resolution, clicking apply, moving one monitor, clicking apply, moving another monitor, clicking apply.It is this sort of user experience that the system is intended to support. With Evan and David now testing out the daemon, I spent some time squashing some bugs they identified. Still more to be done on that front related to built-in displays.
#2024 In Retrospect
As you can see, there was a massive amount of work that happened over the course of 2024 towards our goal of moving to Wayland. As you may have noticed, we did not end up delivering Budgie 10.10 before end of year. As is the classic case of software development, some aspects of the experience have been proven to be trickier than anticipated, others requiring more work, some originally unscoped / undefined items needing to be worked on (labwc bridge as an example) to improve usability, and more. If we put it all into perspective though, we accomplished the massive goal of Budgie Desktop being daily-drivable on Wayland for a typical end user usecase. You are able to:#2025
Similar to our epics for last year, this year's are centered around Budgie 10 and 11.#First Epic: Ship Budgie 10.10
There are still some key areas that need improving or fixing before we can ship Budgie 10.10 to end users.#TODO
For items within the budgie-desktop repo itself, we have updated our 10.10 milestone with the related items. Applets Some applets need to be updated to reach complete or some degree of feature parity with their usage under the "legacy" X11 environment.Gnome.Languages and needs to be updated so keyboard layout changing via the applet works.Wnck.Tasklist. This work has already been started, but it needs to be completed.#Shipping
We are currently intent on shipping Budgie 10.10 within Q1 2025 (Jan-Mar), however as always we won't ship it unless we consider it ready (at least as ready as we can test). Budgie 10.10 will ship with the recommendation and default of using labwc, providing us more time to bake an excellent compositor that we can swap out at any time across Budgie 10 or 11! In case it wasn't clear to some readers, Budgie 10.10 will be Wayland-only. In git, it has been Wayland-only since July 2024. We will not support both X11 and Wayland. It will be too late for Fedora 42 and Ubuntu 25.04, so the current plan is:#Farewell, Budgie 10
With the release of Budgie 10.10, we will bid it farewell and move it to being in maintenance mode. We are committed to fixing Budgie 10 series at least until Budgie 11 is ready, so don't fret.#Second Epic: Budgie 11
After the dust has settled with Budgie 10.10, we will shift our focus towards Budgie 11. While we have already been working on some aspects of the experience that will already apply to Budgie 11, we have not yet started on "budgie-desktop" itself such as: porting some daemon v1 functionality to v2, windowing logic, panel, Raven, etc. I could list out all of the items we would need to get to but... it is a desktop environment. It is kind of everything! Make no mistake, we will show it off as we work on it and when we have something that you can start messing with, we will have a way for you to do that too. We are not going to say what toolkit we are using, we would rather just show you, or better yet you see it yourself on your own system. You can put two and two together though I am sure. :)#In Summary
Thank you to everyone that has contributed, in any form, to Budgie Desktop in 2024. Thank you to everyone that has contributed to Budgie 10 over the many years it has been around. It is time to wrap up this chapter and start writing a new one, with new projects we call friends and new opportunities for collaboration. All the best.Did you know that you can financially support the Buddies of Budgie project? Buddies of Budgie was founded to provide a home for Budgie Desktop and your financial contribution can go a long way to supporting our goals for development, providing opportunities for financial compensation, leveraging no-compromise Continuous Integration and Continuous Delivery systems for Budgie 11 development, and more.