Skip to content

Wednesday, 7 October 2026

Qt for MCUs 2.12.3 LTS has been released and is available for download. This patch release provides several bug fixes and other improvements while maintaining source compatibility with Qt for MCUs 2.12 (see Qt for MCUs 2.12 LTS released). This patch release is stability and user workflow focused and does not add any new functionality. Below are some highlights of the improvements introduced. A comprehensive list of changes can be found here. 

Tuesday, 6 October 2026

We know that one of the biggest challenges for embedded UI/UX designers is to see their design vision through to the final product. That’s why earlier this year, we launched Figma to Qt: a plug-in that helps designers craft, preview, verify, and approve Qt applications without ever leaving Figma.

Writing this blog today feels a bit unreal. Six months ago, if you had told me I'd be attending Akademy in-person, 3000 miles from home - I probably wouldn't have believed you. And yet, here we are.

So I attended Akademy 2026, in Graz - and my experience was truly remarkable. I learnt a lot about the KDE Community, met some amazing people and returned with a fresh boost of motivation to keep contributing to the KDE Community! It also happened to be my first trip to Europe, and it really lived up to the expectations!

The Conference

The talks were fun & informative and gave us a chance to catch up with everything going on in the community, which happens to be quite vast. Some talks went deep into technical aspects, some gave us rapid fire project updates, some discussed future plans and goals, whereas some were about the community and its values. The new KDE goals were also revealed, which was cool to witness live!

Out of all, some talks really stood out to me, including the one on desktop UX by Scott Jenson, KaDAI by Eva Brucherseifer & Jan Mühlig, and the history of KDE code by Cornelius Schumacher.

But what was more interesting were the many conversations, short and long, that happened with various people. It was also a pleasure to finally meet my SoK mentor, Carl Schwan in person! It was fun meeting some experienced people from the community, including Lydia, Bhushan, Aniqa, Richard Gustavsen from Qt, Áron and many more!

Everything Else

With how beautiful Austria is, whatever time we had to explore felt too little. Still, we managed to see around Graz, Vienna, Hallstatt and Riegersburg. Cycling around Graz was really fun, especially in the mountainous outskirts. Vienna and its buildings were as grand as one would imagine. The Graz old town was also quite happening and picturesque. Hallstatt (albeit really cold) was absolutely beautiful and pristine. Riegersburg offered a glimpse into rural Austria and the Zotter chocolate factory.

Apart from the conference there were some other fun events also part of Akademy, including the welcome event, KDE's 30th birthday party and a day trip.

Here are some of my best clicks from the trip :)

Screenshot of <nil>
Screenshot of <nil>
Screenshot of <nil>
Screenshot of <nil>
Screenshot of <nil>
Screenshot of <nil>
Screenshot of <nil>

I am really grateful to the KDE e.V. for sponsoring my trip, without which it wouldn't have been possible! Also, huge shoutout to my companions and new found friends - Srisharan V. S., Tushar Gupta, Ansh Singhal and Ojas Maheshwari :)

Looking forward to working with the community and making this my first Akademy of many more to come!

Monday, 5 October 2026

Camp KDE at FOSSY 2026: Vancouver Edition

I just got to writing this blog post, regarding FOSSY 2026 in Vancouver, where I co-ran the Camp KDE track, gave a talk, sat on a panel, and spent a decent chunk of the weekend standing behind a table full of stickers. Here’s how it went.

The Camp KDE booth at FOSSY 2026 with everyone who helped out

The Camp KDE booth at FOSSY 2026 with everyone who helped out

Two weeks ago, several of us from Qt Group travelled to Graz for Akademy 2026, KDE's annual summit. The conference was hosted by Graz University of Technology (TU Graz). This year’s conference was extra special: it marked KDE's 30th birthday. Happy birthday, KDE!

Click, drag, and tweak your design in Live Preview before a developer builds it. Ship the same workflow to flagship touchscreens and microcontrollers. And get more of what you draw back as native QML.

I introduce Tagoross Circle of Practice, a safe harbor environment for professionals moving their organizations from reactive open source risk management to open source as strategy. In this post I explain why I created it and where it stands today.

Sunday, 4 October 2026

This one is about the song editor. Harmonicon has a song editor, it’s had one for a while, I just never sat down and explained what all the little buttons do, and there are a lot of little buttons. The game says four hundred and thirty one, but most of those are notes pretending to be buttons, so it’s less than that.

So I’m going to load a song into it and walk around the screen.

The song

The song is O Pulo da Gaita, or “The harmonica’s jump” in english. It’s a folk theme from the Northeast of Brazil, people know it from “O Auto da Compadecida”, and the Northeast is where I’m from, Salvador, so I’m a bit biased.

