
February 1, 2026
#Budgie Desktop (10.10)
Focus this week was spent on final polish, fixes, and patch landing in preparation for the Budgie 10.10.1 release. Changes landed for:#Budgie 11
#magpie / "mirpie"
Solid progress was made over the last couple days on our Magpie compositor. I mentioned last week that the focus was going to be on integrating the Qt main loop into the compositor so that QObjects and Qt's event system could be leveraged, with subsequent integration with the KConfig library / framework from KDE for configuration. On Thursday, I managed to get that Qt integration working and as it typically goes, it was much simpler than expected. The Miral runner was put in its ownQThread, and I created a ProcessLauncher class for handling launching of processes while maintaining a reference to the parent "app" (in this case, Magpie itself). Calling the launcher using the QMetaObject invokes (invokeMethod) properly launches and most importantly keep track of the process changes.
Over the weekend, I managed to integrate KConfig and wrote a bunch of custom logic for translating Mir keyboard events into something more digestible by the rest of the codebase with a QMirInputEventModifier and a custom Keybind class.
The result is:
magpierc file stored in a budgie-desktop folder within QStandardPaths::ConfigLocation (for users, this is ~/.config with the full expanded path being ~/.config/budgie-desktop/magpierc). Having all the relevant configurations centralized in that one folder is something I am going to be stringent on as we develop all other parts of Budgie 11 (our display configuration files reside there as well), as I really want to make it as trivial to backup / restore desktop environment configurations, and hopefully make it easier to facilitate shareable "ricing" of Budgie.[keybinds] section of the magpierc.magpierc on the system, we will ensure KConfig reparses the configuration and that our keybinds are updated.
A bunch of time was spent researching KConfig XT (which is used to generate C++ classes based off an XML definition of a configuration schema) to see the feasibility of leveraging it for dynamically serializing / deserializing arbitrary keybinds into the Keybinds class. At least based off the documentation, it does not seem possible to add custom logic beyond code for default values, but I am going to keep exploring it and ask some KDE folks.
Worst case is it will be used for relevant static configuration with the remainder being custom logic. That'd still put us in a much better position than literally everything being custom!
This work was all streamed on my YouTube channel. The VOD for Day 1 is published, with Day 2 hopefully out tomorrow. I have created a dedicated Building Budgie 11 if you'd like to follow along (and you are always welcome to tune in to see me fumble about).
In the upcoming week, I plan on doing some further tweaks like leveraging QKeySequence, which I only heard of until I had already implemented all my own stuff! Go figure. Hopefully that will result in the code being even tidier. Once that is done, I am going to spend some time tidying up and re-organizing the code , before I begin the major work of extending Magpie with support for more protocols than Mir itself supports, for example kde-output-management-v2.
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.