It’s a good song to show the editor with because it’s busy without being hard. Two hundred and thirty nine notes in a bit over a minute, on a C diatonic, in 2/4, at 100 bpm, and eighteen of those notes are bends. And the whole tune hangs on one move: you bend the 3 draw down half a step and then let it go, back up to the plain B. Bend, release. Remember that, it comes back.

The whole screen

The song editor with O Pulo da Gaita loaded: a tool sidebar on the left, the note grid in the middle with one lane per harmonica hole, and a music staff underneath

There are three things on this screen, and once you know that it stops being four hundred and thirty one things.

Down the left there’s the sidebar, which is two columns. The left column is about the song and the tools: going back, the Edit / Record / Play modes, the lock, undo and redo, copy and paste, the tools for selecting and erasing ranges of time, tempo and meter changes, repeats and endings, the metronome, the legend, save and load. The right column is about the note. The one you have selected, or if you have nothing selected, the next one you’re going to place. Blow or draw, bend, overblow, overdraw, wah, vibrato and how deep, call and response, split, the phrase editor, delete. So the left column is “what am I doing” and the right column is “to which note”.

In the middle is the grid. One lane per hole, ten of them because it’s a ten hole harmonica, numbered down the side. Time goes left to right, and along the top there’s the ruler, counting bars and beats. This song is in 2/4, so the ruler goes “1 & 2 &” and then starts a new bar. Every note is a little block on the lane of the hole you play it on, with an arrow on it, up for blow, down for draw.

Under the last lane there’s a thin strip that says Silence, which shows the gaps between notes so you can spot a rest you didn’t mean. And under that there’s a scrollbar that’s also a tiny map of the whole song, every note drawn as a coloured speck, with a gold bit showing where you’re looking right now. In this screenshot the gold bit is about a fifth of the way along, so the song is roughly five screens long.

Along the bottom is a music staff, the same notes as sheet music. It follows the grid when you scroll, so you can read it as a harmonica player (holes and arrows) or as a musician (dots on lines), or both.

Colours, and how I got them wrong

Now look at hole 3 in that first screenshot. There’s a blue one, then an orange one, then a sort of mauve one, and then another blue. And I looked at that and I thought, the mauve one is the bend, and I wrote a paragraph about it.

Then I opened the Details tab, which has the colour legend in it, and the legend said: orange is the bend. Deeper bends get redder. And the mauve isn’t a technique at all, it’s a red tint, and it means “this note is outside the song’s scale”.

Close-up of the first bars: on hole 3, an orange bent draw note followed by a mauve plain draw note with a gold selection border and two round drag handles

So that’s the bend and the release, right there. The orange one is the 3 draw bent down half a step. The mauve one is the 3 draw let go, back up to B, and B gets the tint because the editor is checking every note against a blues scale on C, and there’s no B in it. It’s not an error, it’s just the editor pointing it out. The tune does it on purpose, fifteen times, I counted: fifteen bends on the 3 draw, fifteen releases. The other three bends, to make up the eighteen, are on the 2 draw, down at the end, where the song answers itself.

And the same two notes show up again in bar 3. And again later. Bend, release.

Picking a note

In that close-up I’ve got the mauve one selected. A selected note gets a gold border and two little round handles, one on each end, and you drag those to make the note longer or shorter. Drag the middle of it and it moves. Click it and you hear it, the editor plays a short blip of exactly that note, bend and all, so you can check a bend sounds like a bend without picking up the harmonica.

The editor with one note selected: the note on the grid has a gold border, the matching note on the staff below is drawn in gold, and the Draw button in the sidebar is lit

The other thing selecting does is it goes and finds the note on the staff and paints it gold too, so you can see where you are in the actual music. And the right column of the sidebar lights up Draw, because that’s what the note is. Click Blow and it would turn into a blow note.

Close-up of the staff: the notation for the opening bars, with the selected note drawn in gold

Phrases

Up in the header, above the lanes, there are these gold labels, “§ A” at the start and “§ A again” at bar 9. Those are phrase markers, and you can click one and it opens a little panel right there.

The phrase panel open at bar 9, titled “Phrase at 9.1”, with Section filled in as “A again” and empty Chord, Groove and Lyric fields

Section is the name of the bit of the song. Chord is the chord under it, if you want the player to know. Groove is how it should feel, something like “laid back”, in words, for humans. And Lyric is the syllable that’s sung when those notes start, which then shows up karaoke style during the game. This chart doesn’t have chords or lyrics filled in yet, which is why those three boxes are empty.

Details

The other tab is Details, and it’s where the song keeps its paperwork.

The Details tab: song metadata on the left, scoring and loop settings in the middle, and the full colour legend on the right

On the left there’s everything about the song itself: the harmonica type, the key (C), the position (1st), the tempo (100), the grid snap, who wrote it (Traditional), the genre, the difficulty, where the transcription came from, and the licence. In the middle there’s how strict the game is when it scores you: how many milliseconds count as perfect, as good, as a miss, how the combo multiplier works, and which phrases loop. And on the right is the legend, which I should have read first.

The status line at the bottom says where the chart was loaded from.

So that’s the editor. Three parts, two tabs, one legend, and a song that bends the 3 draw and lets it go, and bends it and lets it go. You can play it, it’s in the song pack, and it’s on GitHub with everything else.

Bend, release.

Saturday, 3 October 2026

Two weekends ago, I spent around 24 hours in a train to go to and back from Graz to attend Akademy. This year was a bit special since we are celebrating the 30 years of KDE and this was also my first time attending as a member of the KDE e.V. board.

Unfortunately I could only attend the weekend as I was also expected at the Nextcloud Community Conference in Berlin during the week.

I attended a bunch of talks, one of my favorite was “Are we really going to use the same Desktop UX forever?” from Scott Jenson, which I found super interesting and insightful. It really was a call for us to try to innovate and experiment with new UX concepts and he proposed some interesting directions, where we could be going. A good wake up call that now that macOS and Windows are not inventing anything anymore on the desktop we should be driving UX changes forward.

I also very much liked the talk “What Has Been Brewing in KDE PIM Land?” from Dominique Michel and arnaud chirat. As a fellow PIMster, it is great to see some real progress on fixing some longstanding issue in the backend. It’s great to see the Sovereign Tech Agency investing in this core technology. This also motivated me to spend some time on improving Merkuro again (more on that in a separate post).

Aside from that, as always it’s great to meet up with my fellow KDE developers, share some drinks, exchange ideas or just catch up.

On Saturday evening, I attended the sponsors dinner to discuss a bit with our sponsors. Akademy is a free event to attend and we are very grateful about companies sponsoring us to make it happen.

Sunday morning, I went for a short stroll across the city, because while I was only staying for the weekend, I still wanted to discover Graz at least a bit.

The famous clock tower of graz
The famous clock tower of graz
Music
Music
Konqi
Konqi
View from Graz
View from Graz

After a few weeks of work, I am happy to announce that Kirigami Addons 1.15.0 is out. Kirigami Addons is a collection of many useful modules for your QML and Kirigami applications. I have been working more on Merkuro lately (more on that in a separate blog post) and as always when working on an application, it is also the occasion to improve Kirigami Addons even more :)

FormCard

The FormCard module received a new component, FormSliderDelegate, which is a form delegate for sliders.

 

Another nice improvement in terms of usability is that FormCard has a new property, autoSeparators, to automatically add and manage separators between delegates. This allows simplifying some code and in particular code involving Repeater. Internally, the AboutPage component already uses it.

Speaking of AboutPage, this component will now indicate when a new version is available and no longer shows “unknown” as the distribution mechanism. Additionally, the links now use FormGridContainer and we fixed the sizing of its internal dialogs.

 

In terms of mobile UI, FormTextFieldDelegate and FormPasswordFieldDelegate now have a special mobile design where the text field is hidden until clicked. On top of being a bit more compact, this also improves the input interaction and scrolling on mobile.

 

Date and time

The date and time popup can now be reset when resettable is set to true. Before, you could only set a new value but not reset it to an unset state. This is useful in Merkuro Contact, where we can unset a birthday or anniversary for a contact.

There are more changes planned around the date and time module, and I have a huge pending merge request for using proper date and time objects instead of JS dates, which should fix a lot of edge cases.

KirigamiApp

KirigamiAppDefaults has a new load() function. It loads your main QML module and, if loading fails, shows the QML errors to the user instead of silently exiting. On desktop the errors are displayed in a native message box, and on Android a Qt Quick dialog is used so you don’t need to depend on Qt Widgets. This makes debugging startup issues a lot easier, especially when the application is launched outside of a terminal.

QQmlApplicationEngine engine;
KLocalization::setupLocalizedContext(&engine);
if (!KirigamiAppDefaults::load("org.kde.myapp", u"Main", &engine)) {
 return EXIT_FAILURE;
}
return app.exec();

Documentation

This release also includes various improvements to the documentation with some module overviews and cleanups of the existing documentation. For example, here are the overview pages for the formcard, actions and settings modules.

We also updated the application templates provided by Kirigami Addons to be up to date with the best practices.

Packager section

Kirigami Addons now requires Qt 6.10 or later.

You can find the package on download.kde.org (kirigami addons) and it has been signed with my GPG key.