<?xml version="1.0" encoding="utf-8" standalone="yes"?><?xml-stylesheet href="/html-rss.xsl" type="text/xsl"?><rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom"><channel><title>Planet KDE | English</title><link>https://planet.kde.org/</link><description>Planet KDE | English</description><image><link>https://planet.kde.org/</link><title>Planet KDE</title><url>https://planet.kde.org/img/planet.png</url><height>48</height><width>48</width></image><generator>Hugo -- gohugo.io</generator><language>en</language><lastBuildDate>2026-04-20T15:01:53+00:00</lastBuildDate><atom:link href="https://planet.kde.org/index.xml" rel="self" type="application/rss+xml"/><item><title>Kookbook 0.3.0 released</title><link>https://pusling.com/blog/?p=512</link><pubDate>Mon, 20 Apr 2026 15:01:53 +0000</pubDate><guid isPermaLink="true">http://pusling.com/blog/?p=512</guid><description>&lt;p&gt;I recently released version 0.3.0 of my recipe manager application Kookbook &amp;#8211; find it in git in &lt;a target="_blank" href="https://invent.kde.org/utilities/kookbook/"&gt;KDE Invent&lt;/a&gt; or as released tarballs in https://download.kde.org/stable/kookbook/&lt;/p&gt;
&lt;p&gt;Changes since last time is more or less &amp;#8220;Minor bugfixes and a Qt6 port&amp;#8221; &amp;#8211; nothing as such noteworthy unless you aim to get rid of Qt5 on your system.&lt;/p&gt;
&lt;p&gt;so what is kookbook?&lt;br /&gt;
It is a simple recipe viewer that works with semi-structured markdown. More details can be seen in the quite old &lt;a target="_blank" href="https://pusling.com/blog/?p=499"&gt;0.1.0 announcement&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;At some point I should do a 10 recipe example collection, but my personal collection is in danish, so I&amp;#8217;m not sure it is going to be useful. Unless someone will donate me some handfuls of pre-formatted recipes, I will happily announce it.&lt;/p&gt;</description><author>Sune Vuorela</author></item><item><title>KDE Mega Sprint 2026 Graz</title><link>https://nmariusp.blogspot.com/2026/04/kde-mega-sprint-2026-graz.html</link><pubDate>Sat, 18 Apr 2026 13:54:00 +0000</pubDate><guid isPermaLink="false">tag:blogger.com,1999:blog-3673416404858020228.post-2367890982417173153</guid><description>Hello &lt;a target="_blank" href="https://planet.kde.org"&gt;https://planet.kde.org&lt;/a&gt; &lt;br/&gt;
&lt;br/&gt;
I am Raresh Rus, &lt;a target="_blank" href="https://invent.kde.org/nmariusp"&gt;https://invent.kde.org/nmariusp&lt;/a&gt; , &lt;a target="_blank" href="https://www.youtube.com/@nmariusp"&gt;https://www.youtube.com/@nmariusp&lt;/a&gt; .&lt;br/&gt;
&lt;br/&gt;
I took part in the KDE Mega Sprint 2026 Graz &lt;a target="_blank" href="https://community.kde.org/Sprints/MegaSprint/2026"&gt;https://community.kde.org/Sprints/MegaSprint/2026&lt;/a&gt; .&lt;br/&gt;
&lt;br/&gt;
The sprint was from 09:00 - 19:00, Monday 2026.04.06 - Saturday 2026.04.11.&lt;br/&gt;
In room HS FSI 1, Inffeldgasse 11, Graz, Austria. In the Inffeldgasse campus of the Technical University Graz (TU Graz).&lt;br/&gt;
&lt;div class="separator" style="clear: both;"&gt;&lt;a target="_blank" href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjhnGkkHRRfXny8RJRHSGUS_ZDkR07SXxDvEJNsoajlKjM_2ZIdVCze3xrCVeLw2atEfbZEzFIvmkSkK6KsGc-xjr1NJKdN45K-xC8gQoeCI2uhK_9FxN5lVR5yhqUR91MxqPnxkRnO0mGKnKrI5IQx5BlIfnBZdiLheMEl3NgzJB3n0_mNl59QvpqWt87K/s1600/1_Inf11_Exterior.jpg" style="display: block; padding: 1em 0; text-align: center; "&gt;&lt;img alt="Building Inffeldgasse 11" border="0" data-original-height="800" data-original-width="1376" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjhnGkkHRRfXny8RJRHSGUS_ZDkR07SXxDvEJNsoajlKjM_2ZIdVCze3xrCVeLw2atEfbZEzFIvmkSkK6KsGc-xjr1NJKdN45K-xC8gQoeCI2uhK_9FxN5lVR5yhqUR91MxqPnxkRnO0mGKnKrI5IQx5BlIfnBZdiLheMEl3NgzJB3n0_mNl59QvpqWt87K/s1600/1_Inf11_Exterior.jpg"/&gt;&lt;/a&gt;&lt;/div&gt;
&lt;br/&gt;
We were hosted by the "Grazer Linuxtage 2026" organization. Thank you Kevin Krammer.&lt;br/&gt;
&lt;br/&gt;
I travelled by bus and slept almost all of the time.&lt;br/&gt;
&lt;br/&gt;
The city of Graz has a population of 300,000 and is the second largest city in Austria after the capital Vienna.&lt;br/&gt;
Graz has a large number of well preserved pre First World War buildings.&lt;br/&gt;
&lt;div class="separator" style="clear: both;"&gt;&lt;a target="_blank" href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhG0HXELOLDNuvMvcSrZZ7K_6NZsOnuDIHcyvpnBCTO6E8A3kaMtnalX8BxGnzKmpC30VToLVCJYnd-nWZoew43DZZGuvEl7bsio0z4k9B0-UhRXDXq63qZdUM6PBudin8tqIeYoi3CVAdxQUYaNlNbNW4xwE8mPL_vV7yQJwDxF9vZM3EdrtvtKwumDsxN/s1600/2_GrazBuildings.jpg" style="display: block; padding: 1em 0; text-align: center; "&gt;&lt;img alt="Old building in Graz" border="0" data-original-height="800" data-original-width="1067" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhG0HXELOLDNuvMvcSrZZ7K_6NZsOnuDIHcyvpnBCTO6E8A3kaMtnalX8BxGnzKmpC30VToLVCJYnd-nWZoew43DZZGuvEl7bsio0z4k9B0-UhRXDXq63qZdUM6PBudin8tqIeYoi3CVAdxQUYaNlNbNW4xwE8mPL_vV7yQJwDxF9vZM3EdrtvtKwumDsxN/s1600/2_GrazBuildings.jpg"/&gt;&lt;/a&gt;&lt;/div&gt;
&lt;br/&gt;
More than 20 KDE contributors participated. Including CorneliusS and LaurenzW from the GNOME community.&lt;br/&gt;
&lt;br/&gt;
Before the sprint, I created a youtube video "KDE Mega Sprint 2026 and Grazer Linuxtage 2026 #glt26" &lt;a target="_blank" href="https://www.youtube.com/watch?v=56xIRyyFR3c"&gt;https://www.youtube.com/watch?v=56xIRyyFR3c&lt;/a&gt;&lt;br/&gt;
&lt;br/&gt;
During the sprint, I did small gitlab Merge Requests.&lt;br/&gt;
Some KDE git repositories had the main readme file say that the KDE project can most easily be built using kdesrc-build. I replaced "kdesrc-build" with "kde-builder".&lt;br/&gt;
I saw that &lt;a target="_blank" href="https://develop.kde.org/docs/getting-started/building"&gt;https://develop.kde.org/docs/getting-started/building&lt;/a&gt; was ready to replace &lt;a target="_blank" href="https://community.kde.org/Get_Involved/development#Setting_up_the_development_environment"&gt;https://community.kde.org/Get_Involved/development#Setting_up_the_development_environment&lt;/a&gt; . So we did this replacement.&lt;br/&gt;
&lt;br/&gt;
I have edited the flatpak manifest of some KDE GUI apps, such that less files are present in the flatpak package file.&lt;br/&gt;
&lt;br/&gt;
KDE Linux comes with kwrite preinstalled from flathub. I saw that &lt;a target="_blank" href="https://github.com/flathub/org.kde.kwrite/blob/master/org.kde.kwrite.json"&gt;https://github.com/flathub/org.kde.kwrite/blob/master/org.kde.kwrite.json&lt;/a&gt; does exist. But this flatpak manifest for kwrite does not exist in the KDE git repository of kwrite and kate.&lt;br/&gt;
&lt;br/&gt;
I have encountered various issues with the licenses displayed in the about dialog of various KDE GUI apps. Scroll issues in license text viewer in Kirigami app. Not correct license being displayed. There are also differences between the license in reuse in the KDE git repository, the license shown in the GUI app's about dialog, the license shown for that app in Discover, apps.kde.org, flathub and snap store.&lt;br/&gt;
&lt;br/&gt;
Also, in reuse, the license of files which come from outside the KDE community for example app icons for VLC and Blender have different licenses in the upstream git repository and in the KDE git repository.&lt;br/&gt;
The reuse linter prefers that we use file "REUSE.toml" instead of ".reuse/dep5".&lt;br/&gt;
&lt;br/&gt;
Top issues that I have encountered: I saw Plasma Welcome Center tens of times without reinstalling operating systems or reverting VM snapshots. My hardware laptop took many minutes to start until I have disabled "Intel VMD" from the UEFI firmware screen with advanced settings.&lt;br/&gt;
&lt;br/&gt;
Fedora 44 Workstation and Ubuntu 26.04 use the GNOME desktop, do not have a GNOME desktop X11 session, but I can connect using the Remote Desktop Protocol. See &lt;a target="_blank" href="https://www.youtube.com/watch?v=oelT312LqFI"&gt;https://www.youtube.com/watch?v=oelT312LqFI&lt;/a&gt; , &lt;a target="_blank" href="https://www.youtube.com/watch?v=xjfC4GGI7_w"&gt;https://www.youtube.com/watch?v=xjfC4GGI7_w&lt;/a&gt;&lt;br/&gt;
&lt;br/&gt;
Work is in progress to have these features available also for KDE Linux and the KDE Plasma Wayland session.&lt;br/&gt;
The big epics are probably: "KDE Plasma Wayland session - make it possible via command line to change the KDE Plasma Wayland session resolution to arbitrary width and height integer values", "vdagent - make it possible to paste plain text towards KDE Plasma Wayland", "vdagent - make it possible to copy plain text from KDE Plasma Wayland", "RDP server in KDE Plasma Wayland - implement plain text clipboard copy/paste", "RDP server in KDE Plasma Wayland - make it possible to log into KDE Plasma from a RDP client such as xfreerdp".&lt;br/&gt;
&lt;br/&gt;
Toward the end of the sprint, we recorded a youtube video "Conclusions panel KDE Mega Sprint 2026 Graz" &lt;a target="_blank" href="https://www.youtube.com/watch?v=eSCXY4nEiWI"&gt;https://www.youtube.com/watch?v=eSCXY4nEiWI&lt;/a&gt; .&lt;br/&gt;</description><author>Raresh Rus</author></item><item><title>State of Kdenlive - 2026</title><link>https://kdenlive.org/news/2026/state-2026/</link><pubDate>Sat, 18 Apr 2026 09:00:00 +0000</pubDate><guid isPermaLink="true">https://kdenlive.org/news/2026/state-2026/</guid><description>&lt;p&gt;In 2025, the Kdenlive team continued grinding to push the project forward through steady development, collaboration, and community support. Over the past year we’ve found a nice balance between adding new features, bug fixing, polishing the user interface, and improving performance and workflow, with stability taking priority over feature creep.&lt;/p&gt;
&lt;p&gt;We relaunched the website with a new content management system, refreshed some content and the design, and restored historic content dating back to 2002. We also strengthened upstream collaboration with the MLT developers and contributed several improvements to OpenTimelineIO.&lt;/p&gt;
&lt;p&gt;Here’s a look at what we've been up to and what is ahead.&lt;/p&gt;
&lt;h2 id="release-highlights"&gt;RELEASE HIGHLIGHTS&lt;/h2&gt;
&lt;p&gt;As part of &lt;a target="_blank" href="https://apps.kde.org/"&gt;KDE Apps&lt;/a&gt;, we follow the KDE Gear &lt;a target="_blank" href="https://community.kde.org/Schedules"&gt;release cycle&lt;/a&gt;, with three major releases each year—in April, August, and December—each followed by three point maintenance releases.&lt;/p&gt;
&lt;h3 id="25040"&gt;25.04.0&lt;/h3&gt;
&lt;p&gt;This release added a powerful automatic masking tool and brought the last batch of features from our last fundraiser.&lt;/p&gt;
&lt;p&gt;&lt;a target="_blank" href="https://kdenlive.org/news/releases/25.04.0/"&gt;-&amp;gt; &lt;em&gt;Read full changelog&lt;/em&gt;&lt;/a&gt;&lt;/p&gt;
&lt;div class="row row-cols-1 row-cols-md-2 row-cols-lg-3 g-4"&gt;
&lt;div class="col"&gt;
&lt;div class="card h-100 border-0 shadow-sm regular-card"&gt;
&lt;div class="card-body d-flex flex-column"&gt;
&lt;h3 class="card-title h4 title-accent"&gt;Background Removal&lt;/h3&gt;
&lt;div class="card-text flex-grow-1"&gt;
&lt;figure class="text-center ratio ratio-16x9" style="--bs-aspect-ratio: calc(0.67 * 100%);"&gt;
&lt;video muted loop autoplay style="pointer-events: none;"&gt;&lt;source src="https://kdenlive.org/news/2026/state-2026/background-removal.webm" type="video/webm" /&gt;&lt;/video&gt;&lt;/figure&gt;
&lt;p&gt;The new Object Segmentation plugin based on the [SAM2][4] model allows to remove any selected object from the background.&lt;/p&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;div class="col"&gt;
&lt;div class="card h-100 border-0 shadow-sm regular-card"&gt;
&lt;div class="card-body d-flex flex-column"&gt;
&lt;h3 class="card-title h4 title-accent"&gt;OpenTimelineIO&lt;/h3&gt;
&lt;div class="card-text flex-grow-1"&gt;
&lt;figure&gt;
&lt;img class="img-fluid" alt="otio" src="https://kdenlive.org/news/2026/state-2026/otiov.png"
style="max-width: 100%; height: auto"
/&gt;
&lt;/figure&gt;
&lt;p&gt;We rewrote our OpenTimelineIO import and export function using the C++ library. Now you can exchange projects with other editing applications that support this open source file format.&lt;/p&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;div class="col"&gt;
&lt;div class="card h-100 border-0 shadow-sm regular-card"&gt;
&lt;div class="card-body d-flex flex-column"&gt;
&lt;h3 class="card-title h4 title-accent"&gt;Waveform improvements&lt;/h3&gt;
&lt;div class="card-text flex-grow-1"&gt;
&lt;figure&gt;
&lt;img class="img-fluid" alt="waveforns" src="https://kdenlive.org/news/2026/state-2026/waves.png"
style="max-width: 100%; height: auto"
/&gt;
&lt;/figure&gt;
&lt;p&gt;Audio waveform generation got a 300% performance boost, along with a refactored sampling method that accurately renders the audio signal and higher-resolution waveforms for greater precision.&lt;/p&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;h3 id="25080"&gt;25.08.0&lt;/h3&gt;
&lt;p&gt;This release focused heavily on stabilization, bringing over 300 commits and fixing more than 15 crashes. Instead of major new features, the effort went into polishing and bug fixing.&lt;/p&gt;
&lt;p&gt;&lt;a target="_blank" href="https://kdenlive.org/news/releases/25.08.0/"&gt;-&amp;gt; &lt;em&gt;Read full changelog&lt;/em&gt;&lt;/a&gt;&lt;/p&gt;
&lt;div class="row row-cols-1 row-cols-md-2 row-cols-lg-3 g-4"&gt;
&lt;div class="col"&gt;
&lt;div class="card h-100 border-0 shadow-sm regular-card"&gt;
&lt;div class="card-body d-flex flex-column"&gt;
&lt;h3 class="card-title h4 title-accent"&gt;Audio Mixer&lt;/h3&gt;
&lt;div class="card-text flex-grow-1"&gt;
&lt;figure&gt;
&lt;img class="img-fluid" alt="mixer" src="https://kdenlive.org/news/2026/state-2026/mixer.png"
style="max-width: 100%; height: auto"
/&gt;
&lt;/figure&gt;
&lt;p&gt;We redesigned the audio mixer bringing levels with clearer visuals and thresholds. We also did some code refactoring and cleanup. This change fixes issues with HiDPI displays with fractional scaling.&lt;/p&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;div class="col"&gt;
&lt;div class="card h-100 border-0 shadow-sm regular-card"&gt;
&lt;div class="card-body d-flex flex-column"&gt;
&lt;h3 class="card-title h4 title-accent"&gt;Markers and Guides&lt;/h3&gt;
&lt;div class="card-text flex-grow-1"&gt;
&lt;figure class="text-center ratio ratio-16x9" style="--bs-aspect-ratio: calc(0.6 * 100%);"&gt;
&lt;video muted loop autoplay style="pointer-events: none;"&gt;&lt;source src="https://kdenlive.org/news/2026/state-2026/markers-guides.mp4" type="video/mp4" /&gt;&lt;/video&gt;&lt;/figure&gt;
&lt;p&gt;Guides and Markers got a major overhaul this release to improve the project organization.&lt;/p&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;div class="col"&gt;
&lt;div class="card h-100 border-0 shadow-sm regular-card"&gt;
&lt;div class="card-body d-flex flex-column"&gt;
&lt;h3 class="card-title h4 title-accent"&gt;Titler improvements&lt;/h3&gt;
&lt;div class="card-text flex-grow-1"&gt;
&lt;figure class="text-center ratio ratio-16x9" style="--bs-aspect-ratio: calc(0.55 * 100%);"&gt;
&lt;video muted loop autoplay style="pointer-events: none;"&gt;&lt;source src="https://kdenlive.org/news/2026/state-2026/titler.mp4" type="video/mp4" /&gt;&lt;/video&gt;&lt;/figure&gt;
&lt;p&gt;This release the titler received some much needed love like improved SVG and image support with ability to move and resize items, added center resize with Shift + Drag, and renamed the Pattern tab to Templates and moved the templates dropdown to it&lt;/p&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;h3 id="25120"&gt;25.12.0&lt;/h3&gt;
&lt;p&gt;The focus of this release cycle was on improving the user experience and polishing the user interface.&lt;/p&gt;
&lt;p&gt;&lt;a target="_blank" href="https://kdenlive.org/news/releases/25.12.0/"&gt;-&amp;gt; &lt;em&gt;Read full changelog&lt;/em&gt;&lt;/a&gt;&lt;/p&gt;
&lt;div class="row row-cols-1 row-cols-md-2 row-cols-lg-3 g-4"&gt;
&lt;div class="col"&gt;
&lt;div class="card h-100 border-0 shadow-sm regular-card"&gt;
&lt;div class="card-body d-flex flex-column"&gt;
&lt;h3 class="card-title h4 title-accent"&gt;Welcome Screen&lt;/h3&gt;
&lt;div class="card-text flex-grow-1"&gt;
&lt;figure&gt;
&lt;img class="img-fluid" alt="welcome_screen" src="https://kdenlive.org/news/2026/state-2026/welcome.webp"
style="max-width: 100%; height: auto"
/&gt;
&lt;/figure&gt;
&lt;p&gt;We added a new first-run launch screen for first time users as well as added a Welcome Screen allowing to easily launch recent projects.&lt;/p&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;div class="col"&gt;
&lt;div class="card h-100 border-0 shadow-sm regular-card"&gt;
&lt;div class="card-body d-flex flex-column"&gt;
&lt;h3 class="card-title h4 title-accent"&gt;Docking System&lt;/h3&gt;
&lt;div class="card-text flex-grow-1"&gt;
&lt;figure class="text-center ratio ratio-16x9" style="--bs-aspect-ratio: calc(0.6 * 100%);"&gt;
&lt;video muted loop autoplay style="pointer-events: none;"&gt;&lt;source src="https://kdenlive.org/news/2026/state-2026/docking.webm" type="video/webm" /&gt;&lt;/video&gt;&lt;/figure&gt;
&lt;p&gt;We added a new, more flexible docking system that lets you group widgets, show or hide them on demand, and save layouts as separate files that can be shared or stored within projects.&lt;/p&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;div class="col"&gt;
&lt;div class="card h-100 border-0 shadow-sm regular-card"&gt;
&lt;div class="card-body d-flex flex-column"&gt;
&lt;h3 class="card-title h4 title-accent"&gt;Redesigned monitor&lt;/h3&gt;
&lt;div class="card-text flex-grow-1"&gt;
&lt;figure class="text-center ratio ratio-16x9" style="--bs-aspect-ratio: calc(0.6 * 100%);"&gt;
&lt;video muted loop autoplay style="pointer-events: none;"&gt;&lt;source src="https://kdenlive.org/news/2026/state-2026/audio-monitor.webm" type="video/webm" /&gt;&lt;/video&gt;&lt;/figure&gt;
&lt;p&gt;The audio waveform in the Project Monitor got a revamped interface with an added minimap.&lt;/p&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;h2 id="the-road-ahead"&gt;THE ROAD AHEAD&lt;/h2&gt;
&lt;h3 id="2604"&gt;26.04&lt;/h3&gt;
&lt;p&gt;This next release is just around the corner and brings a nice batch of nifty new features like monitor mirroring and animated transition previews, making it much easier to visualize how they will look before applying them. Additionally, dropping a transition onto the timeline can now automatically adjust its duration to match the clips above and below, saving time and reducing manual tweaking.&lt;/p&gt;
&lt;p&gt;This feature allows you to mirror any monitor while working in fullscreen mode. It’s especially useful when working with multiple displays or collaborating with others in the editing room.&lt;/p&gt;
&lt;figure class="text-center ratio ratio-16x9" style="--bs-aspect-ratio: calc(0.75 * 100%);"&gt;
&lt;video muted loop autoplay style="pointer-events: none;"&gt;&lt;source src="https://kdenlive.org/news/2026/state-2026/anim-prev.webm" type="video/webm" /&gt;&lt;/video&gt;&lt;/figure&gt;
&lt;h4 id="other-noteworthy-features"&gt;OTHER NOTEWORTHY FEATURES&lt;/h4&gt;
&lt;ul&gt;
&lt;li&gt;Change the playback speed of multiple clips at once&lt;/li&gt;
&lt;li&gt;Import a clip directly from the timeline context menu and insert it at the click position&lt;/li&gt;
&lt;li&gt;Option to always zoom toward the mouse position instead of the timeline playhead&lt;/li&gt;
&lt;li&gt;Generate audio thumbnails for sequences&lt;/li&gt;
&lt;/ul&gt;
&lt;h3 id="roadmap"&gt;ROADMAP&lt;/h3&gt;
&lt;p&gt;Our &lt;a target="_blank" href="https://kdenlive.org/roadmap/"&gt;roadmap&lt;/a&gt; is constantly being reviewed and updated, and some of the upcoming highlights include implementing the new features in MLT, the multimedia framework which powers Kdenlive. Some exciting upcoming features include 10/12 bit color support, &lt;a target="_blank" href="https://github.com/mltframework/mlt/commit/799b222aa0e2432269032193816d7565e2d8984f"&gt;playback optimizations (decoding)&lt;/a&gt;, and &lt;a target="_blank" href="https://github.com/mltframework/mlt/commit/fa0622a7dc826aaa842215c0f43522cfac5a68aa"&gt;OpenFX&lt;/a&gt; support. &lt;em&gt;(Shoutout to a Kdenlive community member for leading this effort)&lt;/em&gt;. Also expected is a refactoring of the subtitle system as well as continuing to develop the &lt;em&gt;Advanced Trimming Tools&lt;/em&gt;.&lt;/p&gt;
&lt;h4 id="dopesheet"&gt;DOPESHEET&lt;/h4&gt;
&lt;p&gt;We are currently working on refactoring the keyframing system and implementing a Dopesheet, basically it is a dedicated timeline for managing and viewing keyframes from multiple effects simultaneously. This work will also introduce per-parameter keyframing (currently, once you add a keyframe to an effect, it is applied to all parameters by default). More info can be found in the last &lt;a target="_blank" href="https://kdenlive.org/news/2026/dopesheet-status-1-26/"&gt;status report&lt;/a&gt;. This work is made possible through an &lt;a target="_blank" href="https://nlnet.nl/project/Kdenlive/"&gt;NGI Zero Commons grant via NLnet&lt;/a&gt;.&lt;/p&gt;
&lt;figure&gt;
&lt;img class="img-fluid" alt="dopesheet" src="https://kdenlive.org/news/2026/state-2026/dopesheet.png"
style="max-width: 100%; height: auto"
/&gt;
&lt;/figure&gt;
&lt;h4 id="microsoft-store"&gt;MICROSOFT STORE&lt;/h4&gt;
&lt;p&gt;We have been working on &lt;a target="_blank" href="https://github.com/mltframework/mlt/commits/master/?author=jlskuz"&gt;enabling and fixing&lt;/a&gt; multiple modules in MLT to compile with MSVC allowing us to ship Kdenlive in the Microsoft Store soon. Another advantage is that it will allow to run unit tests on our &lt;a target="_blank" href="https://invent.kde.org/multimedia/kdenlive/-/merge_requests/721"&gt;CI for Windows.&lt;/a&gt;&lt;/p&gt;
&lt;h2 id="community"&gt;COMMUNITY&lt;/h2&gt;
&lt;figure&gt;
&lt;img class="img-fluid" alt="Community" src="https://kdenlive.org/news/2026/state-2026/community2.png"
style="max-width: 100%; height: auto"
/&gt;
&lt;/figure&gt;
&lt;h3 id="new-contributors"&gt;NEW CONTRIBUTORS&lt;/h3&gt;
&lt;p&gt;Currently, the Kdenlive core team is made up of 8 active members, including 2 developers.&lt;/p&gt;
&lt;p&gt;In 2025, 38 people contributed code to Kdenlive (including the core dev team and other KDE devs), a truly impressive number! Even more exciting, about half of them were first-time contributors, which is always great. We hope to see many of them continue contributing in the future. On behalf of the Kdenlive team, we salute you all!&lt;/p&gt;
&lt;details&gt;
&lt;summary&gt;List of contributors and commits&lt;/summary&gt;
&lt;p&gt;&lt;em&gt;Note that these numbers refer specifically to contributions to the Kdenlive application. Other projects such as the test suite and website are hosted in separate repositories and are not included in these figures.&lt;/em&gt;&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;878 — Jean-Baptiste Mardelle &lt;em&gt;(core team)&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;126 — balooii balooii&lt;/li&gt;
&lt;li&gt;109 — Julius Künzel &lt;em&gt;(core team)&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;60 — Darby Johnston &lt;em&gt;(fundraiser)&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;26 — Bernd Jordan &lt;em&gt;(core team)&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;24 — Ajay Chauhan&lt;/li&gt;
&lt;li&gt;11 — Eugen Mohr &lt;em&gt;(core team)&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;9 — Scarlett Moore &lt;em&gt;(KDE)&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;8 — Yuri Chornoivan &lt;em&gt;(KDE)&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;7 — Justin Zobel &lt;em&gt;(KDE)&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;7 — Ron Lee &lt;em&gt;(core team)&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;6 — Farid Abdelnour &lt;em&gt;(core team)&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;5 — Josep M. Ferrer&lt;/li&gt;
&lt;li&gt;5 — Étienne André &lt;em&gt;(fundraiser)&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;4 — Kunda Ki&lt;/li&gt;
&lt;li&gt;4 — Swastik Patel&lt;/li&gt;
&lt;li&gt;3 — Camille Moulin &lt;em&gt;(core team)&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;3 — Carlos De Maine&lt;/li&gt;
&lt;li&gt;2 — Johnny Jazeix &lt;em&gt;(KDE)&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;2 — Luigi Toscano &lt;em&gt;(KDE)&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;2 — Nicolas Fella &lt;em&gt;(KDE)&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;2 — Richard Ash&lt;/li&gt;
&lt;li&gt;2 — Side Projects Lab&lt;/li&gt;
&lt;li&gt;2 — Xander Bailey&lt;/li&gt;
&lt;li&gt;2 — chocolate image&lt;/li&gt;
&lt;li&gt;1 — Adam Fidel&lt;/li&gt;
&lt;li&gt;1 — Alex Efimov&lt;/li&gt;
&lt;li&gt;1 — Edward McVern&lt;/li&gt;
&lt;li&gt;1 — Eli George&lt;/li&gt;
&lt;li&gt;1 — Helga K&lt;/li&gt;
&lt;li&gt;1 — Jack Bruienne&lt;/li&gt;
&lt;li&gt;1 — Jonas Endter&lt;/li&gt;
&lt;li&gt;1 — Oliver Kellogg&lt;/li&gt;
&lt;li&gt;1 — Rafael Sadowski&lt;/li&gt;
&lt;li&gt;1 — Steve Cossette&lt;/li&gt;
&lt;/ul&gt;
&lt;/details&gt;
&lt;h3 id="sprints-and-events"&gt;SPRINTS AND EVENTS&lt;/h3&gt;
&lt;h4 id="amsterdam-sprint"&gt;AMSTERDAM SPRINT&lt;/h4&gt;
&lt;figure&gt;
&lt;img class="img-fluid" alt="Amsterdam sprint" src="https://kdenlive.org/news/2026/state-2026/kdenlive-blender.jpg"
style="max-width: 100%; height: auto"
/&gt;
&lt;/figure&gt;
&lt;p&gt;In February, part of the Kdenlive core team met in &lt;a target="_blank" href="https://kdenlive.org/news/2025/amsterdam-sprint-report/"&gt;Amsterdam for a short sprint&lt;/a&gt;, highlighted by a visit to the Blender Foundation, where we met with Francesco Siddi and he shared valuable insights into Blender’s history and offered advice on product management for Kdenlive. We also attended their weekly open session, where artists and developers present progress on ongoing projects. During the sprint, we discussed and advanced several technical topics, some highlights include:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Refining the audio workflow task&lt;/li&gt;
&lt;li&gt;Developing a proof of concept to improve clip timecode handling&lt;/li&gt;
&lt;li&gt;Finishing an MLT Framework patch to enable rendering without a display server (needed for Flatpak testing)&lt;/li&gt;
&lt;/ul&gt;
&lt;h4 id="berlin-sprint"&gt;BERLIN SPRINT&lt;/h4&gt;
&lt;figure&gt;
&lt;img class="img-fluid" alt="Kdenlive Berlin" src="https://kdenlive.org/news/2026/state-2026/kdenlive-berlin.jpg"
style="max-width: 100%; height: auto"
/&gt;
&lt;/figure&gt;
&lt;p&gt;The &lt;a target="_blank" href="https://kdenlive.org/news/2025/berlin-sprint/"&gt;Berlin sprint&lt;/a&gt; was one of our most productive gatherings to date. Most of the team was there in person, and we also connected online with those who couldn’t make it. We discussed just about every aspect of the project, from roadmap planning to upcoming features and workflow improvements. Some of the highlights include:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Evaluated the current state of the Titler and discussed possible integration with Glaxnimate&lt;/li&gt;
&lt;li&gt;Reorganized the Menu structure&lt;/li&gt;
&lt;li&gt;Developed a proof of concept for using KDDockWidgets&lt;/li&gt;
&lt;li&gt;Redesigned and started development of the audio clip view in the Clip Monitor&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;Thanks to the nice folks at &lt;a target="_blank" href="https://c-base.org/"&gt;c-base&lt;/a&gt; who kindly hosted us.&lt;/p&gt;
&lt;h4 id="akademy-2025"&gt;AKADEMY 2025&lt;/h4&gt;
&lt;figure&gt;
&lt;img class="img-fluid" alt="Akademy" src="https://kdenlive.org/news/2026/state-2026/akademy.jpg"
style="max-width: 100%; height: auto"
/&gt;
&lt;/figure&gt;
&lt;p&gt;Akademy is always a great opportunity to exchange ideas with the broader KDE and Qt communities. One of the highlights was meeting the maintainer of Glaxnimate, where we discussed common goals and ways to collaborate. This year, &lt;a target="_blank" href="https://akademy.kde.org/2026/"&gt;Akademy will be in Graz&lt;/a&gt; on the 19-24 of September, and we hope to see you there.&lt;/p&gt;
&lt;h3 id="showcase"&gt;SHOWCASE&lt;/h3&gt;
&lt;p&gt;We’re very happy to see more YouTube channels talking about Kdenlive. Here are some examples of what the community has been creating.&lt;/p&gt;
&lt;div class="row row-cols-auto g-3 justify-content-md-center"&gt;
&lt;div class="col"&gt;
&lt;iframe allow="accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture; web-share; fullscreen" loading="eager" referrerpolicy="strict-origin-when-cross-origin" src="https://www.youtube.com/embed/9dIqJDy78TI?autoplay=0&amp;amp;controls=1&amp;amp;end=0&amp;amp;loop=0&amp;amp;mute=0&amp;amp;start=0" title="YouTube video"&gt;&lt;/iframe&gt;
&lt;/div&gt;
&lt;div class="col"&gt;
&lt;iframe allow="accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture; web-share; fullscreen" loading="eager" referrerpolicy="strict-origin-when-cross-origin" src="https://www.youtube.com/embed/PEFqdqRr18E?autoplay=0&amp;amp;controls=1&amp;amp;end=0&amp;amp;loop=0&amp;amp;mute=0&amp;amp;start=0" title="YouTube video"&gt;&lt;/iframe&gt;
&lt;/div&gt;
&lt;div class="col"&gt;
&lt;iframe allow="accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture; web-share; fullscreen" loading="eager" referrerpolicy="strict-origin-when-cross-origin" src="https://www.youtube.com/embed/zYD0b8LpiQA?autoplay=0&amp;amp;controls=1&amp;amp;end=0&amp;amp;loop=0&amp;amp;mute=0&amp;amp;start=0" title="YouTube video"&gt;&lt;/iframe&gt;
&lt;/div&gt;
&lt;div class="col"&gt;
&lt;iframe allow="accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture; web-share; fullscreen" loading="eager" referrerpolicy="strict-origin-when-cross-origin" src="https://www.youtube.com/embed/YnSE9qgGui4?autoplay=0&amp;amp;controls=1&amp;amp;end=0&amp;amp;loop=0&amp;amp;mute=0&amp;amp;start=0" title="YouTube video"&gt;&lt;/iframe&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;p&gt;We'd love to see what you've been working on in the past year. Share your videos productions in the comments!&lt;/p&gt;
&lt;h3 id="spread-the-word"&gt;SPREAD THE WORD&lt;/h3&gt;
&lt;p&gt;Help us grow the community by organizing meetups, talks, or workshops in your local area. Don’t hesitate to contact us if you need guidance, materials, or support to get started.&lt;/p&gt;
&lt;p&gt;Below are photos from a workshop with indigenous communities in Paraguay.&lt;/p&gt;
&lt;section class="swiper d-flex mb-5" aria-label="Screenshots" role="list"&gt;
&lt;div class="swiper-wrapper d-flex my-3" role="listitem"&gt;
&lt;div class="swiper-slide swiper-slide-active"&gt;
&lt;img src="https://kdenlive.org/news/2026/state-2026/w1.jpg" alt="Screenshot of &amp;lt;nil&amp;gt;" lazy class="rounded"&gt;
&lt;/div&gt;
&lt;div class="swiper-slide"&gt;
&lt;img src="https://kdenlive.org/news/2026/state-2026/w2.jpg" alt="Screenshot of &amp;lt;nil&amp;gt;" lazy class="rounded"&gt;
&lt;/div&gt;
&lt;div class="swiper-slide"&gt;
&lt;img src="https://kdenlive.org/news/2026/state-2026/w3.jpg" alt="Screenshot of &amp;lt;nil&amp;gt;" lazy class="rounded"&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;div class="swiper-pagination" style="bottom: 0"&gt;&lt;/div&gt;
&lt;div class="swiper-button-prev"&gt;&lt;/div&gt;
&lt;div class="swiper-button-next"&gt;&lt;/div&gt;
&lt;/section&gt;
&lt;h3 id="stats"&gt;STATS&lt;/h3&gt;
&lt;h4 id="downloads"&gt;DOWNLOADS&lt;/h4&gt;
&lt;ul&gt;
&lt;li&gt;Kdenlive was downloaded 11,500,714 times from our download page in 2025. Do note that many additional installs happen through Linux distribution package managers, the Snap Store, Flathub, and other third-party servers, where statistics are not always available or reliably measurable.&lt;/li&gt;
&lt;li&gt;The Flatpak package from &lt;a target="_blank" href="https://flathub.org/en/apps/org.kde.kdenlive"&gt;Flathub&lt;/a&gt; gets 41,499 downloads per month.&lt;/li&gt;
&lt;li&gt;25.04.2 got the most number of downloads.&lt;/li&gt;
&lt;li&gt;17.08.2 was downloaded 1 time!&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;&lt;strong&gt;Downloads per release cycle&lt;/strong&gt;&lt;/p&gt;
&lt;div class="chart"&gt;
&lt;div class="legend"&gt;
&lt;span&gt;&lt;span class="legend-dot" style="background:#3266ad;"&gt;&lt;/span&gt;Windows&lt;/span&gt;
&lt;span&gt;&lt;span class="legend-dot" style="background:#1D9E75;"&gt;&lt;/span&gt;Linux&lt;/span&gt;
&lt;span&gt;&lt;span class="legend-dot" style="background:#D85A30;"&gt;&lt;/span&gt;Mac&lt;/span&gt;
&lt;/div&gt;
&lt;div class="chart-wrap"&gt;
&lt;canvas id="chart" role="img" aria-label="Stacked bar chart of downloads per version by platform"&gt;&lt;/canvas&gt;
&lt;/div&gt;&lt;/p&gt;
&lt;/div&gt;
&lt;i&gt;A script element has been removed to ensure Planet works properly. Please find it in the original post.&lt;/i&gt;
&lt;i&gt;A script element has been removed to ensure Planet works properly. Please find it in the original post.&lt;/i&gt;
&lt;h4 id="code-commits"&gt;CODE COMMITS&lt;/h4&gt;
&lt;p&gt;&lt;strong&gt;Per Release Cycle&lt;/strong&gt;&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;25.04 cycle: 403 commits&lt;/li&gt;
&lt;li&gt;25.08 cycle: 368 commits&lt;/li&gt;
&lt;li&gt;25.12 cycle: 405 commits&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;&lt;strong&gt;Files With Most Code Changes&lt;/strong&gt;&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;src/mainwindow.cpp: 102 commits&lt;/li&gt;
&lt;li&gt;src/bin/bin.cpp: 70 commits&lt;/li&gt;
&lt;li&gt;src/timeline2/view/timelinecontroller.cpp: 67 commits&lt;/li&gt;
&lt;li&gt;src/monitor/monitor.cpp: 60 commits&lt;/li&gt;
&lt;li&gt;data/org.kde.kdenlive.appdata.xml: 57 commits&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;&lt;strong&gt;Files With Most Bug Fixes&lt;/strong&gt;&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;src/mainwindow.cpp: 1021 commits&lt;/li&gt;
&lt;li&gt;src/timeline2/model/timelinemodel.cpp: 600 commits&lt;/li&gt;
&lt;li&gt;src/bin/bin.cpp: 593 commits&lt;/li&gt;
&lt;li&gt;src/timeline2/view/timelinecontroller.cpp: 506 commits&lt;/li&gt;
&lt;li&gt;src/renderer.cpp: 501 commits&lt;/li&gt;
&lt;/ul&gt;
&lt;h4 id="userbase"&gt;USERBASE&lt;/h4&gt;
&lt;p&gt;&lt;strong&gt;Continent&lt;/strong&gt;&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;🌍 Europe — 949,077&lt;/li&gt;
&lt;li&gt;🌎 Americas — 781,131&lt;/li&gt;
&lt;li&gt;🌏 Asia — 750,406&lt;/li&gt;
&lt;li&gt;🌍 Africa — 127,948&lt;/li&gt;
&lt;li&gt;🌏 Oceania — 53,397&lt;/li&gt;
&lt;li&gt;🧊 Antarctica — 5&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;&lt;em&gt;To the 5 of you in Antarctica, let us know what you are editing. ;)&lt;/em&gt;&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Country&lt;/strong&gt;&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;🇺🇸 United States — 392,967&lt;/li&gt;
&lt;li&gt;🇮🇳 India — 267,449&lt;/li&gt;
&lt;li&gt;🇧🇷 Brazil — 153,319&lt;/li&gt;
&lt;li&gt;🇩🇪 Germany — 118,115&lt;/li&gt;
&lt;li&gt;🇫🇷 France — 111,071&lt;/li&gt;
&lt;li&gt;🇨🇳 China — 104,692&lt;/li&gt;
&lt;li&gt;🇷🇺 Russia — 96,051&lt;/li&gt;
&lt;li&gt;🇪🇸 Spain — 91,052&lt;/li&gt;
&lt;li&gt;🇬🇧 United Kingdom — 86,165&lt;/li&gt;
&lt;li&gt;🇮🇹 Italy — 61,814&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;&lt;strong&gt;Region&lt;/strong&gt;&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;🇺🇸 California, United States — 42,769&lt;/li&gt;
&lt;li&gt;🇧🇷 São Paulo, Brazil — 37,452&lt;/li&gt;
&lt;li&gt;🇮🇳 Tamil Nādu, India — 27,313&lt;/li&gt;
&lt;li&gt;🇫🇷 Île-de-France, France — 26,755&lt;/li&gt;
&lt;li&gt;🇮🇳 Mahārāshtra, India — 25,246&lt;/li&gt;
&lt;li&gt;🇺🇸 Texas, United States — 22,470&lt;/li&gt;
&lt;li&gt;🇨🇦 Ontario, Canada — 20,016&lt;/li&gt;
&lt;li&gt;🇳🇱 Noord-Holland, Netherlands — 19,826&lt;/li&gt;
&lt;li&gt;🇺🇸 Florida, United States — 18,997&lt;/li&gt;
&lt;li&gt;🇨🇳 Shanghai Shi, China — 18,991&lt;/li&gt;
&lt;/ul&gt;
&lt;h4 id="funding"&gt;FUNDING&lt;/h4&gt;
&lt;p&gt;Ever since our last, and &lt;a target="_blank" href="https://kdenlive.org/news/2025/fundraising-final-report/"&gt;very successful&lt;/a&gt;, fundraiser in 2022, we haven’t actively asked for donations, yet the community has continued to support us. We are very grateful for that.&lt;/p&gt;
&lt;p&gt;In 2025, we received a total of €9,344.80 from donations (down from €11,526.61 in 2024). Around 30% of the amount was given by donors who kindly set up a recurring plan. The average donation was about €25, with the lowest amount being €10 and the highest €500.&lt;/p&gt;
&lt;p&gt;We allocate 20% of our budget to &lt;a target="_blank" href="https://ev.kde.org/"&gt;KDE e.V.&lt;/a&gt; to support infrastructure costs (servers and related expenses), as well as administration, legal support, and travel. As in previous years, your contributions enable us to continue supporting Jean-Baptiste (Kdenlive's maintainer), allowing him to dedicate several days each month to Kdenlive in addition to his volunteer work.&lt;/p&gt;
&lt;h2 id="we-need-your-support"&gt;WE &lt;strong&gt;NEED&lt;/strong&gt; YOUR SUPPORT&lt;/h2&gt;
&lt;p&gt;Kdenlive needs your support to keep growing and improving. If just a quarter of the people who downloaded Kdenlive in 2025 contributed €5, our maintainers would be able to dedicate more time to the project, and it would even allow us to hire more develpers to speed up development and improve stability. Small amounts can make a big difference, please consider making a donation.&lt;/p&gt;
&lt;div&gt;
&lt;i&gt;A script element has been removed to ensure Planet works properly. Please find it in the original post.&lt;/i&gt;
&lt;iframe
loading="lazy"
src="https://donorbox.org/embed/kde-kdenlive"
name="donorbox"
allowpaymentrequest="true"
seamless="seamless"
frameborder="0"
scrolling="no"
height="900px"
width="100%"
style="min-width: 250px; max-height: none !important; height: 550px;"
data-donorbox-id="DonorBox-f1"
allow="payment"
&gt;&lt;/iframe&gt;
&lt;/div&gt;
&lt;p&gt;&lt;a target="_blank" href="https://kdenlive.org/fund/"&gt;More options to donate&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;You may also contribute by getting involved and helping in:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a target="_blank" href="https://kdenlive.org/bug-reports/"&gt;Reporting&lt;/a&gt;, debugging, and &lt;a target="_blank" href="https://community.kde.org/Guidelines_and_HOWTOs/Bug_triaging"&gt;triaging bugs&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a target="_blank" href="https://community.kde.org/Get_Involved/translation"&gt;Translating&lt;/a&gt; Kdenlive in your language&lt;/li&gt;
&lt;li&gt;Promote Kdenlive in your local community&lt;/li&gt;
&lt;/ul&gt;</description><author>Kdenlive</author></item><item><title>Hello old new “Projects” directory!</title><link>https://blog.tenstral.net/2026/04/hello-projects-directory.html</link><pubDate>Sat, 18 Apr 2026 08:06:00 +0000</pubDate><guid isPermaLink="true">https://blog.tenstral.net/?p=2053</guid><description>&lt;p&gt;If you have recently installed a very up-to-date Linux distribution with a desktop environment, or upgraded your system on a rolling-release distribution, you might have noticed that your home directory has a new folder: &amp;#8220;Projects&amp;#8221;&lt;/p&gt;
&lt;h2 class="wp-block-heading"&gt;Why?&lt;/h2&gt;
&lt;p&gt;With the recent 0.20 release of &lt;a target="_blank" href="https://www.freedesktop.org/wiki/Software/xdg-user-dirs/"&gt;xdg-user-dirs&lt;/a&gt; we enabled the &amp;#8220;Projects&amp;#8221; directory by default. Support for this has already existed since 2007, but was never formally enabled. This closes a &lt;a target="_blank" href="https://gitlab.freedesktop.org/xdg/xdg-user-dirs/-/work_items/3"&gt;more than 11 year old bug report&lt;/a&gt; that asked for this feature.&lt;/p&gt;
&lt;p&gt;The purpose of the &lt;em&gt;Projects&lt;/em&gt; directory is to give applications a default location to place project files that do not cleanly belong into one of the existing categories (Documents, Music, Pictures, Videos). Examples of this are software engineering projects, scientific projects, 3D printing projects, CAD design or even things like video editing projects, where project files would end up in the &amp;#8220;Projects&amp;#8221; directory, with output video being more at home in &amp;#8220;Videos&amp;#8221;.&lt;/p&gt;
&lt;p&gt;By enabling this by default, and subsequently in the coming months adding support to GLib, Flatpak, desktops and applications that want to make use of it, we hope to give applications that do operate in a &amp;#8220;project-centric&amp;#8221; manner with mixed media a better default storage location. As of now, those tools either default to the home directory, or will clutter the &amp;#8220;Documents&amp;#8221; folder, both of which is not ideal. It also gives users a default organization structure, hopefully leading to less clutter overall and better storage layouts.&lt;/p&gt;
&lt;h2 class="wp-block-heading"&gt;This sucks, I don&amp;#8217;t like it!&lt;/h2&gt;
&lt;figure class="wp-block-image size-full"&gt;&lt;a target="_blank" href="https://blog.tenstral.net/wp-content/uploads/2026/04/woman-pointing-at-projects-folder.avif"&gt;&lt;img fetchpriority="high" decoding="async" width="548" height="273" src="https://blog.tenstral.net/wp-content/uploads/2026/04/woman-pointing-at-projects-folder.avif" alt="" class="wp-image-2055" srcset="https://blog.tenstral.net/wp-content/uploads/2026/04/woman-pointing-at-projects-folder.avif 548w, https://blog.tenstral.net/wp-content/uploads/2026/04/woman-pointing-at-projects-folder-300x149.avif 300w" sizes="(max-width: 548px) 100vw, 548px" /&gt;&lt;/a&gt;&lt;/figure&gt;
&lt;p&gt;As usual, you are in control and can modify your system&amp;#8217;s behavior. If you do not like the &amp;#8220;Projects&amp;#8221; folder, &lt;strong&gt;simply delete it!&lt;/strong&gt; The &lt;em&gt;xdg-user-dirs&lt;/em&gt; utility will not try to create it again, and instead adjust the default location for this directory to your home directory. If you want more control, you can influence exactly what goes where by editing your &lt;code&gt;~/.config/user-dirs.dirs&lt;/code&gt; configuration file.&lt;/p&gt;
&lt;p&gt;If you are a system administrator or distribution vendor and want to set default locations for the default XDG directories, you can edit the &lt;code&gt;/etc/xdg/user-dirs.defaults&lt;/code&gt; file to set global defaults that affect all users on the system (users can still adjust the settings however they like though).&lt;/p&gt;
&lt;h2 class="wp-block-heading"&gt;What else is new?&lt;/h2&gt;
&lt;p&gt;Besides this change, the 0.20 release of &lt;code&gt;xdg-user-dirs&lt;/code&gt; brings full support for the Meson build system (dropping Automake), translation updates, and some robustness improvements to its code. We also fixed the &amp;#8220;arbitrary code execution from unsanitized input&amp;#8221; bug that the Arch Linux Wiki mentions &lt;a target="_blank" href="https://wiki.archlinux.org/title/XDG_user_directories#Querying_configured_directories"&gt;here&lt;/a&gt; for the &lt;code&gt;xdg-user-dirs&lt;/code&gt; utility, by replacing the shell script with a C binary.&lt;/p&gt;
&lt;p&gt;Thanks to everyone who contributed to this release!&lt;/p&gt;</description><author>Matthias Klumpp</author></item><item><title>KDE Sprint and Grazer Linuxtage 2026</title><link>https://www.volkerkrause.eu/2026/04/18/kde-sprint-linuxtage-graz-2026.html</link><pubDate>Sat, 18 Apr 2026 08:00:00 +0000</pubDate><guid isPermaLink="true">https://www.volkerkrause.eu/2026/04/18/kde-sprint-linuxtage-graz-2026</guid><description>&lt;p&gt;I spent the last week in Graz, Austria, attending a &lt;a target="_blank" href="https://community.kde.org/Sprints/MegaSprint/2026"&gt;KDE sprint&lt;/a&gt; as well
as &lt;a target="_blank" href="https://linuxtage.at"&gt;Grazer Linuxtage&lt;/a&gt;.&lt;/p&gt;
&lt;h3 id="kde-sprint"&gt;KDE Sprint&lt;/h3&gt;
&lt;p&gt;Just like &lt;a href="//www.volkerkrause.eu/2025/05/01/kde-plasma-mobile-sprint-graz-2025.html"&gt;last year&lt;/a&gt;,
the Grazer Linuxtage team had made rooms available for KDE people to meet in the week prior to the conference.
More than twenty contributors attended, below are a few notes from discussions I have been involved with.&lt;/p&gt;
&lt;figure&gt;
&lt;img src="https://www.volkerkrause.eu/assets/posts/230/kde-graz-megasprint-2026.jpg" alt="Photo of the KDE sprint at TU Graz." loading="lazy" /&gt;
&lt;figcaption&gt;Photo by Kieryn Darkwater&lt;/figcaption&gt;
&lt;/figure&gt;
&lt;h4 id="appstream-release-notes"&gt;AppStream release notes&lt;/h4&gt;
&lt;p&gt;We use &lt;a target="_blank" href="https://www.freedesktop.org/software/appstream/docs/"&gt;AppStream&lt;/a&gt; application metadata in a number of places
currently:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;The &lt;a target="_blank" href="https://apps.kde.org"&gt;apps.kde.org&lt;/a&gt; website.&lt;/li&gt;
&lt;li&gt;Software stores such as &lt;a target="_blank" href="https://flathub.org"&gt;Flathub&lt;/a&gt;, &lt;a target="_blank" href="https://f-droid.org"&gt;F-Droid&lt;/a&gt;, Google Play or the Microsoft Store.&lt;/li&gt;
&lt;li&gt;Software centers such as Discover.&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;In-app application metadata has so far been maintained separately though, using the &lt;a target="_blank" href="https://api.kde.org/kaboutdata.html"&gt;KAboutData API&lt;/a&gt;.
With KDE Frameworks 6.26 it will become possible to populate that from AppStream data as well,
reducing duplicated data and duplicated translation efforts.&lt;/p&gt;
&lt;p&gt;We also expanded how we use release notes from AppStream data:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Release notes &lt;a target="_blank" href="https://invent.kde.org/sysadmin/l10n-scripty/-/merge_requests/115"&gt;can now also be translated&lt;/a&gt;.&lt;/li&gt;
&lt;li&gt;There’s &lt;a target="_blank" href="https://invent.kde.org/frameworks/kcoreaddons/-/merge_requests/550"&gt;new API&lt;/a&gt; for accessing
AppStream release notes inside an application itself. This is meant to avoid duplicated efforts
for &lt;a target="_blank" href="https://invent.kde.org/libraries/ktextaddons/-/tree/master/textaddonswidgets/whatsnew"&gt;in-app release notes&lt;/a&gt;.&lt;/li&gt;
&lt;li&gt;The KDE Gear release automation will now &lt;a target="_blank" href="https://invent.kde.org/sysadmin/appstream-metainfo-release-update/-/merge_requests/8"&gt;handle notes for pre-releases&lt;/a&gt;
correctly. This means you can add release notes for users of CD builds already, those will get translated
and merged into the subsequent stable release notes automatically.&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;There’s a few more things to do here still:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;We don’t have a Kirigami-based standard component for in-app release notes yet.&lt;/li&gt;
&lt;li&gt;The metadata converters for F-Droid and Google Play don’t handle release notes yet.&lt;/li&gt;
&lt;/ul&gt;
&lt;h4 id="lsan-rollout-on-the-ci"&gt;LSAN rollout on the CI&lt;/h4&gt;
&lt;p&gt;After Albert had &lt;a target="_blank" href="https://invent.kde.org/sysadmin/ci-utilities/-/merge_requests/643"&gt;added&lt;/a&gt; infrastructure
for &lt;a target="_blank" href="https://clang.llvm.org/docs/LeakSanitizer.html"&gt;LeakSanitizer (LSAN)&lt;/a&gt; suppressions in the CI, we were
able to enable LSAN in several more repositories which had previously been blocked on “unfixable” or
intentional “leaks” outside of our control.&lt;/p&gt;
&lt;p&gt;The increased visibility on actual issues then also helped with identifying and fixing a couple more “real”
leaks, e.g. in &lt;a target="_blank" href="https://invent.kde.org/frameworks/kguiaddons/-/merge_requests/220"&gt;KGuiAddons&lt;/a&gt; and
&lt;a target="_blank" href="https://invent.kde.org/pim/libkgapi/-/merge_requests/57"&gt;LibKGAPI&lt;/a&gt;.&lt;/p&gt;
&lt;h4 id="qt-611-for-android"&gt;Qt 6.11 for Android&lt;/h4&gt;
&lt;p&gt;There has been some progress on the long overdue Qt update for our Android builds. This had been delayed
as it’ll imply some rather drastic changes to the supported Android versions and devices. Lacking alternatives
we will go ahead with this.&lt;/p&gt;
&lt;p&gt;In particular, after 26.04.0 is out this means &lt;strong&gt;only Android 9 and higher will be supported&lt;/strong&gt;, and
&lt;strong&gt;32bit ARM builds will be discontinued&lt;/strong&gt;.&lt;/p&gt;
&lt;p&gt;We prepared Qt 6.11 CI images and applied necessary build fixes to practically all of our apps that have Craft-based Android builds.
Initial test looks promising, and some of the annoying input handling glitches seem to have been fixed.&lt;/p&gt;
&lt;h4 id="sentry-for-android"&gt;Sentry for Android&lt;/h4&gt;
&lt;p&gt;Another Android-related topic we looked into was uploading crash information to KDE’s Sentry instance. Our Linux and
Windows builds can do this since some time, and it has been a great help with identifying, prioritizing and fixing
crashes.&lt;/p&gt;
&lt;p&gt;Initial experiments got this to work quickly on Android as well, but it will require more work to do this properly and give users full
control over whether they want to upload crash information or not. We explored a few options on how to do that and
have a plan now, but that yet has to be implemented.&lt;/p&gt;
&lt;h4 id="kmime-move-to-kde-frameworks"&gt;KMime move to KDE Frameworks&lt;/h4&gt;
&lt;p&gt;The long-lasting move of &lt;a target="_blank" href="https://api.kde.org/kmime-module.html"&gt;KMime&lt;/a&gt; to KDE Frameworks will finally happen
early May, after the 26.04 KDE Gear release and in time for the 6.27 KDE Frameworks release.&lt;/p&gt;
&lt;p&gt;Users of KMime will need a few minor build system adjustments for this. The CMake target name changes from &lt;code class="language-plaintext highlighter-rouge"&gt;KPim6::Mime&lt;/code&gt; to
&lt;code class="language-plaintext highlighter-rouge"&gt;KF6::Mime&lt;/code&gt;, and the version number changes from KDE PIM versioning KDE Frameworks versioning. You can either replace
this at once, or use the forward-compatibility approach suggested below.&lt;/p&gt;
&lt;p&gt;The following CMake snippet replaces the previous &lt;code class="language-plaintext highlighter-rouge"&gt;find_package&lt;/code&gt; call for &lt;code class="language-plaintext highlighter-rouge"&gt;KPim6Mime&lt;/code&gt; and will handle both variants
from before and after the move.&lt;/p&gt;
&lt;figure class="highlight"&gt;&lt;pre&gt;&lt;code class="language-cmake" data-lang="cmake"&gt;&lt;span class="nb"&gt;find_package&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;KF6Mime 6.27 CONFIG&lt;span class="p"&gt;)&lt;/span&gt;
&lt;span class="nb"&gt;if&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;NOT TARGET KF6::Mime&lt;span class="p"&gt;)&lt;/span&gt;
&lt;span class="nb"&gt;find_package&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;KPim6Mime 6.7.0 CONFIG REQUIRED&lt;span class="p"&gt;)&lt;/span&gt;
&lt;span class="nb"&gt;add_library&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;KF6::Mime ALIAS KPim6::Mime&lt;span class="p"&gt;)&lt;/span&gt;
&lt;span class="nb"&gt;endif&lt;/span&gt;&lt;span class="p"&gt;()&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/figure&gt;
&lt;p&gt;Target names in &lt;code class="language-plaintext highlighter-rouge"&gt;target_link_library&lt;/code&gt; calls can then be switched to the new &lt;code class="language-plaintext highlighter-rouge"&gt;KF6::Mime&lt;/code&gt; already. Once the transition
is complete, the above snippet can be simplified to a single &lt;code class="language-plaintext highlighter-rouge"&gt;find_package&lt;/code&gt; call for the new variant again, without
needing to touch anything else anymore.&lt;/p&gt;
&lt;h4 id="akademy-preparations"&gt;Akademy preparations&lt;/h4&gt;
&lt;figure&gt;&lt;a target="_blank" href="https://akademy.kde.org/2026"&gt;
&lt;img src="//www.volkerkrause.eu/assets/posts/230/kde-akademy-2026.jpg" alt="Akademy Graz September 19-24" width="320" height="320" loading="lazy" /&gt;
&lt;/a&gt;&lt;/figure&gt;
&lt;p&gt;While we were in Graz the dates for this year’s &lt;a target="_blank" href="https://akademy.kde.org"&gt;Akademy&lt;/a&gt; were announced: September 19-24.
&lt;a target="_blank" href="https://akademy.kde.org/2026/register"&gt;Registration&lt;/a&gt; as well as the &lt;a target="_blank" href="https://akademy.kde.org/2026/cfp"&gt;Call for Participation&lt;/a&gt; are
open as well.&lt;/p&gt;
&lt;p&gt;As it was already known that Akademy would be in Graz this year, we could use the opportunity to inspect venues, test food options,
as well as to review and improve &lt;a target="_blank" href="https://openstreetmap.org"&gt;OSM&lt;/a&gt; (indoor) mapping of the conference location.&lt;/p&gt;
&lt;h4 id="itinerary"&gt;Itinerary&lt;/h4&gt;
&lt;p&gt;With a bunch of people traveling to the sprint, &lt;a target="_blank" href="https://apps.kde.org/itinerary"&gt;Itinerary&lt;/a&gt; also got a bit of attention
of course:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Performance of opening the “My Data” page the first time was improved, by optimizing computing some of the statistics
shown on that page.&lt;/li&gt;
&lt;li&gt;A new way of sharing GraphQL query fragments should simplify maintaining support for the various &lt;a target="_blank" href="https://opentripplanner.org"&gt;OpenTripPlanner&lt;/a&gt;
flavors in &lt;a target="_blank" href="https://commits.kde.org/kpublictransport"&gt;KPublicTransport&lt;/a&gt;. For some of the backends, the information
available for rental bikes/scooters/cars became more detailed as a result of this.&lt;/li&gt;
&lt;li&gt;&lt;a target="_blank" href="https://kate-editor.org"&gt;Kate’s&lt;/a&gt; syntax highlighting got
&lt;a target="_blank" href="https://invent.kde.org/frameworks/syntax-highlighting/-/merge_requests/788"&gt;support for IATA SSIM flight schedules&lt;/a&gt;.
That’s fallout from work on importing such data into &lt;a target="_blank" href="https://transitous.org"&gt;Transitous&lt;/a&gt;, where it will
eventually also benefit Itinerary and &lt;a target="_blank" href="https://apps.kde.org/ktrip"&gt;KTrip&lt;/a&gt;.&lt;/li&gt;
&lt;/ul&gt;
&lt;h4 id="and-more"&gt;And more…&lt;/h4&gt;
&lt;p&gt;That’s not all of course, other topics included:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Improving the usability of the &lt;a target="_blank" href="https://unifiedpush.org"&gt;push services&lt;/a&gt; configuration in System Settings.&lt;/li&gt;
&lt;li&gt;Enabling System Settings to &lt;a target="_blank" href="https://invent.kde.org/plasma/plasma-workspace/-/merge_requests/5827"&gt;configure notifications from Flatpak apps using KNotificiation&lt;/a&gt;.&lt;/li&gt;
&lt;li&gt;Aligning the different ways currently used to share plain text via &lt;a target="_blank" href="https://commits.kde.org/purpose"&gt;Purpose&lt;/a&gt;.&lt;/li&gt;
&lt;li&gt;Fixing some non-obvious issues with the static builds after a recent CI image update.&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;There’s also reports from e.g. &lt;a target="_blank" href="https://mxdarkwater.com/2026/04/10/kde-in-graz/"&gt;Kieryn&lt;/a&gt;,
&lt;a target="_blank" href="https://tsdgeos.blogspot.com/2026/04/a-week-in-graz-kde-megasprint-and.html"&gt;Albert&lt;/a&gt;
and &lt;a target="_blank" href="https://merritt.codes/blog/2026/04/15/2026/_kde_mega_sprint"&gt;Kristen&lt;/a&gt;
on &lt;a target="_blank" href="https://planet.kde.org"&gt;Planet KDE&lt;/a&gt;
with more details and other perspectives.&lt;/p&gt;
&lt;h3 id="grazer-linuxtage"&gt;Grazer Linuxtage&lt;/h3&gt;
&lt;h4 id="kde"&gt;KDE&lt;/h4&gt;
&lt;p&gt;At Grazer Linuxtage we had a KDE booth again, showing devices running &lt;a target="_blank" href="https://kde.org/plasma-desktop/"&gt;Plasma&lt;/a&gt;,
&lt;a target="_blank" href="https://krita.org"&gt;Krita&lt;/a&gt; and &lt;a target="_blank" href="https://plasma-mobile.org/"&gt;Plasma Mobile&lt;/a&gt;,
handing out stickers as well as the famous amigurumi Konqis, collecting donations, and of course
with a bunch of KDE contributors around to talk to.&lt;/p&gt;
&lt;figure&gt;
&lt;img src="https://www.volkerkrause.eu/assets/posts/230/kde-grazer-linuxtage-2026-booth.jpg" alt="Photo of the KDE booth at Grazer Linuxtage." loading="lazy" /&gt;
&lt;figcaption&gt;KDE's booth at Grazer Linuxtage (photo by Kieryn Darkwater)&lt;/figcaption&gt;
&lt;/figure&gt;
&lt;p&gt;Albert also did a presentation about &lt;a target="_blank" href="https://pretalx.linuxtage.at/glt26/talk/JJUQSM/"&gt;30 years of KDE&lt;/a&gt;.&lt;/p&gt;
&lt;h4 id="transitous"&gt;Transitous&lt;/h4&gt;
&lt;p&gt;Also as part of the conference program I &lt;a target="_blank" href="https://pretalx.linuxtage.at/glt26/talk/AJZHEG/"&gt;spoke about Transitous&lt;/a&gt;
and what has been built for that and around that in the past two years.&lt;/p&gt;
&lt;p&gt;Following the &lt;a href="//www.volkerkrause.eu/2026/04/04/osm-fossgis-conferenz-2026.html"&gt;recent discussions about dynamic traffic data&lt;/a&gt;,
the talk about &lt;a target="_blank" href="https://pretalx.linuxtage.at/glt26/talk/SRQ3M9/"&gt;monitoring vehicle-to-vehicle and vehicle-to-infrastructure messages&lt;/a&gt;
was particularly interesting. The information shown on &lt;a target="_blank" href="https://opentrafficmap.org/"&gt;opentrafficmap.org&lt;/a&gt; is obtained that way,
and shows how incredibly detailed this is.&lt;/p&gt;
&lt;p&gt;There’s current positions of trams, busses, and regular cars, speed, acceleration vectors, status of all external lights, and which pedal gets pressed.
Traffic lights report their current state and change timings as well as provide a full machine-readable model of their signal groups and lane relations.
All of that in a standardized and (intentionally) unencrypted form.&lt;/p&gt;
&lt;p&gt;Lots of potential in this, I wasn’t aware this went anywhere after things had gotten a bit quieter around the self-driving cars hype.&lt;/p&gt;
&lt;h3 id="how-you-can-help"&gt;How you can help!&lt;/h3&gt;
&lt;p&gt;Bringing people together, for a small meeting or a big conference, is extremely useful and productive.
The necessary travel and logistics come with costs though, which is where your donations to organizations
like &lt;a target="_blank" href="https://kde.org/donate/"&gt;KDE e.V.&lt;/a&gt; or &lt;a target="_blank" href="https://www.linuxtage.at/help/"&gt;Grazer Linuxtage&lt;/a&gt; help!&lt;/p&gt;</description><author>Volker Krause</author></item><item><title>This Week in Plasma: Per-Screen Virtual Desktops and Wayland Session Restore</title><link>https://blogs.kde.org/2026/04/18/this-week-in-plasma-per-screen-virtual-desktops-and-wayland-session-restore/</link><pubDate>Sat, 18 Apr 2026 00:00:01 +0000</pubDate><guid isPermaLink="true">https://blogs.kde.org/2026/04/18/this-week-in-plasma-per-screen-virtual-desktops-and-wayland-session-restore/</guid><description>&lt;!-- Example wording for a change, MR version. (Developer Name, [repo-name MR #xxx](https://invent.kde.org/plasma/repo-name/-/merge_requests/xxx)) --&gt;
&lt;!-- Example wording for a change, Bugzilla version. (Developer Name, [KDE Bugzilla #xxx](https://bugs.kde.org/show_bug.cgi?id=xxx)) --&gt;
&lt;!-- ![](thumbnail.png) --&gt;
&lt;!--
&lt;section class="swiper d-flex mb-5" aria-label="Screenshots" role="list"&gt;
&lt;div class="swiper-wrapper d-flex my-3" role="listitem"&gt;
&lt;/div&gt;
&lt;div class="swiper-pagination" style="bottom: 0"&gt;&lt;/div&gt;
&lt;div class="swiper-button-prev"&gt;&lt;/div&gt;
&lt;div class="swiper-button-next"&gt;&lt;/div&gt;
&lt;/section&gt;
--&gt;
&lt;!--
&lt;figure class="text-center ratio ratio-16x9" style=""&gt;
&lt;video controls&gt;&lt;source src="%25!s%28%3cnil%3e%29something.mp4" type="video/mp4" /&gt;&lt;/video&gt;&lt;/figure&gt;
--&gt;
&lt;p&gt;Welcome to a new issue of &lt;em&gt;This Week in Plasma!&lt;/em&gt;&lt;/p&gt;
&lt;p&gt;Last week over 20 KDE contributors converged on the Austrian city of Graz for our &lt;a target="_blank" href="https://community.kde.org/Sprints/MegaSprint/2026/"&gt;annual mega-sprint&lt;/a&gt;. It was a busy week, offering a good opportunity for the kinds of face-to-face conversations that can unblock stuck work and reach new consensus. Expect reports to appear on &lt;a target="_blank" href="https://planet.kde.org/"&gt;Planet KDE&lt;/a&gt; over the next week or two.&lt;/p&gt;
&lt;p&gt;We skipped an issue of TWiP due to the sprint but these past two weeks have indeed been busy! Some major features landed, along with a slew of impactful UI improvements. Let’s get right into it:&lt;/p&gt;
&lt;h2 id="notable-new-features"&gt;Notable new features&lt;/h2&gt;
&lt;!-- Can find some with https://invent.kde.org/groups/plasma/-/merge_requests/?sort=merged_at_desc&amp;state=merged&amp;label_name%5B%5D=Feature&amp;first_page_size=20 --&gt;
&lt;h3 id="plasma-67"&gt;Plasma 6.7&lt;/h3&gt;
&lt;p&gt;Each screen can now switch between any of the system’s virtual desktops independently! (Hynek Schlindenbuch, &lt;a target="_blank" href="https://bugs.kde.org/show_bug.cgi?id=107302"&gt;KDE Bugzilla #107302&lt;/a&gt;)&lt;/p&gt;
&lt;figure class="text-center ratio ratio-16x9" style=""&gt;
&lt;video controls&gt;&lt;source src="https://blogs.kde.org/2026/04/18/this-week-in-plasma-per-screen-virtual-desktops-and-wayland-session-restore/kde-per-output-desktops-demo-compressed.mp4" type="video/mp4" /&gt;&lt;/video&gt;&lt;/figure&gt;
&lt;p&gt;You can now choose your default calendar app on System Settings’ Default Applications page. (Denys Madureira, &lt;a target="_blank" href="https://invent.kde.org/plasma/plasma-workspace/-/merge_requests/6468"&gt;plasma-workspace MR #6468&lt;/a&gt;)&lt;/p&gt;
&lt;p&gt;&lt;figure&gt;
&lt;img class="img-fluid" alt="Default calendar chooser" src="https://blogs.kde.org/2026/04/18/this-week-in-plasma-per-screen-virtual-desktops-and-wayland-session-restore/default-calendar-chooser.png"
style="max-width: 100%; height: auto"
/&gt;
&lt;/figure&gt;
…And you can now middle-click on the Digital Clock widget to open the calendar app you’ve configured there. (Denys Madureira, &lt;a target="_blank" href="https://invent.kde.org/plasma/plasma-workspace/-/merge_requests/6462"&gt;plasma-workspace MR #6462&lt;/a&gt;)&lt;/p&gt;
&lt;figure&gt;
&lt;img class="img-fluid" alt="Digital Clock widget tooltip showing option to open the default calendar app" src="https://blogs.kde.org/2026/04/18/this-week-in-plasma-per-screen-virtual-desktops-and-wayland-session-restore/middle-click-on-digital-clock-to-open-calendar-app.png"
style="max-width: 100%; height: auto"
/&gt;
&lt;/figure&gt;
&lt;p&gt;You can now configure the &lt;kbd&gt;Alt&lt;/kbd&gt;+&lt;kbd&gt;Tab&lt;/kbd&gt; window switcher to always appear on the primary screen, rather than whichever screen has keyboard focus or the pointer on it. (Yuki Tsujii, &lt;a target="_blank" href="https://bugs.kde.org/show_bug.cgi?id=329696"&gt;KDE Bugzilla #329696&lt;/a&gt;)&lt;/p&gt;
&lt;p&gt;You can now mark app-specific actions that you find in a search as favorites. (Kai Uwe Broulik, &lt;a target="_blank" href="https://invent.kde.org/plasma/plasma-workspace/-/merge_requests/6224"&gt;plasma-workspace MR #6224&lt;/a&gt;)&lt;/p&gt;
&lt;figure&gt;
&lt;img class="img-fluid" alt="App action being marked as a favorite" src="https://blogs.kde.org/2026/04/18/this-week-in-plasma-per-screen-virtual-desktops-and-wayland-session-restore/favorite-app-actions.png"
style="max-width: 100%; height: auto"
/&gt;
&lt;/figure&gt;
&lt;p&gt;The Kicker Application Menu widget now highlights newly-installed apps, just like the Kickoff Application Launcher widget does. (Christoph Wolk, &lt;a target="_blank" href="https://invent.kde.org/plasma/plasma-desktop/-/merge_requests/3649"&gt;plasma-desktop MR #3649&lt;/a&gt;)&lt;/p&gt;
&lt;p&gt;You can now drag-and-drop apps to the “Favorites” sections of the Kickoff, Kicker, and Dashboard widgets. (Christoph Wolk, &lt;a target="_blank" href="https://bugs.kde.org/show_bug.cgi?id=383302"&gt;KDE Bugzilla #383302&lt;/a&gt; and &lt;a target="_blank" href="https://invent.kde.org/plasma/plasma-desktop/-/merge_requests/3652"&gt;plasma-desktop MR #3652&lt;/a&gt;)&lt;/p&gt;
&lt;p&gt;If you find yourself captivated by a picture of the day wallpaper image, you can now right-click on it and access external information about it. (Kai Uwe Broulik, &lt;a target="_blank" href="https://invent.kde.org/plasma/kdeplasma-addons/-/merge_requests/1035"&gt;kdeplasma-addons MR #1035&lt;/a&gt;)&lt;/p&gt;
&lt;figure&gt;
&lt;img class="img-fluid" alt="Menu item letting you see information about the current picture of the day wallpaper" src="https://blogs.kde.org/2026/04/18/this-week-in-plasma-per-screen-virtual-desktops-and-wayland-session-restore/info-about-picture-of-the-day-image.png"
style="max-width: 100%; height: auto"
/&gt;
&lt;/figure&gt;
&lt;p&gt;You can now optionally set Discover to quit after installing updates. (Taras Oleksyn, &lt;a target="_blank" href="https://bugs.kde.org/show_bug.cgi?id=508743"&gt;KDE Bugzilla #508743&lt;/a&gt;)&lt;/p&gt;
&lt;figure&gt;
&lt;img class="img-fluid" alt="Option in Discover to quit after installing updates" src="https://blogs.kde.org/2026/04/18/this-week-in-plasma-per-screen-virtual-desktops-and-wayland-session-restore/discover-quit-option.png"
style="max-width: 100%; height: auto"
/&gt;
&lt;/figure&gt;
&lt;h2 id="notable-ui-improvements"&gt;Notable UI improvements&lt;/h2&gt;
&lt;!-- Can find some with https://invent.kde.org/groups/plasma/-/merge_requests/?sort=merged_at_desc&amp;state=merged&amp;label_name%5B%5D=Enhancement&amp;first_page_size=20 --&gt;
&lt;h3 id="plasma-665"&gt;Plasma 6.6.5&lt;/h3&gt;
&lt;p&gt;While entering the password for a Wi-Fi network using the Networks widget, the password field no longer loses keyboard focus if you happen to move the pointer away from it. (Tobias Fella, &lt;a target="_blank" href="https://invent.kde.org/plasma/plasma-nm/-/merge_requests/556"&gt;plasma-nm MR #556&lt;/a&gt;)&lt;/p&gt;
&lt;h3 id="plasma-67-1"&gt;Plasma 6.7&lt;/h3&gt;
&lt;p&gt;There’s now a new standard “Badge” component in Kirigami, and many parts of Plasma have been ported to use it. (Nate Graham, &lt;a target="_blank" href="https://invent.kde.org/frameworks/kirigami/-/merge_requests/1847"&gt;kirigami MR #1847&lt;/a&gt;, &lt;a target="_blank" href="https://invent.kde.org/plasma/plasma-desktop/-/merge_requests/3089"&gt;plasma-desktop MR #3089&lt;/a&gt;, &lt;a target="_blank" href="https://invent.kde.org/plasma/plasma-workspace/-/merge_requests/6488"&gt;plasma-workspace MR #6488&lt;/a&gt;, &lt;a target="_blank" href="https://invent.kde.org/plasma/systemsettings/-/merge_requests/399"&gt;systemsettings MR #399&lt;/a&gt;, &lt;a target="_blank" href="https://invent.kde.org/plasma/discover/-/merge_requests/1290"&gt;discover MR #1290&lt;/a&gt;, and &lt;a target="_blank" href="https://invent.kde.org/plasma/kinfocenter/-/merge_requests/262"&gt;kinfocenter MR #262&lt;/a&gt;)&lt;/p&gt;
&lt;section class="swiper d-flex mb-5" aria-label="Screenshots" role="list"&gt;
&lt;div class="swiper-wrapper d-flex my-3" role="listitem"&gt;
&lt;div class="swiper-slide swiper-slide-active"&gt;
&lt;img src="https://blogs.kde.org/2026/04/18/this-week-in-plasma-per-screen-virtual-desktops-and-wayland-session-restore/badge-after.png" alt="After" lazy class="rounded"&gt;
&lt;a class="d-block text-center mt-2" target="_blank" href="https://kde.org"&gt;After&lt;/a&gt;
&lt;/div&gt;
&lt;div class="swiper-slide"&gt;
&lt;img src="https://blogs.kde.org/2026/04/18/this-week-in-plasma-per-screen-virtual-desktops-and-wayland-session-restore/badge-before.png" alt="Before" lazy class="rounded"&gt;
&lt;a class="d-block text-center mt-2" target="_blank" href="https://kde.org"&gt;Before&lt;/a&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;div class="swiper-pagination" style="bottom: 0"&gt;&lt;/div&gt;
&lt;div class="swiper-button-prev"&gt;&lt;/div&gt;
&lt;div class="swiper-button-next"&gt;&lt;/div&gt;
&lt;/section&gt;
&lt;p&gt;The Input Method System Tray widget no longer &lt;em&gt;disables&lt;/em&gt; the active input method if you click it while the input method isn’t currently visible. Now it just shows and hides it. (Aleix Pol Gonzalez, &lt;a target="_blank" href="https://invent.kde.org/plasma/plasma-workspace/-/merge_requests/6485"&gt;plasma-workspace MR #6485&lt;/a&gt;)&lt;/p&gt;
&lt;p&gt;Improved the design of Discover’s grid and list items, which also slightly increases the information density of the pages that show them. (Nate Graham, &lt;a target="_blank" href="https://invent.kde.org/plasma/discover/-/merge_requests/1292"&gt;discover MR #1292&lt;/a&gt;)&lt;/p&gt;
&lt;section class="swiper d-flex mb-5" aria-label="Screenshots" role="list"&gt;
&lt;div class="swiper-wrapper d-flex my-3" role="listitem"&gt;
&lt;div class="swiper-slide swiper-slide-active"&gt;
&lt;img src="https://blogs.kde.org/2026/04/18/this-week-in-plasma-per-screen-virtual-desktops-and-wayland-session-restore/discover-after.png" alt="After" lazy class="rounded"&gt;
&lt;a class="d-block text-center mt-2" target="_blank" href="https://kde.org"&gt;After&lt;/a&gt;
&lt;/div&gt;
&lt;div class="swiper-slide"&gt;
&lt;img src="https://blogs.kde.org/2026/04/18/this-week-in-plasma-per-screen-virtual-desktops-and-wayland-session-restore/discover-before.png" alt="Before" lazy class="rounded"&gt;
&lt;a class="d-block text-center mt-2" target="_blank" href="https://kde.org"&gt;Before&lt;/a&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;div class="swiper-pagination" style="bottom: 0"&gt;&lt;/div&gt;
&lt;div class="swiper-button-prev"&gt;&lt;/div&gt;
&lt;div class="swiper-button-next"&gt;&lt;/div&gt;
&lt;/section&gt;
&lt;p&gt;The Kicker Application Menu widget now shows tooltips for items whose labels have been elided. (Christoph Wolk, &lt;a target="_blank" href="https://bugs.kde.org/show_bug.cgi?id=515608"&gt;KDE Bugzilla #515608&lt;/a&gt;)&lt;/p&gt;
&lt;p&gt;System Monitor now differentiates multiple GPUs by their names, rather than by arbitrary numbers. (Bernhard Friedreich, &lt;a target="_blank" href="https://invent.kde.org/plasma/libksysguard/-/merge_requests/464"&gt;libksysguard MR #464&lt;/a&gt; and &lt;a target="_blank" href="https://invent.kde.org/plasma/ksystemstats/-/merge_requests/129"&gt;ksystemstats MR #129&lt;/a&gt;)&lt;/p&gt;
&lt;p&gt;System Monitor now exposes top-level actions you can use to launch it and go straight to a specific page. These can be invoked from the app’s context menu, or via a global shortcut you set yourself. (Bernhard Friedreich, &lt;a target="_blank" href="https://invent.kde.org/plasma/plasma-systemmonitor/-/merge_requests/427"&gt;plasma-systemmonitor MR #427&lt;/a&gt;)&lt;/p&gt;
&lt;figure&gt;
&lt;img class="img-fluid" alt="System Monitor app’s context menu shoting actions to jump to specific pages" src="https://blogs.kde.org/2026/04/18/this-week-in-plasma-per-screen-virtual-desktops-and-wayland-session-restore/system-monitor-go-to-page-actions.png"
style="max-width: 100%; height: auto"
/&gt;
&lt;/figure&gt;
&lt;p&gt;The Margins Separator widget is now added from the panel configuration dialog’s “Add New” menu, rather than the widget explorer sidebar. This matches how the similar spacer widget is added. (Antti Savolainen, &lt;a target="_blank" href="https://invent.kde.org/plasma/plasma-workspace/-/merge_requests/6494"&gt;plasma-workspace MR #6494&lt;/a&gt; and &lt;a target="_blank" href="https://invent.kde.org/plasma/plasma-desktop/-/merge_requests/3663"&gt;plasma-desktop MR #3663&lt;/a&gt;)&lt;/p&gt;
&lt;figure&gt;
&lt;img class="img-fluid" alt="Margins Separator item now lives in the panel configuration dialog" src="https://blogs.kde.org/2026/04/18/this-week-in-plasma-per-screen-virtual-desktops-and-wayland-session-restore/add-margins-separator-in-panel-configuration-dialog.png"
style="max-width: 100%; height: auto"
/&gt;
&lt;/figure&gt;
&lt;p&gt;The clipboard popup invoked with &lt;kbd&gt;Meta&lt;/kbd&gt;+&lt;kbd&gt;V&lt;/kbd&gt; now closes if it’s open when you press that keyboard shortcut a second time. (Kristem McWilliam, &lt;a target="_blank" href="https://invent.kde.org/plasma/plasma-workspace/-/merge_requests/6450"&gt;plasma-workspace MR #6450&lt;/a&gt;)&lt;/p&gt;
&lt;p&gt;Improved how System Settings’ Shortcuts page handles being told to assign a shortcut that’s already assigned to something else. (David Bacskay-Nagy, &lt;a target="_blank" href="https://bugs.kde.org/show_bug.cgi?id=484526"&gt;KDE Bugzilla #484526&lt;/a&gt; and &lt;a target="_blank" href="https://bugs.kde.org/show_bug.cgi?id=489544"&gt;KDE Bugzilla #489544&lt;/a&gt;)&lt;/p&gt;
&lt;p&gt;KRunner now lets you evaluate fancy mathematical expressions more flexibly; in the past you could ask for &lt;code&gt;sqrt(2) + 2&lt;/code&gt; but not &lt;code&gt;2 + sqrt(2)&lt;/code&gt;; now both are accepted. (Alex Cizinsky, &lt;a target="_blank" href="https://bugs.kde.org/show_bug.cgi?id=496343"&gt;KDE Bugzilla #496343&lt;/a&gt;)&lt;/p&gt;
&lt;h3 id="frameworks-626"&gt;Frameworks 6.26&lt;/h3&gt;
&lt;p&gt;The dialog that asks you if you want to launch or edit an executable text file (like a &lt;code&gt;.desktop&lt;/code&gt; file) no longer gives you the opportunity to tell it to always do that thing. This behavior was making &lt;code&gt;.desktop&lt;/code&gt; files un-launchable for people who selected the option to always open those types of files in a text editor. Anyone who wants to use this feature can still configure it in Dolphin’s settings. (Nate Graham, &lt;a target="_blank" href="https://invent.kde.org/frameworks/kio/-/merge_requests/2171"&gt;kio MR #2171&lt;/a&gt;)&lt;/p&gt;
&lt;section class="swiper d-flex mb-5" aria-label="Screenshots" role="list"&gt;
&lt;div class="swiper-wrapper d-flex my-3" role="listitem"&gt;
&lt;div class="swiper-slide swiper-slide-active"&gt;
&lt;img src="https://blogs.kde.org/2026/04/18/this-week-in-plasma-per-screen-virtual-desktops-and-wayland-session-restore/open-or-edit-after.png" alt="After" lazy class="rounded"&gt;
&lt;a class="d-block text-center mt-2" target="_blank" href="https://kde.org"&gt;After&lt;/a&gt;
&lt;/div&gt;
&lt;div class="swiper-slide"&gt;
&lt;img src="https://blogs.kde.org/2026/04/18/this-week-in-plasma-per-screen-virtual-desktops-and-wayland-session-restore/open-or-edit-before.png" alt="Before" lazy class="rounded"&gt;
&lt;a class="d-block text-center mt-2" target="_blank" href="https://kde.org"&gt;Before&lt;/a&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;div class="swiper-pagination" style="bottom: 0"&gt;&lt;/div&gt;
&lt;div class="swiper-button-prev"&gt;&lt;/div&gt;
&lt;div class="swiper-button-next"&gt;&lt;/div&gt;
&lt;/section&gt;
&lt;p&gt;Removed the CFP franc from the list of common currencies, so it no longer shows up automatically for every currency conversion run using KRunner-powered searches. (Pellaeon Lin, &lt;a target="_blank" href="https://invent.kde.org/frameworks/kunitconversion/-/merge_requests/84"&gt;kunitconversion MR #84&lt;/a&gt;)&lt;/p&gt;
&lt;h2 id="notable-bug-fixes"&gt;Notable bug fixes&lt;/h2&gt;
&lt;!--Can find some with https://tinyurl.com/bdepnh4v --&gt;
&lt;h3 id="plasma-664"&gt;Plasma 6.6.4&lt;/h3&gt;
&lt;p&gt;Fixed a case where Plasma Keyboard could crash after &lt;kbd&gt;Alt&lt;/kbd&gt;+&lt;kbd&gt;Tab&lt;/kbd&gt;bing away from a window marked as “keep above others”. (Devin Lin, &lt;a target="_blank" href="https://bugs.kde.org/show_bug.cgi?id=517087"&gt;KDE Bugzilla #517087&lt;/a&gt;)&lt;/p&gt;
&lt;p&gt;Worked around a bug added in Qt 6.11 that made some of Spectacle’s annotation tools unclickable. (Oliver Beard, &lt;a target="_blank" href="https://bugs.kde.org/show_bug.cgi?id=515304"&gt;KDE Bugzilla #515304&lt;/a&gt;)&lt;/p&gt;
&lt;p&gt;Fixed a layout issue in the Activity Pager widget that made it look weird at specific non-default panel sizes. (Marco Martin, &lt;a target="_blank" href="https://bugs.kde.org/show_bug.cgi?id=518451"&gt;KDE Bugzilla #518451&lt;/a&gt;)&lt;/p&gt;
&lt;h3 id="plasma-665-1"&gt;Plasma 6.6.5&lt;/h3&gt;
&lt;p&gt;Fixed a case where KWin could crash on logout when the session that’s closing had sent any emulated keyboard or mouse events. (Vlad Zahorodnii, &lt;a target="_blank" href="https://invent.kde.org/plasma/kwin/-/merge_requests/9092"&gt;kwin MR #9092&lt;/a&gt;)&lt;/p&gt;
&lt;p&gt;Fixed an issue with the screen locker that could cause the buttons to malfunction and leave you unable to unlock after you pressed the &lt;kbd&gt;Esc&lt;/kbd&gt; key in combination with various other actions with specific timings. (Akseli Lahtinen, &lt;a target="_blank" href="https://bugs.kde.org/show_bug.cgi?id=515299"&gt;KDE Bugzilla #515299&lt;/a&gt;)&lt;/p&gt;
&lt;p&gt;Fixed an issue that made color picker functionality throughout the system return random colors on systems with certain graphics hardware. (Xaver Hugl, &lt;a target="_blank" href="https://bugs.kde.org/show_bug.cgi?id=518770"&gt;KDE Bugzilla #518770&lt;/a&gt;)&lt;/p&gt;
&lt;p&gt;Fixed an issue that made the clock times shown on the lockscreen differ across the screens of a multi-screen setup. (DeepChirp, &lt;a target="_blank" href="https://bugs.kde.org/show_bug.cgi?id=516479"&gt;KDE Bugzilla #516479&lt;/a&gt;)&lt;/p&gt;
&lt;p&gt;Fixed two issues that made network connections added from the Plasma setup wizard not always work properly. (Adam Williamson, &lt;a target="_blank" href="https://bugs.kde.org/show_bug.cgi?id=514841"&gt;KDE Bugzilla #514841&lt;/a&gt; and &lt;a target="_blank" href="https://invent.kde.org/plasma/plasma-setup/-/merge_requests/100"&gt;plasma-setup MR #100&lt;/a&gt;)&lt;/p&gt;
&lt;p&gt;Fixed a couple of cases where auto-hide panels might not hide properly when there were any unread notifications. (Patrick Cleary, &lt;a target="_blank" href="https://bugs.kde.org/show_bug.cgi?id=519046"&gt;KDE Bugzilla #519046&lt;/a&gt;)&lt;/p&gt;
&lt;p&gt;Switching away from the Networks Widget in the System Tray no longer briefly makes a placeholder message appear. (Tobias Fella, &lt;a target="_blank" href="https://bugs.kde.org/show_bug.cgi?id=511367"&gt;KDE Bugzilla #511367&lt;/a&gt;)&lt;/p&gt;
&lt;p&gt;Improved the reliability of the Weather Widget’s icon fallback behavior, making it less likely to show broken weather icons. (Ismael Asensio, &lt;a target="_blank" href="https://invent.kde.org/plasma/kdeplasma-addons/-/merge_requests/1032"&gt;kdeplasma-addons MR #1032&lt;/a&gt;)&lt;/p&gt;
&lt;h3 id="plasma-67-2"&gt;Plasma 6.7&lt;/h3&gt;
&lt;p&gt;Fixed an issue that could make the Audio Volume widget not notice that a new audio device was connected and became the default one. (Oliver Beard, &lt;a target="_blank" href="https://invent.kde.org/plasma/plasma-pa/-/merge_requests/393"&gt;plasma-pa MR #393&lt;/a&gt;)&lt;/p&gt;
&lt;p&gt;Using the clipboard’s non-default “Never save [non-text items] in history” option no longer breaks the ability to paste items that have been moved to the top of the clipboard history. (Christoph Wolk, &lt;a target="_blank" href="https://bugs.kde.org/show_bug.cgi?id=514095"&gt;KDE Bugzilla #514095&lt;/a&gt;)&lt;/p&gt;
&lt;p&gt;Apps in the Quick Launch widget can once again be re-arranged. (Alex Folland, &lt;a target="_blank" href="https://bugs.kde.org/show_bug.cgi?id=481922"&gt;KDE Bugzilla #481922&lt;/a&gt;)&lt;/p&gt;
&lt;p&gt;Fixed two quirky issues with Spectacle’s magnifier in Rectangular Region mode. (Noah Davis, &lt;a target="_blank" href="https://bugs.kde.org/show_bug.cgi?id=509776"&gt;KDE Bugzilla #509776&lt;/a&gt; and &lt;a target="_blank" href="https://bugs.kde.org/show_bug.cgi?id=509777"&gt;KDE Bugzilla #509777&lt;/a&gt;)&lt;/p&gt;
&lt;h2 id="notable-in-performance--technical"&gt;Notable in performance &amp;amp; technical&lt;/h2&gt;
&lt;h3 id="plasma-67-3"&gt;Plasma 6.7&lt;/h3&gt;
&lt;p&gt;KWin now supports the Wayland session management protocol! This is an important step for apps to be able to remember their sizes and positions after restarting the system. The next step is for toolkits, libraries, and apps to implement support. We’re getting there! (Vlad Zahorodnii, &lt;a target="_blank" href="https://bugs.kde.org/show_bug.cgi?id=436318"&gt;KDE Bugzilla #436318&lt;/a&gt;)&lt;/p&gt;
&lt;p&gt;Reduced the size of animated GIF images produced by apps like Spectacle that use KDE’s KPipeWire library. (Bernhard Friedrich, &lt;a target="_blank" href="https://invent.kde.org/plasma/kpipewire/-/merge_requests/247"&gt;kpipewire MR #247&lt;/a&gt;)&lt;/p&gt;
&lt;h2 id="how-you-can-help"&gt;How you can help&lt;/h2&gt;
&lt;p&gt;KDE has become important in the world, and your time and contributions have helped us get there. As we grow, we need your support to keep KDE sustainable.&lt;/p&gt;
&lt;p&gt;Would you like to help put together this weekly report? Introduce yourself in &lt;a target="_blank" href="https://matrix.to/#/%23this-week-kde-apps:kde.org"&gt;the Matrix room&lt;/a&gt; and &lt;a target="_blank" href="https://community.kde.org/Promotion/This_week_in_KDE"&gt;join the team&lt;/a&gt;!&lt;/p&gt;
&lt;p&gt;Beyond that, you can help KDE by directly &lt;a target="_blank" href="https://community.kde.org/Get_Involved"&gt;getting involved&lt;/a&gt; in any other projects. Donating time is actually more impactful than donating money. Each contributor makes a huge difference in KDE — you are not a number or a cog in a machine! You don’t have to be a programmer, either; many other opportunities exist.&lt;/p&gt;
&lt;p&gt;You can also help out by &lt;a target="_blank" href="https://kde.org/donate"&gt;making a donation&lt;/a&gt;! This helps cover operational costs, salaries, travel expenses for contributors, and in general just keeps KDE bringing Free Software to the world.&lt;/p&gt;
&lt;h2 id="to-get-a-new-plasma-feature-or-a-bug-fix-mentioned-here"&gt;To get a new Plasma feature or a bug fix mentioned here&lt;/h2&gt;
&lt;p&gt;Push a commit to &lt;a target="_blank" href="https://invent.kde.org/websites/blogs-kde-org/-/merge_requests/?label_name%5B%5D=This%20Week%20in%20Plasma"&gt;the relevant merge request on invent.kde.org&lt;/a&gt;.&lt;/p&gt;</description><author>Nate Graham</author></item><item><title>Web Review, Week 2026-16</title><link>https://ervin.ipsquad.net/blog/2026/04/17/web-review-week-2026-16/</link><pubDate>Fri, 17 Apr 2026 15:17:26 +0000</pubDate><guid isPermaLink="true">https://ervin.ipsquad.net/blog/2026/04/17/web-review-week-2026-16/</guid><description>&lt;p&gt;Let&amp;rsquo;s go for my web review for the week 2026-16.&lt;/p&gt;
&lt;hr&gt;
&lt;h4 id="sovereign-tech-agency-funding---mastodon-blog"&gt;Sovereign Tech Agency funding - Mastodon Blog&lt;/h4&gt;
&lt;p&gt;&lt;em&gt;Tags: tech, fediverse&lt;/em&gt;&lt;/p&gt;
&lt;p&gt;This looks like an interesting agreement. E2EE messaging anyone? There is more of course, but I&amp;rsquo;m especially excited regarding this one.&lt;/p&gt;
&lt;p&gt;&lt;a target="_blank" href="https://blog.joinmastodon.org/2026/04/sovereign-tech-agency-funding/"&gt;https://blog.joinmastodon.org/2026/04/sovereign-tech-agency-funding/&lt;/a&gt;&lt;/p&gt;
&lt;br/&gt;
&lt;h4 id="you-cannot-use-the-gnu-agpl-to-take-software-freedom-away"&gt;You cannot use the GNU (A)GPL to take software freedom away&lt;/h4&gt;
&lt;p&gt;&lt;em&gt;Tags: tech, foss, licensing, law&lt;/em&gt;&lt;/p&gt;
&lt;p&gt;The FSF is now weighting in on the Euro-Office vs OnlyOffice situation. You have to respect the spirit of the AGPL and can&amp;rsquo;t take away freedom with extra clauses. Seems to make sense to me.&lt;/p&gt;
&lt;p&gt;&lt;a target="_blank" href="https://www.fsf.org/blogs/licensing/agpl-is-not-a-tool-for-taking-freedom-away"&gt;https://www.fsf.org/blogs/licensing/agpl-is-not-a-tool-for-taking-freedom-away&lt;/a&gt;&lt;/p&gt;
&lt;br/&gt;
&lt;h4 id="europe-should-regulate-big-tech-instead-of-banning-kids-from-social-media-estonia-says"&gt;Europe should regulate Big Tech instead of banning kids from social media, Estonia says&lt;/h4&gt;
&lt;p&gt;&lt;em&gt;Tags: tech, politics, europe&lt;/em&gt;&lt;/p&gt;
&lt;p&gt;Looks like someone is actually paying attention to what&amp;rsquo;s going on.&lt;/p&gt;
&lt;p&gt;&lt;a target="_blank" href="https://www.politico.eu/article/europe-should-stand-up-to-big-tech-instead-of-imposing-social-media-bans-estonia-says/"&gt;https://www.politico.eu/article/europe-should-stand-up-to-big-tech-instead-of-imposing-social-media-bans-estonia-says/&lt;/a&gt;&lt;/p&gt;
&lt;br/&gt;
&lt;h4 id="the-utopia-of-the-family-computer"&gt;The Utopia of the Family Computer&lt;/h4&gt;
&lt;p&gt;&lt;em&gt;Tags: tech, internet, culture, time, history&lt;/em&gt;&lt;/p&gt;
&lt;p&gt;Interesting piece, shows quite well how new technologies get in the home and then slowly expand. In the case of the Internet, it was indeed literally in a corner of the home before slowly being woven in our lives.&lt;/p&gt;
&lt;p&gt;&lt;a target="_blank" href="https://mudmapmagazine.com/the-utopia-of-the-family-computer/?ref=DenseDiscovery-384"&gt;https://mudmapmagazine.com/the-utopia-of-the-family-computer/?ref=DenseDiscovery-384&lt;/a&gt;&lt;/p&gt;
&lt;br/&gt;
&lt;h4 id="on-the-acceptance-of-genai"&gt;On the acceptance of GenAI&lt;/h4&gt;
&lt;p&gt;&lt;em&gt;Tags: tech, ai, machine-learning, gpt, ethics&lt;/em&gt;&lt;/p&gt;
&lt;p&gt;Stop looking at the shiny toy, remember the ethics behind them&amp;hellip;&lt;/p&gt;
&lt;p&gt;&lt;a target="_blank" href="https://smallsheds.garden/blog/2026/on-the-acceptance-of-genai/"&gt;https://smallsheds.garden/blog/2026/on-the-acceptance-of-genai/&lt;/a&gt;&lt;/p&gt;
&lt;br/&gt;
&lt;h4 id="is-claude-mythos-terrifying-or-just-hype"&gt;Is Claude Mythos “Terrifying” or Just Hype?&lt;/h4&gt;
&lt;p&gt;&lt;em&gt;Tags: tech, ai, machine-learning, copilot, marketing, hype, research&lt;/em&gt;&lt;/p&gt;
&lt;p&gt;Are we surprised it&amp;rsquo;s mostly a PR stunt? Not at all. Of course, I agree a lot with the conclusion: we can&amp;rsquo;t trust any claim from those companies. They try to present themselves as labs but mostly try to disguise marketing as research&amp;hellip;&lt;/p&gt;
&lt;p&gt;&lt;a target="_blank" href="https://calnewport.com/is-claude-mythos-terrifying-or-just-hype/"&gt;https://calnewport.com/is-claude-mythos-terrifying-or-just-hype/&lt;/a&gt;&lt;/p&gt;
&lt;br/&gt;
&lt;h4 id="how-i-run-multiple-10k-mrr-companies-on-a-20month-tech-stack"&gt;How I run multiple $10K MRR companies on a $20/month tech stack&lt;/h4&gt;
&lt;p&gt;&lt;em&gt;Tags: tech, simplicity, complexity, performance, minimalism, infrastructure&lt;/em&gt;&lt;/p&gt;
&lt;p&gt;There&amp;rsquo;s a whole swat of solutions for very lean services. You can go a long way reducing complexity as much as possible. Less infrastructure bills are definitely welcome.&lt;/p&gt;
&lt;p&gt;&lt;a target="_blank" href="https://stevehanov.ca/blog/how-i-run-multiple-10k-mrr-companies-on-a-20month-tech-stack"&gt;https://stevehanov.ca/blog/how-i-run-multiple-10k-mrr-companies-on-a-20month-tech-stack&lt;/a&gt;&lt;/p&gt;
&lt;br/&gt;
&lt;h4 id="put-your-ssh-keys-in-your-tpm-chip"&gt;Put your SSH keys in your TPM chip!&lt;/h4&gt;
&lt;p&gt;&lt;em&gt;Tags: tech, ssh, hardware, security&lt;/em&gt;&lt;/p&gt;
&lt;p&gt;Comprehensive guide to have SSH keys stored in the TPM chip. Clearly it&amp;rsquo;s still a very manual process.&lt;/p&gt;
&lt;p&gt;&lt;a target="_blank" href="https://raymii.org/s/tutorials/Put_your_SSH_keys_in_your_TPM_chip.html"&gt;https://raymii.org/s/tutorials/Put_your_SSH_keys_in_your_TPM_chip.html&lt;/a&gt;&lt;/p&gt;
&lt;br/&gt;
&lt;h4 id="supply-chain-nightmare-how-rust-will-be-attacked-and-what-we-can-do-to-mitigate-the-inevitable"&gt;Supply chain nightmare: How Rust will be attacked and what we can do to mitigate the inevitable&lt;/h4&gt;
&lt;p&gt;&lt;em&gt;Tags: tech, rust, supply-chain, security&lt;/em&gt;&lt;/p&gt;
&lt;p&gt;Indeed, the current supply chain model of Rust could be better. While we wait for improvements (with no sign of them coming), there are ways to try to avoid some of the common pitfalls.&lt;/p&gt;
&lt;p&gt;&lt;a target="_blank" href="https://kerkour.com/rust-supply-chain-nightmare"&gt;https://kerkour.com/rust-supply-chain-nightmare&lt;/a&gt;&lt;/p&gt;
&lt;br/&gt;
&lt;h4 id="no-one-owes-you-supply-chain-security"&gt;No one owes you supply-chain security&lt;/h4&gt;
&lt;p&gt;&lt;em&gt;Tags: tech, rust, supply-chain, security, foss&lt;/em&gt;&lt;/p&gt;
&lt;p&gt;Can crates.io make things easier to secure? I do think so. But this post is right that we shouldn&amp;rsquo;t forget the social aspect of the whole supply chain security conversation.&lt;/p&gt;
&lt;p&gt;&lt;a target="_blank" href="https://purplesyringa.moe/blog/no-one-owes-you-supply-chain-security/"&gt;https://purplesyringa.moe/blog/no-one-owes-you-supply-chain-security/&lt;/a&gt;&lt;/p&gt;
&lt;br/&gt;
&lt;h4 id="rust-is-just-a-tool"&gt;Rust is Just a Tool&lt;/h4&gt;
&lt;p&gt;&lt;em&gt;Tags: tech, rust, tools, hype&lt;/em&gt;&lt;/p&gt;
&lt;p&gt;This bears repeating of course. I still wish our industry would run less on hype. It&amp;rsquo;s not specific to Rust of course.&lt;/p&gt;
&lt;p&gt;&lt;a target="_blank" href="https://lewiscampbell.tech/blog/260204.html"&gt;https://lewiscampbell.tech/blog/260204.html&lt;/a&gt;&lt;/p&gt;
&lt;br/&gt;
&lt;h4 id="flat-error-codes-are-not-enough"&gt;Flat Error Codes Are Not Enough&lt;/h4&gt;
&lt;p&gt;&lt;em&gt;Tags: tech, rust, failure&lt;/em&gt;&lt;/p&gt;
&lt;p&gt;When possible it&amp;rsquo;s nice to nest your error types, this allows better investigation when something fails.&lt;/p&gt;
&lt;p&gt;&lt;a target="_blank" href="https://home.expurple.me/posts/flat-error-codes-are-not-enough/"&gt;https://home.expurple.me/posts/flat-error-codes-are-not-enough/&lt;/a&gt;&lt;/p&gt;
&lt;br/&gt;
&lt;h4 id="c26-structured-bindings-in-conditions"&gt;C++26: Structured bindings in conditions&lt;/h4&gt;
&lt;p&gt;&lt;em&gt;Tags: tech, c++&lt;/em&gt;&lt;/p&gt;
&lt;p&gt;Looks like a small syntax adjustment, but that indeed open the door to nice improvements.&lt;/p&gt;
&lt;p&gt;&lt;a target="_blank" href="https://www.sandordargo.com/blog/2026/04/15/cpp26-structured-bindings-condition"&gt;https://www.sandordargo.com/blog/2026/04/15/cpp26-structured-bindings-condition&lt;/a&gt;&lt;/p&gt;
&lt;br/&gt;
&lt;h4 id="the-global-api-injection-pattern"&gt;The Global API Injection Pattern&lt;/h4&gt;
&lt;p&gt;&lt;em&gt;Tags: tech, c++, dependencies, metaprogramming&lt;/em&gt;&lt;/p&gt;
&lt;p&gt;This is indeed a nice pattern for dependency injection in C++ for global functions.&lt;/p&gt;
&lt;p&gt;&lt;a target="_blank" href="https://www.elbeno.com/blog/?p=1831"&gt;https://www.elbeno.com/blog/?p=1831&lt;/a&gt;&lt;/p&gt;
&lt;br/&gt;
&lt;h4 id="can-we-finally-use-c-modules-in-2026"&gt;Can we finally use C++ Modules in 2026?&lt;/h4&gt;
&lt;p&gt;&lt;em&gt;Tags: tech, c++&lt;/em&gt;&lt;/p&gt;
&lt;p&gt;Probably not&amp;hellip; This is really taking a long time to be adopted. It&amp;rsquo;s not an incremental thing at all, this doesn&amp;rsquo;t help.&lt;/p&gt;
&lt;p&gt;&lt;a target="_blank" href="https://mropert.github.io/2026/04/13/modules_in_2026/"&gt;https://mropert.github.io/2026/04/13/modules_in_2026/&lt;/a&gt;&lt;/p&gt;
&lt;br/&gt;
&lt;h4 id="bring-back-idiomatic-design"&gt;Bring Back Idiomatic Design&lt;/h4&gt;
&lt;p&gt;&lt;em&gt;Tags: tech, web, frontend, desktop, ux&lt;/em&gt;&lt;/p&gt;
&lt;p&gt;Or why I tend to favor desktop applications (made by KDE as much as possible) rather than web applications whenever possible. It&amp;rsquo;s just more pleasant to have things which look and feel homogeneous.&lt;/p&gt;
&lt;p&gt;&lt;a target="_blank" href="https://essays.johnloeber.com/p/4-bring-back-idiomatic-design"&gt;https://essays.johnloeber.com/p/4-bring-back-idiomatic-design&lt;/a&gt;&lt;/p&gt;
&lt;br/&gt;
&lt;h4 id="the-unwritten-laws-of-software-engineering"&gt;The unwritten laws of software engineering&lt;/h4&gt;
&lt;p&gt;&lt;em&gt;Tags: tech, engineering, failure, reliability&lt;/em&gt;&lt;/p&gt;
&lt;p&gt;Those have no name&amp;hellip; but you&amp;rsquo;ll encounter them regularly indeed.&lt;/p&gt;
&lt;p&gt;&lt;a target="_blank" href="https://newsletter.manager.dev/p/the-unwritten-laws-of-software-engineering"&gt;https://newsletter.manager.dev/p/the-unwritten-laws-of-software-engineering&lt;/a&gt;&lt;/p&gt;
&lt;br/&gt;
&lt;h4 id="writing-design-docs"&gt;Writing design docs&lt;/h4&gt;
&lt;p&gt;&lt;em&gt;Tags: tech, architecture, design, documentation, processes&lt;/em&gt;&lt;/p&gt;
&lt;p&gt;A good primer about design documents. What&amp;rsquo;s nice about this one is the focus on the process rather than the form of the document. Indeed what matters is the shared understanding and making sure the right decision is made.&lt;/p&gt;
&lt;p&gt;&lt;a target="_blank" href="https://blog.ceejbot.com/posts/design-docs/"&gt;https://blog.ceejbot.com/posts/design-docs/&lt;/a&gt;&lt;/p&gt;
&lt;br/&gt;
&lt;h4 id="no-agenda-no-meeting"&gt;No agenda, no meeting&lt;/h4&gt;
&lt;p&gt;&lt;em&gt;Tags: tech, meetings, documentation, remote-working&lt;/em&gt;&lt;/p&gt;
&lt;p&gt;Of course I wish more meetings would follow this pattern&amp;hellip; or not happen at all, sending me a proper document instead.&lt;/p&gt;
&lt;p&gt;&lt;a target="_blank" href="https://ben.balter.com/2026/04/06/no-agenda-no-meeting/"&gt;https://ben.balter.com/2026/04/06/no-agenda-no-meeting/&lt;/a&gt;&lt;/p&gt;
&lt;br/&gt;
&lt;h4 id="technical-leadership-is-leadership"&gt;Technical Leadership is Leadership&lt;/h4&gt;
&lt;p&gt;&lt;em&gt;Tags: tech, leadership, team&lt;/em&gt;&lt;/p&gt;
&lt;p&gt;Short and to the point reminder: our job is never only about the tech. It always encompass some people related concerns, be it inside teams, between teams, or the impact on the users.&lt;/p&gt;
&lt;p&gt;&lt;a target="_blank" href="https://estherderby.com/technical-leadership-is-leadership/"&gt;https://estherderby.com/technical-leadership-is-leadership/&lt;/a&gt;&lt;/p&gt;
&lt;br/&gt;
&lt;h4 id="even-ohnos-classic-5-whys-example-deserves-another-why"&gt;Even Ohno&amp;rsquo;s Classic &amp;ldquo;5 Whys&amp;rdquo; Example Deserves Another Why&lt;/h4&gt;
&lt;p&gt;&lt;em&gt;Tags: agile, lean, failure&lt;/em&gt;&lt;/p&gt;
&lt;p&gt;A bit long for what it&amp;rsquo;s saying. And yet it&amp;rsquo;s a good reminder, don&amp;rsquo;t focus on why&amp;hellip; Ask the question as many times as necessary to get to the point where you can find a solution which prevents issues to reappear.&lt;/p&gt;
&lt;p&gt;&lt;a target="_blank" href="https://www.leanblog.org/2026/04/ohno-5-whys-actually-seven/"&gt;https://www.leanblog.org/2026/04/ohno-5-whys-actually-seven/&lt;/a&gt;&lt;/p&gt;
&lt;br/&gt;
&lt;hr&gt;
&lt;p&gt;Bye for now!&lt;/p&gt;</description><author>Kevin Ottens</author></item><item><title>Regresa La Palma Tech Tagoror</title><link>https://toscalix.com/2026/04/17/regresa-la-palma-tech-tagoror/</link><pubDate>Fri, 17 Apr 2026 07:00:00 +0000</pubDate><guid isPermaLink="true">http://toscalix.com/?p=3271</guid><description>La Palma Tech Tagoror vuelve. Los meetups en la isla canaria de La Palma se relanzan este 23 de abril, en La Real Sociedad Aridane, Los Llanos de Aridane. La entrada es gratuita previo registro. Únete al evento o apúntate al grupo de Meetup para estar informado de futuras actividades.</description><author>Agustín Benito Bethencourt</author></item><item><title>KDE Applications snaps are back — stable release</title><link>https://scarlettgatelymoore.dev/blog/kde-snaps-stable-release/</link><pubDate>Thu, 16 Apr 2026 00:00:00 +0000</pubDate><guid isPermaLink="true">https://scarlettgatelymoore.dev/blog/kde-snaps-stable-release/</guid><description>100+ KDE Application snaps updated and released to stable, with Qt6, KF6, arm64 support, and KDE CI integration. Coinciding with KDE Gear release day.</description><author>Scarlett Gately Moore</author></item><item><title>KDE Gear ⚙️ 26.04</title><link>https://kde.org/announcements/gear/26.04.0/</link><pubDate>Thu, 16 Apr 2026 00:00:00 +0000</pubDate><guid isPermaLink="true">https://kde.org/announcements/gear/26.04.0/</guid><description>&lt;div class="donnorbox-container-small my-4"&gt;
&lt;i&gt;A script element has been removed to ensure Planet works properly. Please find it in the original post.&lt;/i&gt;
&lt;iframe src="https://donorbox.org/embed/kde-community?default_interval=o&amp;hide_donation_meter=true" name="donorbox" allowpaymentrequest="allowpaymentrequest" seamless="seamless" frameborder="0" scrolling="no" height="550px" width="100%" style="max-width: 500px; min-width: 310px; max-height:none!important; border-radius: 15px;"&gt;&lt;/iframe&gt;
&lt;/div&gt;
&lt;section class="surf py-5"&gt;
&lt;div class="container"&gt;
&lt;div&gt;
&lt;div class="colorful-heading" &gt;
&lt;h2 class="display-3 mt-0 text-center"&gt;Dolphin&lt;/h2&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;p&gt;&lt;a target="_blank" href="https://apps.kde.org/dolphin/"&gt;Dolphin&lt;/a&gt; is KDE's file/folder browser manager, which also lets you connect to remote file systems and manage code repositories.&lt;/p&gt;
&lt;p&gt;In version 26.04, Dolphin lets you add keyboard shortcuts to nearly any option in any menu, plugin or extension.&lt;/p&gt;
&lt;p&gt;Say you find yourself often switching the order of files between order by name and order by date created. Make a shortcut and re-order with ease.&lt;/p&gt;
&lt;figure class="text-center ratio ratio-16x9 mx-auto max-width-800" style=""&gt;
&lt;video muted loop autoplay style="pointer-events: none;" poster="https://cdn.kde.org/promo/Announcements/Apps/26.04/Dolphin_shortcuts.png"&gt;&lt;source src="https://cdn.kde.org/promo/Announcements/Apps/26.04/Dolphin_shortcuts.webm" type="video/webm" /&gt;&lt;source src="https://cdn.kde.org/promo/Announcements/Apps/26.04/Dolphin_shortcuts.mp4" type="video/mp4" /&gt;&lt;/video&gt;&lt;/figure&gt;
&lt;/div&gt;
&lt;/section&gt;
&lt;section class="blue gear-section py-5"&gt;
&lt;div class="container"&gt;
&lt;div&gt;
&lt;div class="colorful-heading" &gt;
&lt;h2 class="display-3 mt-5 text-center"&gt;Personal Information Management&lt;/h2&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;p&gt;KDE's Personal Information Management software covers everything to do with email, contacts, calendars, etc.&lt;/p&gt;
&lt;p&gt;&lt;a target="_blank" href="https://apps.kde.org/merkuro/"&gt;&lt;strong&gt;Merkuro Calendar&lt;/strong&gt;&lt;/a&gt; now boasts a re-designed schedule view and event editor. They now look more modern and show more relevant information in a more attractive way.&lt;/p&gt;
&lt;p&gt;&lt;figure&gt;
&lt;img class="img-fluid" alt="Merkuro's overhauled schedule view and event editor." src="https://kde.org/announcements/gear/26.04.0/Merkuro.png" title="Two windows, on the left the Merkuro&amp;#39;s schedule view shows events and tasks planned for April, and on the right Merkuro&amp;#39;s event editor showing a user adding an event."
style="max-width: 100%; height: auto"
/&gt;
&lt;/figure&gt;
&lt;/p&gt;
&lt;p&gt;The venerable &lt;a target="_blank" href="https://kontact.kde.org/components/korganizer/"&gt;&lt;strong&gt;KOrganizer&lt;/strong&gt;&lt;/a&gt; calendaring app integrated into &lt;a target="_blank" href="https://kontact.kde.org/"&gt;&lt;strong&gt;Kontact&lt;/strong&gt;&lt;/a&gt; has had a facelift and is both tidier and more informative.&lt;/p&gt;
&lt;p&gt;&lt;figure&gt;
&lt;img class="img-fluid" alt="The subtly tweaked looks of KOrganizer." src="https://kde.org/announcements/gear/26.04.0/KOrganiser.png" title="KOrganizer is showing here the month of April"
style="max-width: 100%; height: auto"
/&gt;
&lt;/figure&gt;
&lt;/p&gt;
&lt;p&gt;&lt;a target="_blank" href="https://apps.kde.org/itinerary/"&gt;&lt;strong&gt;Itinerary&lt;/strong&gt;&lt;/a&gt; helps you plan your trips, manages all your tickets and reservations, and helps you not get lost when travelling. This new version improves its dialogs and has added new information for when travelling around Switzerland.&lt;/p&gt;
&lt;/div&gt;
&lt;/section&gt;
&lt;section class="surf pb-5"&gt;
&lt;div class="container"&gt;
&lt;div&gt;
&lt;div class="colorful-heading" &gt;
&lt;h2 class="display-3 mt-0 text-center"&gt;Kdenlive&lt;/h2&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;p&gt;&lt;a target="_blank" href="https://kdenlive.org"&gt;Kdenlive&lt;/a&gt; is KDE's full-featured video editor.&lt;/p&gt;
&lt;p&gt;In 26.04, you will find animated previews in &lt;em&gt;Compositions&lt;/em&gt; that show you what a transition does even before you apply it.&lt;/p&gt;
&lt;figure class="text-center ratio ratio-16x9 mx-auto max-width-800" style=""&gt;
&lt;video muted loop autoplay style="pointer-events: none;" poster="https://cdn.kde.org/promo/Announcements/Apps/26.04/Kdenlive_transition-preview.png"&gt;&lt;source src="https://cdn.kde.org/promo/Announcements/Apps/26.04/Kdenlive_transition-preview.webm" type="video/webm" /&gt;&lt;source src="https://cdn.kde.org/promo/Announcements/Apps/26.04/Kdenlive_transition-preview.mp4" type="video/mp4" /&gt;&lt;/video&gt;&lt;/figure&gt;
&lt;p&gt;Another feature you'll find useful is that you can now mirror the monitor to an external display. This will let you see the clip in the usual interface, but also on a second screen as a larger view.&lt;/p&gt;
&lt;p&gt;&lt;figure&gt;
&lt;img class="img-fluid" alt="Kdenlive shows a full-screen mirrored image on an external monitor." src="https://kde.org/announcements/gear/26.04.0/Kdenlive_out_monitor.jpg" title="Kdenlive shows a full-screen mirrored image on an external monitor"
style="max-width: 100%; height: auto"
/&gt;
&lt;/figure&gt;
&lt;/p&gt;
&lt;p&gt;A few smaller tweaks include&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;a timeline context menu that directly imports a clip to the project, adding it to the clicked position&lt;/li&gt;
&lt;li&gt;an option to always zoom on the mouse position instead of the timeline playhead&lt;/li&gt;
&lt;li&gt;automatic generation of audio thumbnails for sequences&lt;/li&gt;
&lt;li&gt;dropping a transition to the timeline will automatically adjust its duration to the above/below clips&lt;/li&gt;
&lt;li&gt;you can now change the speed of multiple clips at the same time.&lt;/li&gt;
&lt;/ul&gt;
&lt;figure class="text-center ratio ratio-16x9 mx-auto max-width-800" style=""&gt;
&lt;video muted loop autoplay style="pointer-events: none;" poster="https://cdn.kde.org/promo/Announcements/Apps/26.04/Kdenlive_change_speed.png"&gt;&lt;source src="https://cdn.kde.org/promo/Announcements/Apps/26.04/Kdenlive_change_speed.webm" type="video/webm" /&gt;&lt;source src="https://cdn.kde.org/promo/Announcements/Apps/26.04/Kdenlive_change_speed.mp4" type="video/mp4" /&gt;&lt;/video&gt;&lt;/figure&gt;
&lt;/div&gt;
&lt;/section&gt;
&lt;section class="surf pb-5"&gt;
&lt;div class="container"&gt;
&lt;div&gt;
&lt;div class="colorful-heading" &gt;
&lt;h2 class="display-3 mt-0 text-center"&gt;Also in Gear ⚙️ 26.04&lt;/h2&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a target="_blank" href="https://apps.kde.org/audiotube/"&gt;&lt;strong&gt;Audiotube&lt;/strong&gt;&lt;/a&gt; boasts a fancy, brand new welcome page&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;&lt;figure&gt;
&lt;img class="img-fluid" alt="Audiotube's new fancy presentation screen." src="https://kde.org/announcements/gear/26.04.0/audiotube.png" title="AudioTube now shows a colorful selection of YouTube music you can listen too"
style="max-width: 100%; height: auto"
/&gt;
&lt;/figure&gt;
&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;
&lt;p&gt;&lt;a target="_blank" href="https://apps.kde.org/kclock/"&gt;&lt;strong&gt;KClock&lt;/strong&gt;&lt;/a&gt; now shows up as an overlay on a mobile lock screen when a timer is running&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;a target="_blank" href="https://apps.kde.org/neochat/"&gt;&lt;strong&gt;NeoChat&lt;/strong&gt;&lt;/a&gt;, KDE's Matrix chat client, gets a rich text editor and now supports threads!&lt;/p&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;figure class="text-center ratio ratio-16x9 mx-auto max-width-800" style=""&gt;
&lt;video muted loop autoplay style="pointer-events: none;" poster="https://cdn.kde.org/promo/Announcements/Apps/26.04/NeoChat_threads.png"&gt;&lt;source src="https://cdn.kde.org/promo/Announcements/Apps/26.04/NeoChat_threads.webm" type="video/webm" /&gt;&lt;source src="https://cdn.kde.org/promo/Announcements/Apps/26.04/NeoChat_threads.mp4" type="video/mp4" /&gt;&lt;/video&gt;&lt;/figure&gt;
&lt;/div&gt;
&lt;/section&gt;
&lt;div class="container py-5 "&gt;
&lt;h3&gt;&lt;a target="_blank" href="https://kde.org/announcements/changelogs/gear/26.04.0"&gt;Full changelog here&lt;/a&gt;&lt;/h3&gt;
&lt;h2&gt;Where to get KDE Apps&lt;/h2&gt;
&lt;p&gt;Although we fully support distributions that ship our software, KDE Gear 26.04 apps will also be available on these Linux app stores shortly:&lt;/p&gt;
&lt;div class="row"&gt;
&lt;div class="col-12 col-md-6"&gt;
&lt;figure&gt;
&lt;a target="_blank" href="https://flathub.org/apps/search/kde"&gt;
&lt;picture&gt;
&lt;img src="https://kde.org/images/flathub.svg" class="text-center img-fluid flathub" alt="" loading="lazy"&gt;
&lt;/picture&gt;
&lt;/a&gt;
&lt;figcaption class="text-center"&gt;Flathub&lt;/figcaption&gt;
&lt;/figure&gt;
&lt;/div&gt;
&lt;div class="col-12 col-md-6"&gt;
&lt;figure&gt;
&lt;a target="_blank" href="https://snapcraft.io/publisher/kde"&gt;
&lt;picture&gt;
&lt;img src="https://kde.org/images/snapcraft.svg" class="text-center img-fluid snapcraft" alt="" loading="lazy"&gt;
&lt;/picture&gt;
&lt;/a&gt;
&lt;figcaption class="text-center"&gt;Snapcraft&lt;/figcaption&gt;
&lt;/figure&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;p&gt;If you’d like to help us get more KDE applications into the app stores, support more app stores and get the apps better integrated into our development process, come say hi in our &lt;a target="_blank" href="https://go.kde.org/matrix/#/%23kde-all-about-apps:kde.org"&gt;All About the Apps chat room&lt;/a&gt;.&lt;/p&gt;
&lt;figure&gt;
&lt;img class="img-fluid" src="" alt="" title=""&gt;
&lt;/figure&gt;
&lt;/div&gt;</description><author>KDE Community</author></item><item><title>KDE Mega Sprint 2026</title><link>https://merritt.codes/blog/2026/04/15/2026/_kde_mega_sprint</link><pubDate>Wed, 15 Apr 2026 00:00:00 +0000</pubDate><guid isPermaLink="true">https://merritt.codes/blog/2026/04/15/2026/_kde_mega_sprint</guid><description>&lt;p&gt;This April, KDE once again had a sprint in Graz, Austria. This one was deemed a
"Mega Sprint" as unlike last year it was not just for Plasma, but for everything
KDE-related from Plasma, goals, frameworks, apps, and more. We had a great
turnout!&lt;/p&gt;
&lt;p&gt;&lt;img decoding="async" loading="lazy" alt="Group photo of the sprint attendees" src="https://merritt.codes/assets/images/graz_sprint_group_photo-9e6b896cadc92aee7a5c82a0c9e215da.avif" width="2016" height="1134" class="img_ev3q"&gt;&lt;/p&gt;
&lt;p&gt;Amazingly I managed to go the whole trip this time without getting sick! 😊&lt;/p&gt;
&lt;p&gt;We covered a &lt;em&gt;lot&lt;/em&gt; of ground! Briefly, a few of the things off the top of my
head:&lt;/p&gt;
&lt;h2 class="anchor anchorWithStickyNavbar_LWe7" id="testing"&gt;Testing&lt;a target="_blank" href="https://merritt.codes/blog/2026/04/15/2026/_kde_mega_sprint#testing" class="hash-link" aria-label="Direct link to Testing" title="Direct link to Testing"&gt;​&lt;/a&gt;&lt;/h2&gt;
&lt;p&gt;Improving reliability, ease of running locally, documentation, and ensuring that
test failures are reported by the CI in merge requests. We have some work to do
for all of these to improve our testing story, and we collectively came to
important decisions on how to move forwards.&lt;/p&gt;
&lt;h2 class="anchor anchorWithStickyNavbar_LWe7" id="gardening"&gt;Gardening&lt;a target="_blank" href="https://merritt.codes/blog/2026/04/15/2026/_kde_mega_sprint#gardening" class="hash-link" aria-label="Direct link to Gardening" title="Direct link to Gardening"&gt;​&lt;/a&gt;&lt;/h2&gt;
&lt;p&gt;There is a lot, often not enough hours/energy to deal with it, and a lot of the
time people just don't even know about the issue(s). Let's try: being more
proactive about closing bad/stale MRs, creating a GitLab bot to help automate
things that get people's attention, keep track of things by sending regular
notices to the mailing list(s) similar to how the "failing ci" emails help
people keep on top of things.&lt;/p&gt;
&lt;h2 class="anchor anchorWithStickyNavbar_LWe7" id="gestures"&gt;Gestures&lt;a target="_blank" href="https://merritt.codes/blog/2026/04/15/2026/_kde_mega_sprint#gestures" class="hash-link" aria-label="Direct link to Gestures" title="Direct link to Gestures"&gt;​&lt;/a&gt;&lt;/h2&gt;
&lt;p&gt;A complicated topic! We had a lot of good discussions about the user flow/UI/UX,
and I think we came to a really good place that sets us up for some excellent
custom gestures/bindings with the fantastic work by Jakob &amp;amp; Natalie.&lt;/p&gt;
&lt;p&gt;This sort of work is a really great example of something that would have been
very difficult to do online, that we broke through with a lot of back and forth
conversation/explanation/design at the sprint — which is exactly why we get
together to unblock these things and make quick progress together!&lt;/p&gt;
&lt;h2 class="anchor anchorWithStickyNavbar_LWe7" id="plasma-keyboard"&gt;Plasma Keyboard&lt;a target="_blank" href="https://merritt.codes/blog/2026/04/15/2026/_kde_mega_sprint#plasma-keyboard" class="hash-link" aria-label="Direct link to Plasma Keyboard" title="Direct link to Plasma Keyboard"&gt;​&lt;/a&gt;&lt;/h2&gt;
&lt;p&gt;We covered all of the large topics/issues that have been pending, for example:
morekeys/full keyboard emulation, emojis, speech-to-text, Wayland protocols,
testing, etc. So much that each could probably be its own blog post! We'll
continue to see a whole lot of changes and improvements here; we really want
plasma-keyboard to be a first-class experience for all sorts of input stories.&lt;/p&gt;
&lt;p&gt;&lt;img decoding="async" loading="lazy" alt="Photo of all the Framework laptops at the sprint" src="https://merritt.codes/assets/images/graz_sprint_framework_laptops-1c4a5f142771cd7fdcf60ad2a30376ec.avif" width="2016" height="1134" class="img_ev3q"&gt;&lt;/p&gt;
&lt;h2 class="anchor anchorWithStickyNavbar_LWe7" id="graz"&gt;Graz&lt;a target="_blank" href="https://merritt.codes/blog/2026/04/15/2026/_kde_mega_sprint#graz" class="hash-link" aria-label="Direct link to Graz" title="Direct link to Graz"&gt;​&lt;/a&gt;&lt;/h2&gt;
&lt;p&gt;We were once again in lovely Graz, and the weather was a very welcome change
from the brutal winter we've had in Canada — still had ice and snow when I left
home! In addition to the mostly sunny weather and chirping birds, the city and
its people were just fantastic once again. 💙&lt;/p&gt;
&lt;p&gt;I can't say enough just how lovely Graz is, and how glad I was to get to visit
again. 🇦🇹 Special shout out to Kevin Krammer, our KDE local who did so much to
make this sprint great for us!&lt;/p&gt;
&lt;p&gt;The fact that Graz is a lovely place to go is good news, since this year we'll
be hosting Akademy there — I am already looking forward to coming back! &lt;!-- --&gt;:D&lt;/p&gt;
&lt;p&gt;&lt;img decoding="async" loading="lazy" alt="Lovely architecture on this museum in Graz" src="https://merritt.codes/assets/images/graz_sprint_museum-4e3f04dd6ac95603bd037b46e8c36f1f.avif" width="2856" height="2142" class="img_ev3q"&gt;&lt;/p&gt;
&lt;p&gt;&lt;img decoding="async" loading="lazy" alt="Interesting tower building in Graz" src="https://merritt.codes/assets/images/graz_sprint_tower-a19603e1c90297a56c58037678fb009e.avif" width="2142" height="2856" class="img_ev3q"&gt;&lt;/p&gt;
&lt;p&gt;&lt;img decoding="async" loading="lazy" alt="Shipping container apartments in Graz" src="https://merritt.codes/assets/images/graz_sprint_container_apartments-a6ffbdfb8ed9c7c3c4679fc8334e3cee.avif" width="2856" height="2142" class="img_ev3q"&gt;&lt;/p&gt;</description><author>Kristen McWilliam</author></item><item><title>La Palma Tech Tagoror Is Back</title><link>https://toscalix.com/2026/04/14/la-palma-tech-tagoror-is-back/</link><pubDate>Tue, 14 Apr 2026 22:57:14 +0000</pubDate><guid isPermaLink="true">http://toscalix.com/?p=3263</guid><description>La Palma Tech Tagoror is back. After a year without events, the meetup series relaunches on April 23rd at Real Sociedad (Casino) Aridane, Los Llanos de Aridane, La Palma. Free entry, short talks, good conversations. Join us — or sign up to the Meetup group to stay informed.</description><author>Agustín Benito Bethencourt</author></item><item><title>A week in Graz: KDE MegaSprint and Grazer Linuxtage</title><link>https://tsdgeos.blogspot.com/2026/04/a-week-in-graz-kde-megasprint-and.html</link><pubDate>Sun, 12 Apr 2026 14:12:00 +0000</pubDate><guid isPermaLink="false">tag:blogger.com,1999:blog-7523589.post-827732025224711026</guid><description>&lt;p&gt;I spent this week in &lt;a target="_blank" href="https://en.wikipedia.org/wiki/Graz" target="_blank"&gt;Graz&lt;/a&gt;, the weekdays as part of the &lt;a target="_blank" href="https://community.kde.org/Sprints/MegaSprint/2026" target="_blank"&gt;KDE Mega Sprint 2026&lt;/a&gt;&amp;nbsp;and Saturday attending &lt;a target="_blank" href="https://www.linuxtage.at/en/"&gt;Grazer Linuxtage 2026&lt;/a&gt;.&lt;/p&gt;&lt;p&gt;Before arriving in Graz I already did some work on the train from Vienna. I published a new version of &lt;a target="_blank" href="https://userbase.kde.org/Kio_gopher"&gt;kio-gopher&lt;/a&gt;&amp;nbsp;so KDE Frameworks 6 applications can browse gopher sites and helped finish the review of &lt;a target="_blank" href="https://apps.kde.org/kdominate/"&gt;KDominate&lt;/a&gt;, Albert Vaca's latest tactical game.&lt;/p&gt;&lt;p&gt;At the Sprint itself many things were achieved, too many to remember.&amp;nbsp;&lt;/p&gt;&lt;p&gt;There was some discussion about improving release notes so they go into the appstream files and end up in lots of interesting places (apps.kde.org, Discover, etc).&lt;/p&gt;&lt;p&gt;I also talked a bit with David Edmundson on how to streamline our work in the KDE Security team.&lt;/p&gt;&lt;p&gt;Another important thing was that we introduced a way to help us enable the &lt;a target="_blank" href="https://clang.llvm.org/docs/LeakSanitizer.html"&gt;LeakSanitizer&lt;/a&gt; in more repositories (by ignoring leaks that are not our fault and that we can't control)&amp;nbsp;&lt;/p&gt;&lt;p&gt;&lt;table align="center" cellpadding="0" cellspacing="0" class="tr-caption-container" style="margin-left: auto; margin-right: auto;"&gt;&lt;tbody&gt;&lt;tr&gt;&lt;td style="text-align: center;"&gt;&lt;a target="_blank" href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhE7leNIuWUWJS9vIxQ8dzSU4s6rfh_IQ5vtc6T3GjeUmgemYX8TnDLrc9Rhqkghb5OisHJ86HB7CmOprx0tiIyic3leCoeIVFdrC2_buPw6nby4de4GAaaNuC_csHp6v_eLv04vSV4Pc0VXcJiIID4YcSh6SKYB5zpUPqWscagnv01G4zqQhol/s1156/lgt.png" imageanchor="1" style="margin-left: auto; margin-right: auto;"&gt;&lt;img border="0" data-original-height="1156" data-original-width="868" height="640" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhE7leNIuWUWJS9vIxQ8dzSU4s6rfh_IQ5vtc6T3GjeUmgemYX8TnDLrc9Rhqkghb5OisHJ86HB7CmOprx0tiIyic3leCoeIVFdrC2_buPw6nby4de4GAaaNuC_csHp6v_eLv04vSV4Pc0VXcJiIID4YcSh6SKYB5zpUPqWscagnv01G4zqQhol/w480-h640/lgt.png" width="480" /&gt;&lt;/a&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td class="tr-caption" style="text-align: center;"&gt;Non-planned group photo of Sprint attendees, a few are missing. Apologies!&lt;/td&gt;&lt;/tr&gt;&lt;/tbody&gt;&lt;/table&gt;&lt;br /&gt;&amp;nbsp;&lt;/p&gt;&lt;p&gt;While we were at the Sprint it was announced that we will have &lt;a target="_blank" href="https://akademy.kde.org/2026/"&gt;Akademy 2026&lt;/a&gt; also in Graz. So start preparing to visit Austria in late September!&amp;nbsp;&lt;/p&gt;&lt;p&gt;&lt;br /&gt;&lt;/p&gt;&lt;p&gt;Grazer Linuxtage was very nice, as far as I've heard also very successful in attendance, with the estimate being around 50% more than the previous year (hard to calculate when you don't require registration).&lt;/p&gt;&lt;p&gt;There were not many talks in English but the ones I attended were interesting. If you have time I would recommend giving them a quick skim to see if they interest you.&lt;/p&gt;&lt;p&gt;&lt;a target="_blank" href="https://media.ccc.de/v/glt26-679-transitous-free-and-open-public-transport-routing"&gt;Transitous - Free and Open Public transport routing&lt;/a&gt;&amp;nbsp; (from KDE's own Volker Krause)&lt;/p&gt;&lt;p&gt;&lt;a target="_blank" href="https://media.ccc.de/v/glt26-615-what-can-we-learn-from-android-for-other-embedded-linux-systems-security"&gt;What can we learn from Android for other embedded Linux systems security?&lt;/a&gt;&amp;nbsp;(Every app in Android is a different Linux user)&lt;/p&gt;&lt;p&gt;&lt;a target="_blank" href="https://media.ccc.de/v/glt26-625-libreoffice-what-we-re-doing-where-we-re-going-and-how-you-can-help"&gt;LibreOffice: What we're doing, where we're going, and how you can help&lt;/a&gt;&amp;nbsp;(Very fashionable given the&amp;nbsp;latest&amp;nbsp;rifts in the community (sadly))&lt;/p&gt;&lt;p&gt;&lt;a target="_blank" href="https://media.ccc.de/v/glt26-718-how-we-hacked-the-bavarian-state-with-an-open-source-open-letter"&gt;How we hacked the Bavarian State with an Open Source Open Letter&lt;/a&gt;&amp;nbsp;(About how to pressure administrations not to give Microsoft all of our tax money)&lt;/p&gt;&lt;p&gt;I gave a talk about KDE and the 30 years of the Linux desktop, that from the reaction of the attendees I think it was well received, that's always nice :)&amp;nbsp;&lt;/p&gt;&lt;p&gt;The video from my talk is available at &lt;a target="_blank" href="https://media.ccc.de/v/glt26-691-kde-30-years-of-the-linux-desktop"&gt;https://media.ccc.de/v/glt26-691-kde-30-years-of-the-linux-desktop&lt;/a&gt;&amp;nbsp;&lt;/p&gt;&lt;p&gt;Thanks everyone involved in the organization and Kevin Krammer in particular for hosting us!&amp;nbsp;&lt;/p&gt;</description><author>Albert Astals Cid</author></item><item><title>Analyzing KDE Project Health With git!</title><link>https://pointieststick.com/2026/04/10/analyzing-kde-project-health-with-git/</link><pubDate>Fri, 10 Apr 2026 20:24:08 +0000</pubDate><guid isPermaLink="true">http://pointieststick.com/?p=28033</guid><description>&lt;p class="wp-block-paragraph"&gt;I was reading &lt;a target="_blank" href="https://ervin.ipsquad.net/blog/2026/04/10/web-review-week-2026-15/"&gt;the latest edition of Kevin Ottens&amp;#8217; excellent weekly web review&lt;/a&gt; and one particular article caught my eye: &amp;#8220;&lt;a target="_blank" href="https://piechowski.io/post/git-commands-before-reading-code/"&gt;The Git Commands I Run Before Reading Any Code&lt;/a&gt;&amp;#8220;. In a nutshell, you can use the &lt;code&gt;git&lt;/code&gt; version control tool to quickly assess a project&amp;#8217;s health, what breaks, who&amp;#8217;s a key figure, how bad emergencies are, and so on.&lt;/p&gt;
&lt;p class="wp-block-paragraph"&gt;So useful!&lt;/p&gt;
&lt;p class="wp-block-paragraph"&gt;I immediately wanted to apply this to KDE projects. So I took the commands from the post and made some shell aliases and functions for convenience:&lt;/p&gt;
&lt;div class="wp-block-code"&gt;
&lt;div class="cm-editor"&gt;
&lt;div class="cm-scroller"&gt;
&lt;pre&gt;
&lt;code&gt;&lt;div class="cm-line"&gt;# git repo analysis tools&lt;/div&gt;&lt;div class="cm-line"&gt;alias what-changes=&amp;quot;echo &amp;apos;What changes a lot?&amp;apos; &amp;amp;&amp;amp; git log --format=format: --name-only --since=&amp;apos;1 year ago&amp;apos; | rg -v &amp;apos;po$|json$|desktop$&amp;apos; | sort | uniq -c | sort -nr | head -20&amp;quot;&lt;/div&gt;&lt;div class="cm-line"&gt;&lt;/div&gt;&lt;div class="cm-line"&gt;alias what-breaks=&amp;quot;echo &amp;apos;What breaks a lot?&amp;apos; &amp;amp;&amp;amp; git log -i -E --grep=&amp;apos;fix|bug|broke|bad|wrong|incorrect|problem&amp;apos; --name-only --format=&amp;apos;&amp;apos; | sort | uniq -c | sort -nr | head -20&amp;quot;&lt;/div&gt;&lt;div class="cm-line"&gt;&lt;/div&gt;&lt;div class="cm-line"&gt;alias emergencies=&amp;quot;echo &amp;apos;And what were the emergencies?&amp;apos; &amp;amp;&amp;amp; git log --oneline --since=&amp;apos;1 year ago&amp;apos; | grep -iE &amp;apos;revert|hotfix|emergency|urgent|rollback&amp;apos;&amp;quot;&lt;/div&gt;&lt;div class="cm-line"&gt;&lt;/div&gt;&lt;div class="cm-line"&gt;alias momentum=&amp;quot;echo \&amp;quot;What&amp;apos;s the project&amp;apos;s momentum over the past 5 years?\&amp;quot; &amp;amp;&amp;amp; git log --format=&amp;apos;%ad&amp;apos; --date=format:&amp;apos;%Y-%m&amp;apos; | sort | uniq -c | tail -n 60&amp;quot;&lt;/div&gt;&lt;div class="cm-line"&gt;&lt;/div&gt;&lt;div class="cm-line"&gt;alias maintainers-recently=&amp;quot;echo \&amp;quot;Who&amp;apos;s been driving this project in the past year?\&amp;quot; &amp;amp;&amp;amp; git shortlog -sn --no-merges --since=&amp;apos;1 year ago&amp;apos; | rg -v &amp;apos;l10n daemon script&amp;apos; | head -n 30&amp;quot;&lt;/div&gt;&lt;div class="cm-line"&gt;&lt;/div&gt;&lt;div class="cm-line"&gt;alias maintainers-alltime=&amp;quot;echo &amp;apos;And what about for all time?&amp;apos; &amp;amp;&amp;amp; git shortlog -sn --no-merges | rg -v &amp;apos;l10n daemon script&amp;apos; | head -n 30&amp;quot;&lt;/div&gt;&lt;div class="cm-line"&gt;&lt;/div&gt;&lt;div class="cm-line"&gt;function repo-analysis &amp;#123;&lt;/div&gt;&lt;div class="cm-line"&gt; what-changes&lt;/div&gt;&lt;div class="cm-line"&gt; echo&lt;/div&gt;&lt;div class="cm-line"&gt; what-breaks&lt;/div&gt;&lt;div class="cm-line"&gt; echo&lt;/div&gt;&lt;div class="cm-line"&gt; emergencies&lt;/div&gt;&lt;div class="cm-line"&gt; echo&lt;/div&gt;&lt;div class="cm-line"&gt; momentum&lt;/div&gt;&lt;div class="cm-line"&gt; echo&lt;/div&gt;&lt;div class="cm-line"&gt; maintainers-recently&lt;/div&gt;&lt;div class="cm-line"&gt; echo&lt;/div&gt;&lt;div class="cm-line"&gt; maintainers-alltime&lt;/div&gt;&lt;div class="cm-line"&gt;}&lt;/div&gt;&lt;/code&gt;&lt;/pre&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;p class="wp-block-paragraph"&gt;Now let&amp;#8217;s run it on Plasma. Here&amp;#8217;s &lt;code&gt;plasma-workspace&lt;/code&gt;, the core of Plasma:&lt;/p&gt;
&lt;blockquote class="wp-block-quote is-layout-flow wp-block-quote-is-layout-flow"&gt;
&lt;p class="wp-block-paragraph"&gt;$ git clone ssh://git@invent.kde.org/plasma/plasma-workspace.git&lt;br&gt;$ cd plasma-workspace &lt;br&gt;$ repo-analysis&lt;br&gt;What changes a lot?&lt;br&gt;  1519  &lt;br&gt;    38 CMakeLists.txt&lt;br&gt;    29 shell/shellcorona.cpp&lt;br&gt;    24 runners/services/servicerunner.cpp&lt;br&gt;    21 wallpapers/image/imagepackage/contents/ui/config.qml&lt;br&gt;    19 libnotificationmanager/notifications.cpp&lt;br&gt;    18 shell/org.kde.plasmashell.desktop.cmake&lt;br&gt;    18 devicenotifications/devicenotifications.cpp&lt;br&gt;    17 kcms/lookandfeel/kcm.cpp&lt;br&gt;    16 wallpapers/image/plugin/model/packagelistmodel.cpp&lt;br&gt;    16 kcms/cursortheme/xcursor/xcursor.knsrc&lt;br&gt;    15 wallpapers/image/plugin/model/imagelistmodel.cpp&lt;br&gt;    15 applets/notifications/global/Globals.qml&lt;br&gt;    15 applets/devicenotifier/devicecontrol.cpp&lt;br&gt;    14 wallpapers/image/plugin/imagebackend.cpp&lt;br&gt;    14 shell/panelview.cpp&lt;br&gt;    14 .kde-ci.yml&lt;br&gt;    14 applets/systemtray/systemtray.cpp&lt;br&gt;    13 runners/services/autotests/servicerunnertest.cpp&lt;br&gt;    12 krunner/qml/RunCommand.qml&lt;br&gt;&lt;br&gt;What breaks a lot?&lt;br&gt;   225 shell/shellcorona.cpp&lt;br&gt;   183 shell/panelview.cpp&lt;br&gt;    83 CMakeLists.txt&lt;br&gt;    74 applets/systemtray/package/contents/ui/main.qml&lt;br&gt;    71 applets/digital-clock/package/contents/ui/DigitalClock.qml&lt;br&gt;    63 klipper/klipper.cpp&lt;br&gt;    62 applets/notifications/package/contents/ui/NotificationItem.qml&lt;br&gt;    58 wallpapers/image/imagepackage/contents/ui/config.qml&lt;br&gt;    56 shell/desktopview.cpp&lt;br&gt;    56 libtaskmanager/tasksmodel.cpp&lt;br&gt;    54 shell/main.cpp&lt;br&gt;    54 applets/systemtray/systemtray.cpp&lt;br&gt;    53 shell/shellcorona.h&lt;br&gt;    52 krunner/view.cpp&lt;br&gt;    48 applets/digital-clock/package/contents/ui/CalendarView.qml&lt;br&gt;    47 runners/services/servicerunner.cpp&lt;br&gt;    46 wallpapers/image/imagepackage/contents/ui/main.qml&lt;br&gt;    45 applets/notifications/package/contents/ui/NotificationPopup.qml&lt;br&gt;    44 applets/systemtray/package/contents/ui/ExpandedRepresentation.qml&lt;br&gt;    43 startkde/startplasma.cpp&lt;br&gt;&lt;br&gt;And what were the emergencies?&lt;br&gt;4f526a7bd1 &lt;strong&gt;Revert&lt;/strong&gt; &amp;#8220;applets/systemtray: Prevent popups from overlapping with the panel&amp;#8221;&lt;br&gt;dca5788fee lookandfeel/components: &lt;strong&gt;Revert&lt;/strong&gt; Plasma::setupPlasmaStyle&lt;br&gt;2c0fd34541 &lt;strong&gt;Revert&lt;/strong&gt; &amp;#8220;ContainmentLayoutManager: send recursive mouse release events too&amp;#8221;&lt;br&gt;b6b230f4ff &lt;strong&gt;Revert&lt;/strong&gt; &amp;#8220;Read selenium-webdriver-at-spi-run location from CMake&amp;#8221;&lt;br&gt;b8651b56f6 &lt;strong&gt;hotfix&lt;/strong&gt;: Remove doc translations without actual doc&lt;br&gt;1f43f576e8 &lt;strong&gt;Revert&lt;/strong&gt; &amp;#8220;Add forceImageAnimation property to force animated image play&amp;#8221;&lt;br&gt;f0349b6c81 &lt;strong&gt;hotfix&lt;/strong&gt;: remove stray .po file&lt;br&gt;3ff7ae4269 &lt;strong&gt;Revert&lt;/strong&gt; &amp;#8220;CI: enable parallel testing&amp;#8221;&lt;br&gt;83bebc7896 &lt;strong&gt;Revert&lt;/strong&gt; &amp;#8220;Limit evaluateScript execution at 2 seconds&amp;#8221;&lt;br&gt;4f45f672be &lt;strong&gt;Revert&lt;/strong&gt; &amp;#8220;kcms/componentchooser: Don&amp;#8217;t offer NoDisplay services&amp;#8221;&lt;br&gt;3bf0ff8f56 &lt;strong&gt;Revert&lt;/strong&gt; &amp;#8220;Disable linux-qt6-next while the regression in Qt gets fixed&amp;#8221;&lt;br&gt;80996f0633 &lt;strong&gt;Revert&lt;/strong&gt; &amp;#8220;kcms/wallpaper: set roleNames for WallpaperConfigModel&amp;#8221;&lt;br&gt;&lt;br&gt;What&amp;#8217;s the project&amp;#8217;s momentum over the past 5 years?&lt;br&gt;   148 2021-05&lt;br&gt;    87 2021-06&lt;br&gt;    62 2021-07&lt;br&gt;    85 2021-08&lt;br&gt;   121 2021-09&lt;br&gt;   106 2021-10&lt;br&gt;   146 2021-11&lt;br&gt;   190 2021-12&lt;br&gt;   191 2022-01&lt;br&gt;    84 2022-02&lt;br&gt;   168 2022-03&lt;br&gt;   130 2022-04&lt;br&gt;   146 2022-05&lt;br&gt;   141 2022-06&lt;br&gt;   136 2022-07&lt;br&gt;   107 2022-08&lt;br&gt;   232 2022-09&lt;br&gt;   234 2022-10&lt;br&gt;   181 2022-11&lt;br&gt;   150 2022-12&lt;br&gt;   154 2023-01&lt;br&gt;   161 2023-02&lt;br&gt;   156 2023-03&lt;br&gt;   156 2023-04&lt;br&gt;   163 2023-05&lt;br&gt;   137 2023-06&lt;br&gt;   186 2023-07&lt;br&gt;   190 2023-08&lt;br&gt;   275 2023-09&lt;br&gt;   226 2023-10&lt;br&gt;   283 2023-11&lt;br&gt;   157 2023-12&lt;br&gt;   131 2024-01&lt;br&gt;   147 2024-02&lt;br&gt;   249 2024-03&lt;br&gt;   180 2024-04&lt;br&gt;   188 2024-05&lt;br&gt;   158 2024-06&lt;br&gt;   128 2024-07&lt;br&gt;   146 2024-08&lt;br&gt;   169 2024-09&lt;br&gt;   156 2024-10&lt;br&gt;   116 2024-11&lt;br&gt;    98 2024-12&lt;br&gt;   145 2025-01&lt;br&gt;   126 2025-02&lt;br&gt;   120 2025-03&lt;br&gt;   116 2025-04&lt;br&gt;   131 2025-05&lt;br&gt;   131 2025-06&lt;br&gt;   132 2025-07&lt;br&gt;   115 2025-08&lt;br&gt;   110 2025-09&lt;br&gt;    97 2025-10&lt;br&gt;   147 2025-11&lt;br&gt;   114 2025-12&lt;br&gt;   140 2026-01&lt;br&gt;   131 2026-02&lt;br&gt;   119 2026-03&lt;br&gt;    44 2026-04&lt;br&gt;&lt;br&gt;Who&amp;#8217;s been driving this project in the past year?&lt;br&gt;  116  Vlad Zahorodnii&lt;br&gt;  113  Nicolas Fella&lt;br&gt;   87  Christoph Wolk&lt;br&gt;   82  Fushan Wen&lt;br&gt;   78  Nate Graham&lt;br&gt;   66  Kai Uwe Broulik&lt;br&gt;   48  Bohdan Onofriichuk&lt;br&gt;   37  Harald Sitter&lt;br&gt;   34  Tobias Fella&lt;br&gt;   31  Marco Martin&lt;br&gt;   30  David Edmundson&lt;br&gt;   25  Akseli Lahtinen&lt;br&gt;   21  Ismael Asensio&lt;br&gt;   17  David Redondo&lt;br&gt;   16  Niccolò Venerandi&lt;br&gt;   15  Bhushan Shah&lt;br&gt;   11  Alexander Lohnau&lt;br&gt;   11  Kristen McWilliam&lt;br&gt;    9  Oliver Beard&lt;br&gt;    9  Shubham Arora&lt;br&gt;    8  Alexey Rochev&lt;br&gt;    8  Han Young&lt;br&gt;    8  Philipp Kiemle&lt;br&gt;    7  Albert Astals Cid&lt;br&gt;    6  Aleix Pol&lt;br&gt;    6  Méven Car&lt;br&gt;    5  Devin Lin&lt;br&gt;    5  Joshua Goins&lt;br&gt;    4  Alexander Wilms&lt;br&gt;    4  Arjen Hiemstra&lt;br&gt;&lt;br&gt;And what about for all time?&lt;br&gt; 1543  Fushan Wen&lt;br&gt; 1497  Marco Martin&lt;br&gt; 1374  Kai Uwe Broulik&lt;br&gt; 1030  David Edmundson&lt;br&gt;  772  Nate Graham&lt;br&gt;  658  Alexander Lohnau&lt;br&gt;  551  Aleix Pol&lt;br&gt;  548  Nicolas Fella&lt;br&gt;  438  ivan tkachenko&lt;br&gt;  385  Eike Hein&lt;br&gt;  264  Sebastian Kügler&lt;br&gt;  250  Martin Gräßlin&lt;br&gt;  238  Harald Sitter&lt;br&gt;  232  Martin Klapetek&lt;br&gt;  223  Jonathan Riddell&lt;br&gt;  207  Vlad Zahorodnii&lt;br&gt;  194  David Redondo&lt;br&gt;  190  Friedrich W. H. Kossebau&lt;br&gt;  189  Laurent Montel&lt;br&gt;  144  Bhushan Shah&lt;br&gt;  134  Christoph Wolk&lt;br&gt;  134  Ismael Asensio&lt;br&gt;  126  Lukáš Tinkl&lt;br&gt;  121  Niccolò Venerandi&lt;br&gt;  117  Méven Car&lt;br&gt;  105  Natalie Clarius&lt;br&gt;   91  Konrad Materka&lt;br&gt;   80  Vishesh Handa&lt;br&gt;   80  Volker Krause&lt;br&gt;   79  Ivan Čukić&lt;br&gt;&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p class="wp-block-paragraph"&gt;&lt;code&gt;ShellCorona&lt;/code&gt; both changing and breaking a lot is no great surprise to me; it&amp;#8217;s fiddly and complicated. We need to do something about that. The number of emergencies doesn&amp;#8217;t look too bad, and momentum feels fine too. The project also appears to have a nice healthy diversity of contributors. Excellent!&lt;/p&gt;
&lt;p class="wp-block-paragraph"&gt;It&amp;#8217;s been quite illuminating to run these tools on KDE projects that I&amp;#8217;m both more and less familiar with. Give it a try!&lt;/p&gt;</description><author>Nate Graham</author></item><item><title>Web Review, Week 2026-15</title><link>https://ervin.ipsquad.net/blog/2026/04/10/web-review-week-2026-15/</link><pubDate>Fri, 10 Apr 2026 10:43:03 +0000</pubDate><guid isPermaLink="true">https://ervin.ipsquad.net/blog/2026/04/10/web-review-week-2026-15/</guid><description>&lt;p&gt;Let&amp;rsquo;s go for my web review for the week 2026-15.&lt;/p&gt;
&lt;hr&gt;
&lt;h4 id="france-launches-government-linux-desktop-plan-as-windows-exit-begins"&gt;France Launches Government Linux Desktop Plan as Windows Exit Begins&lt;/h4&gt;
&lt;p&gt;&lt;em&gt;Tags: tech, foss, politics, desktop, france, europe&lt;/em&gt;&lt;/p&gt;
&lt;p&gt;Well, what can I say? This is excellent news and I&amp;rsquo;m excited to see it happen. Let&amp;rsquo;s hope more governments do the same. It&amp;rsquo;ll take a while of course, so we&amp;rsquo;ll have to be patient.&lt;/p&gt;
&lt;p&gt;&lt;a target="_blank" href="https://linuxiac.com/france-launches-government-linux-desktop-plan-as-windows-exit-begins/"&gt;https://linuxiac.com/france-launches-government-linux-desktop-plan-as-windows-exit-begins/&lt;/a&gt;&lt;/p&gt;
&lt;br/&gt;
&lt;h4 id="the-free-market-lie-why-switzerland-has-25-gbit-internet-and-america-doesnt"&gt;The Free Market Lie: Why Switzerland Has 25 Gbit Internet and America Doesn&amp;rsquo;t&lt;/h4&gt;
&lt;p&gt;&lt;em&gt;Tags: tech, infrastructure, economics&lt;/em&gt;&lt;/p&gt;
&lt;p&gt;A good explanation and illustration of how natural monopolies work. This is why you want to regulate infrastructure properly.&lt;/p&gt;
&lt;p&gt;&lt;a target="_blank" href="https://sschueller.github.io/posts/the-free-market-lie/"&gt;https://sschueller.github.io/posts/the-free-market-lie/&lt;/a&gt;&lt;/p&gt;
&lt;br/&gt;
&lt;h4 id="you-can-absolutely-have-an-rss-dependent-website-in-2026"&gt;You can absolutely have an RSS dependent website in 2026&lt;/h4&gt;
&lt;p&gt;&lt;em&gt;Tags: tech, blog, rss&lt;/em&gt;&lt;/p&gt;
&lt;p&gt;The stats are clear there. Beside in term of experience, RSS feeds are so superior to newsletters&amp;hellip; I wish more bloggers would give up on the newsletter focus. There&amp;rsquo;s also a good point in this post: as soon as you have a newsletter you will sit on a database of email addresses, it&amp;rsquo;s definitely a liability.&lt;/p&gt;
&lt;p&gt;&lt;a target="_blank" href="https://matduggan.com/you-can-absolutely-have-an-rss-dependent-website-in-2026/"&gt;https://matduggan.com/you-can-absolutely-have-an-rss-dependent-website-in-2026/&lt;/a&gt;&lt;/p&gt;
&lt;br/&gt;
&lt;h4 id="the-downfall-and-enshittification-of-microsoft-in-2026"&gt;The Downfall and Enshittification of Microsoft in 2026&lt;/h4&gt;
&lt;p&gt;&lt;em&gt;Tags: tech, microsoft, github, apple, linux, business, product-management&lt;/em&gt;&lt;/p&gt;
&lt;p&gt;Indeed, the giant managed to make itself weak. This means opportunities for other ecosystems to grow faster than before.&lt;/p&gt;
&lt;p&gt;&lt;a target="_blank" href="https://caio.ca/blog/the-downfall-and-enshittification-of-microsoft.html"&gt;https://caio.ca/blog/the-downfall-and-enshittification-of-microsoft.html&lt;/a&gt;&lt;/p&gt;
&lt;br/&gt;
&lt;h4 id="lets-talk-about-llms"&gt;Let’s talk about LLMs&lt;/h4&gt;
&lt;p&gt;&lt;em&gt;Tags: tech, ai, machine-learning, copilot, productivity, craftsmanship&lt;/em&gt;&lt;/p&gt;
&lt;p&gt;Long but very precise piece about why you can likely ignore LLM for development purpose. Starting from older Fred Brooks work is spot on. Indeed whatever will remain of LLM based tools in the years to come, it&amp;rsquo;s much smarter to focus on fundamental skills than chase the new tools. At least, I&amp;rsquo;m trying to do my share in getting myself and others better at the craft.&lt;/p&gt;
&lt;p&gt;&lt;a target="_blank" href="https://www.b-list.org/weblog/2026/apr/09/llms/"&gt;https://www.b-list.org/weblog/2026/apr/09/llms/&lt;/a&gt;&lt;/p&gt;
&lt;br/&gt;
&lt;h4 id="almost-half-of-us-data-centers-that-were-supposed-to-open-this-year-slated-to-be-canceled-or-delayed"&gt;Almost Half of US Data Centers That Were Supposed to Open This Year Slated to Be Canceled or Delayed&lt;/h4&gt;
&lt;p&gt;&lt;em&gt;Tags: tech, ai, machine-learning, gpt, energy, economics, infrastructure&lt;/em&gt;&lt;/p&gt;
&lt;p&gt;It&amp;rsquo;s getting clearer that the industrial LLM complex will have a hard time meeting its targets.&lt;/p&gt;
&lt;p&gt;&lt;a target="_blank" href="https://futurism.com/science-energy/data-centers-construction-supply"&gt;https://futurism.com/science-energy/data-centers-construction-supply&lt;/a&gt;&lt;/p&gt;
&lt;br/&gt;
&lt;h4 id="cognitive-surrender-leads-ai-users-to-abandon-logical-thinking-research-finds"&gt;&amp;ldquo;Cognitive surrender&amp;rdquo; leads AI users to abandon logical thinking, research finds&lt;/h4&gt;
&lt;p&gt;&lt;em&gt;Tags: tech, ai, machine-learning, gpt, cognition, bias&lt;/em&gt;&lt;/p&gt;
&lt;p&gt;It feels like it&amp;rsquo;s supercharging an old bias&amp;hellip; We tend to confuse confidence for competence.&lt;/p&gt;
&lt;p&gt;&lt;a target="_blank" href="https://arstechnica.com/ai/2026/04/research-finds-ai-users-scarily-willing-to-surrender-their-cognition-to-llms/"&gt;https://arstechnica.com/ai/2026/04/research-finds-ai-users-scarily-willing-to-surrender-their-cognition-to-llms/&lt;/a&gt;&lt;/p&gt;
&lt;br/&gt;
&lt;h4 id="the-machines-are-fine-im-worried-about-us"&gt;The machines are fine. I&amp;rsquo;m worried about us.&lt;/h4&gt;
&lt;p&gt;&lt;em&gt;Tags: tech, ai, machine-learning, gpt, copilot, learning, science, research&lt;/em&gt;&lt;/p&gt;
&lt;p&gt;Excellent piece, it show quite well the problem of skipping the &amp;ldquo;grunt work&amp;rdquo;. Without it you can&amp;rsquo;t really learn your trade (be it astrophysics or anything else). It also shows how the incentives on scientific careers are wrong. It&amp;rsquo;s not new, but when LLM agents become available, things are definitely changing for the worst.&lt;/p&gt;
&lt;p&gt;&lt;a target="_blank" href="https://ergosphere.blog/posts/the-machines-are-fine/"&gt;https://ergosphere.blog/posts/the-machines-are-fine/&lt;/a&gt;&lt;/p&gt;
&lt;br/&gt;
&lt;h4 id="giving-llms-a-formal-reasoning-engine-for-code-analysis"&gt;Giving LLMs a Formal Reasoning Engine for Code Analysis&lt;/h4&gt;
&lt;p&gt;&lt;em&gt;Tags: tech, ai, machine-learning, copilot, prolog, logic&lt;/em&gt;&lt;/p&gt;
&lt;p&gt;Definitely interesting approach. I think neurosymbolic approaches are what we ultimately need so I&amp;rsquo;m probably biased. At least it means using LLMs for what they&amp;rsquo;re good at (language skills) and only that. Then rely on proper code symbolic models which do the reasoning heavy lifting. I&amp;rsquo;d expect it can give nice output with smaller models.&lt;/p&gt;
&lt;p&gt;&lt;a target="_blank" href="https://yogthos.net/posts/2026-04-08-neurosymbolic-mcp.html"&gt;https://yogthos.net/posts/2026-04-08-neurosymbolic-mcp.html&lt;/a&gt;&lt;/p&gt;
&lt;br/&gt;
&lt;h4 id="open-source-security-at-astral"&gt;Open source security at Astral&lt;/h4&gt;
&lt;p&gt;&lt;em&gt;Tags: tech, security, ci, supply-chain&lt;/em&gt;&lt;/p&gt;
&lt;p&gt;Lots of interesting measures to reduce the risk of supply chain issues. Definitely to be considered on your projects.&lt;/p&gt;
&lt;p&gt;&lt;a target="_blank" href="https://astral.sh/blog/open-source-security-at-astral"&gt;https://astral.sh/blog/open-source-security-at-astral&lt;/a&gt;&lt;/p&gt;
&lt;br/&gt;
&lt;h4 id="another-memory-corruption-case"&gt;another memory corruption case&lt;/h4&gt;
&lt;p&gt;&lt;em&gt;Tags: tech, hardware, memory, failure&lt;/em&gt;&lt;/p&gt;
&lt;p&gt;Failing DRAM chips are real. Here is the case of debugging a single bit flip.&lt;/p&gt;
&lt;p&gt;&lt;a target="_blank" href="https://trofi.github.io/posts/347-another-memory-corruption-case.html"&gt;https://trofi.github.io/posts/347-another-memory-corruption-case.html&lt;/a&gt;&lt;/p&gt;
&lt;br/&gt;
&lt;h4 id="the-git-commands-i-run-before-reading-any-code"&gt;The Git Commands I Run Before Reading Any Code&lt;/h4&gt;
&lt;p&gt;&lt;em&gt;Tags: tech, git, version-control, team, audit&lt;/em&gt;&lt;/p&gt;
&lt;p&gt;Nice little commands to use to discover quickly the state of a code base&amp;hellip; Or rather of its team.&lt;/p&gt;
&lt;p&gt;&lt;a target="_blank" href="https://piechowski.io/post/git-commands-before-reading-code/"&gt;https://piechowski.io/post/git-commands-before-reading-code/&lt;/a&gt;&lt;/p&gt;
&lt;br/&gt;
&lt;h4 id="zsh-select-generated-files-with-om1-glob-qualifiers"&gt;Zsh: select generated files with (om[1]) glob qualifiers&lt;/h4&gt;
&lt;p&gt;&lt;em&gt;Tags: tech, zsh, shell&lt;/em&gt;&lt;/p&gt;
&lt;p&gt;Oh this is super neat and convenient! I didn&amp;rsquo;t know about those glob patterns modifiers in zsh.&lt;/p&gt;
&lt;p&gt;&lt;a target="_blank" href="https://adamj.eu/tech/2026/01/27/zsh-om1-glob-qualifiers/"&gt;https://adamj.eu/tech/2026/01/27/zsh-om1-glob-qualifiers/&lt;/a&gt;&lt;/p&gt;
&lt;br/&gt;
&lt;h4 id="two-little-scripts-addup-and-sumup"&gt;Two little scripts: addup and sumup&lt;/h4&gt;
&lt;p&gt;&lt;em&gt;Tags: tech, unix, shell, scripting&lt;/em&gt;&lt;/p&gt;
&lt;p&gt;A friendly reminder that one can go far mainly with awk.&lt;/p&gt;
&lt;p&gt;&lt;a target="_blank" href="https://utcc.utoronto.ca/~cks/space/blog/sysadmin/LittleScriptsIX"&gt;https://utcc.utoronto.ca/~cks/space/blog/sysadmin/LittleScriptsIX&lt;/a&gt;&lt;/p&gt;
&lt;br/&gt;
&lt;h4 id="all-of-the-string-types"&gt;All of the String types&lt;/h4&gt;
&lt;p&gt;&lt;em&gt;Tags: tech, memory, unicode, encodings&lt;/em&gt;&lt;/p&gt;
&lt;p&gt;So many string types! They all have a purpose of course. It&amp;rsquo;s a good reminder that something mundane like a string type is not that simple.&lt;/p&gt;
&lt;p&gt;&lt;a target="_blank" href="https://lambdalemon.gay/posts/string-types"&gt;https://lambdalemon.gay/posts/string-types&lt;/a&gt;&lt;/p&gt;
&lt;br/&gt;
&lt;h4 id="stamp-it-all-programs-must-report-their-version"&gt;Stamp It! All Programs Must Report Their Version&lt;/h4&gt;
&lt;p&gt;&lt;em&gt;Tags: tech, version-control, debugging&lt;/em&gt;&lt;/p&gt;
&lt;p&gt;Examples of how i3 and go stamp versions. This is indeed good habits to ease dealing with errors in production.&lt;/p&gt;
&lt;p&gt;&lt;a target="_blank" href="https://michael.stapelberg.ch/posts/2026-04-05-stamp-it-all-programs-must-report-their-version/"&gt;https://michael.stapelberg.ch/posts/2026-04-05-stamp-it-all-programs-must-report-their-version/&lt;/a&gt;&lt;/p&gt;
&lt;br/&gt;
&lt;h4 id="the-mvc-mistake"&gt;The MVC Mistake&lt;/h4&gt;
&lt;p&gt;&lt;em&gt;Tags: tech, architecture, complexity&lt;/em&gt;&lt;/p&gt;
&lt;p&gt;Shows the problem with layer cakes in applications or how you might want to go toward onion architectures.&lt;/p&gt;
&lt;p&gt;&lt;a target="_blank" href="https://entropicthoughts.com/mvc-mistake"&gt;https://entropicthoughts.com/mvc-mistake&lt;/a&gt;&lt;/p&gt;
&lt;br/&gt;
&lt;h4 id="the-mouse-that-roared"&gt;The Mouse That Roared&lt;/h4&gt;
&lt;p&gt;&lt;em&gt;Tags: tech, leadership, tests, tdd, agile, organisation&lt;/em&gt;&lt;/p&gt;
&lt;p&gt;Cryptic title to be honest. But this is a good explanation of why any &amp;ldquo;agile transformation&amp;rdquo; better start close to the code and in particular with automated tests. If you can crack that nut (and it takes time), the rest will follow naturally.&lt;/p&gt;
&lt;p&gt;&lt;a target="_blank" href="https://codemanship.wordpress.com/2026/03/30/the-mouse-that-roared/"&gt;https://codemanship.wordpress.com/2026/03/30/the-mouse-that-roared/&lt;/a&gt;&lt;/p&gt;
&lt;br/&gt;
&lt;h4 id="if-you-thought-the-speed-of-writing-code-was-your-problem---you-have-bigger-problems"&gt;If you thought the speed of writing code was your problem - you have bigger problems&lt;/h4&gt;
&lt;p&gt;&lt;em&gt;Tags: tech, productivity, organisation, leadership, ai, machine-learning, copilot&lt;/em&gt;&lt;/p&gt;
&lt;p&gt;So much this&amp;hellip; There are so many organisational problems that churning code faster is likely not what you need. When did we start to obsess with the number of lines of code?&lt;/p&gt;
&lt;p&gt;&lt;a target="_blank" href="https://andrewmurphy.io/blog/if-you-thought-the-speed-of-writing-code-was-your-problem-you-have-bigger-problems"&gt;https://andrewmurphy.io/blog/if-you-thought-the-speed-of-writing-code-was-your-problem-you-have-bigger-problems&lt;/a&gt;&lt;/p&gt;
&lt;br/&gt;
&lt;h4 id="are-we-idiocracy-yet"&gt;Are We Idiocracy Yet?&lt;/h4&gt;
&lt;p&gt;&lt;em&gt;Tags: satire, culture&lt;/em&gt;&lt;/p&gt;
&lt;p&gt;Getting there, one day at a time.&lt;/p&gt;
&lt;p&gt;&lt;a target="_blank" href="https://idiocracy.wtf/"&gt;https://idiocracy.wtf/&lt;/a&gt;&lt;/p&gt;
&lt;br/&gt;
&lt;hr&gt;
&lt;p&gt;Bye for now!&lt;/p&gt;</description><author>Kevin Ottens</author></item><item><title>KDE in Graz</title><link>https://mxdarkwater.com/2026/04/10/kde-in-graz/</link><pubDate>Fri, 10 Apr 2026 08:49:40 +0000</pubDate><guid isPermaLink="true">https://mxdarkwater.com/?p=26022</guid><description>&lt;p&gt;I&amp;#8217;ve been on the Akademy organizing team and contributing in various cat-herding capacities since 2023, but this is the first time I&amp;#8217;ve joined other contributors for a &lt;a target="_blank" href="https://kde.org/community/calendar/2026/megasprint/"&gt;Sprint&lt;/a&gt;. &lt;/p&gt;
&lt;p&gt;My mission this week has been to scout locations and activities for the &lt;a target="_blank" href="https://akademy.kde.org/2026"&gt;Akademy&lt;/a&gt; conference later this year. One of the members of our local organizing team let me (temporarily) adopt their stuffed &lt;a target="_blank" href="https://community.kde.org/Konqi"&gt;Konqi&lt;/a&gt;, so I have been wandering around Graz and the state of Styria with a stuffed dragon taking a bunch of pictures, drinking Aperol Spritz, eating &lt;a target="_blank" href="https://www.zotter.at/en/zotter-experience-world"&gt;chocolate, and petting animals&lt;/a&gt; to make sure that all the places we visit in September will be fun and accessible for everyone who joins. &lt;/p&gt;
&lt;figure data-carousel-extra='&amp;#123;&amp;quot;blog_id&amp;quot;:1,&amp;quot;permalink&amp;quot;:&amp;quot;https://mxdarkwater.com/2026/04/10/kde-in-graz/&amp;quot;}' class="wp-block-gallery has-nested-images columns-default is-cropped wp-block-gallery-1 is-layout-flex wp-block-gallery-is-layout-flex"&gt;
&lt;figure class="wp-block-image size-large"&gt;&lt;img data-recalc-dims="1" fetchpriority="high" decoding="async" width="576" height="1024" data-attachment-id="26025" data-permalink="https://mxdarkwater.com/2026/04/10/kde-in-graz/pxl_20260408_114307027-mp/" data-orig-file="https://i0.wp.com/mxdarkwater.com/wp-content/uploads/2026/04/PXL_20260408_114307027.MP_-scaled.jpg?fit=1440%2C2560&amp;amp;ssl=1" data-orig-size="1440,2560" data-comments-opened="1" data-image-meta="&amp;#123;&amp;quot;aperture&amp;quot;:&amp;quot;1.89&amp;quot;,&amp;quot;credit&amp;quot;:&amp;quot;&amp;quot;,&amp;quot;camera&amp;quot;:&amp;quot;Pixel 7a&amp;quot;,&amp;quot;caption&amp;quot;:&amp;quot;&amp;quot;,&amp;quot;created_timestamp&amp;quot;:&amp;quot;1775655787&amp;quot;,&amp;quot;copyright&amp;quot;:&amp;quot;&amp;quot;,&amp;quot;focal_length&amp;quot;:&amp;quot;5.43&amp;quot;,&amp;quot;iso&amp;quot;:&amp;quot;191&amp;quot;,&amp;quot;shutter_speed&amp;quot;:&amp;quot;0.010005&amp;quot;,&amp;quot;title&amp;quot;:&amp;quot;&amp;quot;,&amp;quot;orientation&amp;quot;:&amp;quot;1&amp;quot;}" data-image-title="PXL_20260408_114307027.MP" data-image-description="" data-image-caption="" data-large-file="https://i0.wp.com/mxdarkwater.com/wp-content/uploads/2026/04/PXL_20260408_114307027.MP_-scaled.jpg?fit=576%2C1024&amp;amp;ssl=1" data-id="26025" src="https://i0.wp.com/mxdarkwater.com/wp-content/uploads/2026/04/PXL_20260408_114307027.MP_.jpg?resize=576%2C1024&amp;#038;ssl=1" alt="Konqi in front of a chocolate fountain" class="wp-image-26025" srcset="https://i0.wp.com/mxdarkwater.com/wp-content/uploads/2026/04/PXL_20260408_114307027.MP_-scaled.jpg?resize=576%2C1024&amp;amp;ssl=1 576w, https://i0.wp.com/mxdarkwater.com/wp-content/uploads/2026/04/PXL_20260408_114307027.MP_-scaled.jpg?resize=169%2C300&amp;amp;ssl=1 169w, https://i0.wp.com/mxdarkwater.com/wp-content/uploads/2026/04/PXL_20260408_114307027.MP_-scaled.jpg?resize=768%2C1365&amp;amp;ssl=1 768w, https://i0.wp.com/mxdarkwater.com/wp-content/uploads/2026/04/PXL_20260408_114307027.MP_-scaled.jpg?resize=864%2C1536&amp;amp;ssl=1 864w, https://i0.wp.com/mxdarkwater.com/wp-content/uploads/2026/04/PXL_20260408_114307027.MP_-scaled.jpg?resize=1152%2C2048&amp;amp;ssl=1 1152w, https://i0.wp.com/mxdarkwater.com/wp-content/uploads/2026/04/PXL_20260408_114307027.MP_-scaled.jpg?w=1440&amp;amp;ssl=1 1440w" sizes="(max-width: 576px) 100vw, 576px" /&gt;&lt;figcaption class="wp-element-caption"&gt;Konqi at Zotter&lt;/figcaption&gt;&lt;/figure&gt;
&lt;figure class="wp-block-image size-large"&gt;&lt;img data-recalc-dims="1" decoding="async" width="576" height="1024" data-attachment-id="26024" data-permalink="https://mxdarkwater.com/2026/04/10/kde-in-graz/pxl_20260408_133245720/" data-orig-file="https://i0.wp.com/mxdarkwater.com/wp-content/uploads/2026/04/PXL_20260408_133245720-scaled.jpg?fit=1440%2C2560&amp;amp;ssl=1" data-orig-size="1440,2560" data-comments-opened="1" data-image-meta="&amp;#123;&amp;quot;aperture&amp;quot;:&amp;quot;1.89&amp;quot;,&amp;quot;credit&amp;quot;:&amp;quot;&amp;quot;,&amp;quot;camera&amp;quot;:&amp;quot;Pixel 7a&amp;quot;,&amp;quot;caption&amp;quot;:&amp;quot;&amp;quot;,&amp;quot;created_timestamp&amp;quot;:&amp;quot;1775662365&amp;quot;,&amp;quot;copyright&amp;quot;:&amp;quot;&amp;quot;,&amp;quot;focal_length&amp;quot;:&amp;quot;5.43&amp;quot;,&amp;quot;iso&amp;quot;:&amp;quot;42&amp;quot;,&amp;quot;shutter_speed&amp;quot;:&amp;quot;0.000408&amp;quot;,&amp;quot;title&amp;quot;:&amp;quot;&amp;quot;,&amp;quot;orientation&amp;quot;:&amp;quot;1&amp;quot;}" data-image-title="PXL_20260408_133245720" data-image-description="" data-image-caption="" data-large-file="https://i0.wp.com/mxdarkwater.com/wp-content/uploads/2026/04/PXL_20260408_133245720-scaled.jpg?fit=576%2C1024&amp;amp;ssl=1" data-id="26024" src="https://i0.wp.com/mxdarkwater.com/wp-content/uploads/2026/04/PXL_20260408_133245720.jpg?resize=576%2C1024&amp;#038;ssl=1" alt="Konqi holding my bag of chocolates" class="wp-image-26024" srcset="https://i0.wp.com/mxdarkwater.com/wp-content/uploads/2026/04/PXL_20260408_133245720-scaled.jpg?resize=576%2C1024&amp;amp;ssl=1 576w, https://i0.wp.com/mxdarkwater.com/wp-content/uploads/2026/04/PXL_20260408_133245720-scaled.jpg?resize=169%2C300&amp;amp;ssl=1 169w, https://i0.wp.com/mxdarkwater.com/wp-content/uploads/2026/04/PXL_20260408_133245720-scaled.jpg?resize=768%2C1365&amp;amp;ssl=1 768w, https://i0.wp.com/mxdarkwater.com/wp-content/uploads/2026/04/PXL_20260408_133245720-scaled.jpg?resize=864%2C1536&amp;amp;ssl=1 864w, https://i0.wp.com/mxdarkwater.com/wp-content/uploads/2026/04/PXL_20260408_133245720-scaled.jpg?resize=1152%2C2048&amp;amp;ssl=1 1152w, https://i0.wp.com/mxdarkwater.com/wp-content/uploads/2026/04/PXL_20260408_133245720-scaled.jpg?w=1440&amp;amp;ssl=1 1440w" sizes="(max-width: 576px) 100vw, 576px" /&gt;&lt;figcaption class="wp-element-caption"&gt;Konqi guarding my chocolates at the bus stop&lt;/figcaption&gt;&lt;/figure&gt;
&lt;figure class="wp-block-image size-large"&gt;&lt;img data-recalc-dims="1" decoding="async" width="576" height="1024" data-attachment-id="26026" data-permalink="https://mxdarkwater.com/2026/04/10/kde-in-graz/pxl_20260408_093552765/" data-orig-file="https://i0.wp.com/mxdarkwater.com/wp-content/uploads/2026/04/PXL_20260408_093552765-scaled.jpg?fit=1440%2C2560&amp;amp;ssl=1" data-orig-size="1440,2560" data-comments-opened="1" data-image-meta="&amp;#123;&amp;quot;aperture&amp;quot;:&amp;quot;2.2&amp;quot;,&amp;quot;credit&amp;quot;:&amp;quot;&amp;quot;,&amp;quot;camera&amp;quot;:&amp;quot;Pixel 7a&amp;quot;,&amp;quot;caption&amp;quot;:&amp;quot;&amp;quot;,&amp;quot;created_timestamp&amp;quot;:&amp;quot;1775648152&amp;quot;,&amp;quot;copyright&amp;quot;:&amp;quot;&amp;quot;,&amp;quot;focal_length&amp;quot;:&amp;quot;2.74&amp;quot;,&amp;quot;iso&amp;quot;:&amp;quot;97&amp;quot;,&amp;quot;shutter_speed&amp;quot;:&amp;quot;0.009992&amp;quot;,&amp;quot;title&amp;quot;:&amp;quot;&amp;quot;,&amp;quot;orientation&amp;quot;:&amp;quot;1&amp;quot;}" data-image-title="PXL_20260408_093552765" data-image-description="" data-image-caption="&amp;lt;p&amp;gt;me and Konqi on the train&amp;lt;/p&amp;gt;
" data-large-file="https://i0.wp.com/mxdarkwater.com/wp-content/uploads/2026/04/PXL_20260408_093552765-scaled.jpg?fit=576%2C1024&amp;amp;ssl=1" data-id="26026" src="https://i0.wp.com/mxdarkwater.com/wp-content/uploads/2026/04/PXL_20260408_093552765.jpg?resize=576%2C1024&amp;#038;ssl=1" alt="" class="wp-image-26026" srcset="https://i0.wp.com/mxdarkwater.com/wp-content/uploads/2026/04/PXL_20260408_093552765-scaled.jpg?resize=576%2C1024&amp;amp;ssl=1 576w, https://i0.wp.com/mxdarkwater.com/wp-content/uploads/2026/04/PXL_20260408_093552765-scaled.jpg?resize=169%2C300&amp;amp;ssl=1 169w, https://i0.wp.com/mxdarkwater.com/wp-content/uploads/2026/04/PXL_20260408_093552765-scaled.jpg?resize=768%2C1365&amp;amp;ssl=1 768w, https://i0.wp.com/mxdarkwater.com/wp-content/uploads/2026/04/PXL_20260408_093552765-scaled.jpg?resize=864%2C1536&amp;amp;ssl=1 864w, https://i0.wp.com/mxdarkwater.com/wp-content/uploads/2026/04/PXL_20260408_093552765-scaled.jpg?resize=1152%2C2048&amp;amp;ssl=1 1152w, https://i0.wp.com/mxdarkwater.com/wp-content/uploads/2026/04/PXL_20260408_093552765-scaled.jpg?w=1440&amp;amp;ssl=1 1440w" sizes="(max-width: 576px) 100vw, 576px" /&gt;&lt;figcaption class="wp-element-caption"&gt;me and Konqi on the train&lt;/figcaption&gt;&lt;/figure&gt;
&lt;/figure&gt;
&lt;p&gt;This year KDE turns 30, so we are planning a big celebration for Akademy. I have been thrilled to discover that Graz is very accessible. The town tourism website has a &lt;a target="_blank" href="https://www.graztourismus.at/en/getting-there-and-public-transport/accessible-graz"&gt;guide for navigating&lt;/a&gt; with a wheelchair or other mobility devices; many restaurants have mocktails or homemade juice/tea options for non-alcoholic drinks; the city is full of plazas you can sit and sip a coffee in for hours when you need a break from walking, and there is an abundance of parks and fountains that children can expel their energy playing in.&lt;/p&gt;
&lt;p&gt;I can&amp;#8217;t wait to introduce the KDE community to Graz this &lt;a target="_blank" href="https://akademy.kde.org/2026/register/"&gt;September&lt;/a&gt;!&lt;/p&gt;</description><author>Bridging the Gap</author></item><item><title>Akademy 2026 Call for Proposals is Now Open</title><link>https://akademy.kde.org/news/2026-04-10_akademy-2026-call-for-proposals/</link><pubDate>Fri, 10 Apr 2026 08:04:55 +0000</pubDate><guid isPermaLink="true">https://akademy.kde.org/news/2026-04-10_akademy-2026-call-for-proposals/</guid><description>&lt;h2 id="akademy-2026-call-for-participation"&gt;Akademy 2026: Call for Participation&lt;/h2&gt;
&lt;p&gt;&lt;a target="_blank" href="https://akademy.kde.org/2026/"&gt;Akademy 2026&lt;/a&gt; will be a hybrid event held
simultaneously in Graz, Austria, and online. The
&lt;a target="_blank" href="https://akademy.kde.org/2026/cfp/"&gt;&lt;strong&gt;Call for Participation&lt;/strong&gt;&lt;/a&gt; is open!
Send us your talk ideas and abstracts.&lt;/p&gt;
&lt;h3 id="why-talk-at-akademy2026"&gt;Why talk at #Akademy2026&lt;/h3&gt;
&lt;p&gt;Akademy attracts artists, designers, developers, translators, users, writers,
companies, public institutions and many other KDE friends and contributors.
We celebrate the achievements and help determine the direction for the next
year. We all meet together to discuss and plan the future of the Community
and the technology we build. You will meet people who are receptive to your
ideas and can help you with their skills and experience. You will get an
opportunity to present your application, share ideas and best practices, or
gain new contributors. These sessions offer the opportunity to gain support
and make your plans for your project become a reality.&lt;/p&gt;
&lt;h3 id="how-to-get-started"&gt;How to get started&lt;/h3&gt;
&lt;p&gt;Do not worry about details or slides right now. Just think of an idea and
submit some basic details about your talk. You can edit your abstract after
the initial submission. All topics relevant to the KDE Community are
welcome. Here are a few ideas to get you started on your proposal:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;How KDE can empower building robust communities in changing political climates&lt;/li&gt;
&lt;li&gt;Work towards &lt;a target="_blank" href="https://kde.org/goals/" title="https://kde.org/goals/"&gt;&lt;em&gt;KDE's goals&lt;/em&gt;&lt;/a&gt;:
Streamlined Application Development Experience, We care about your Input, and
KDE Needs You&lt;/li&gt;
&lt;li&gt;Giving people more digital freedom, sovereignty, and autonomy with KDE software&lt;/li&gt;
&lt;li&gt;Advice on how to participate for new users, intermediates and experts&lt;/li&gt;
&lt;li&gt;New developments/plans for KDE Frameworks, Plasma, Applications and other projects&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;30 years of KDE: achievements, highlights, and what’s next&lt;/strong&gt;&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Anything else that might interest an audience of long-time, new, and potential KDE contributors!&lt;/strong&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;To get an idea of talks that were accepted, check out the program from previous
years:
&lt;a target="_blank" href="https://conf.kde.org/event/9/timetable//?layout=room#all"&gt;&lt;em&gt;2025&lt;/em&gt;&lt;/a&gt;
&lt;a target="_blank" href="https://conf.kde.org/event/6/contributions/"&gt;&lt;em&gt;2024&lt;/em&gt;&lt;/a&gt;,
&lt;a target="_blank" href="https://conf.kde.org/event/5/contributions/" title="https://conf.kde.org/event/5/contributions/"&gt;&lt;em&gt;2023&lt;/em&gt;&lt;/a&gt;,
&lt;a target="_blank" href="https://conf.kde.org/event/4/timetable/" title="https://conf.kde.org/event/4/timetable/"&gt;&lt;em&gt;2022&lt;/em&gt;&lt;/a&gt;,
&lt;a target="_blank" href="https://conf.kde.org/event/1/timetable/#20210619" title="https://conf.kde.org/event/1/timetable/#20210619"&gt;&lt;em&gt;2021&lt;/em&gt;&lt;/a&gt;,
&lt;a target="_blank" href="https://conf.kde.org/en/akademy2020/public/events" title="https://conf.kde.org/en/akademy2020/public/events"&gt;&lt;em&gt;2020&lt;/em&gt;&lt;/a&gt;,
&lt;a target="_blank" href="https://conf.kde.org/en/akademy2019/public/events" title="https://conf.kde.org/en/akademy2019/public/events"&gt;&lt;em&gt;2019&lt;/em&gt;&lt;/a&gt;,
&lt;a target="_blank" href="https://conf.kde.org/en/akademy2018/public/events" title="https://conf.kde.org/en/akademy2018/public/events"&gt;&lt;em&gt;2018&lt;/em&gt;&lt;/a&gt;,
and
&lt;a target="_blank" href="https://conf.kde.org/en/akademy2017/public/events" title="https://conf.kde.org/en/akademy2017/public/events"&gt;&lt;em&gt;2017&lt;/em&gt;&lt;/a&gt;.&lt;/p&gt;
&lt;p&gt;For more details and information, visit &lt;a target="_blank" href="https://akademy.kde.org/2026/cfp/"&gt;&lt;strong&gt;Call for Participation&lt;/strong&gt;&lt;/a&gt;.&lt;/p&gt;</description><author>Akademy</author></item><item><title>Building C/C++ libraries for HarmonyOS with vcpkg</title><link>https://www.qt.io/blog/building-libraries-for-harmonyos-with-vcpkg</link><pubDate>Fri, 10 Apr 2026 07:14:41 +0000</pubDate><guid isPermaLink="true">https://www.qt.io/blog/building-libraries-for-harmonyos-with-vcpkg</guid><description>&lt;div class="hs-featured-image-wrapper"&gt;
&lt;a target="_blank" href="https://www.qt.io/blog/building-libraries-for-harmonyos-with-vcpkg?hsLang=en" title="" class="hs-featured-image-link"&gt; &lt;img src="https://www.qt.io/hubfs/ohos-vcpkg.png" alt="Building C/C++ libraries for HarmonyOS with vcpkg" class="hs-featured-image" style="width:auto !important; max-width:50%; float:left; margin:0 15px 15px 0;"&gt; &lt;/a&gt;
&lt;/div&gt;
&lt;p&gt;We're currently working on porting Qt to &lt;a target="_blank" href="https://en.wikipedia.org/wiki/HarmonyOS"&gt;HarmonyOS&lt;/a&gt;. For our CI and developer machines, we need a number of third-party libraries built for HarmonyOS. Cross-compiling open-source C and C++ libraries for this platform has been a manual, error-prone process. Each library has its own build system, whether CMake, Autotools, or Meson. Each needs individual attention to produce correct binaries for the OHOS target. We have been maintaining a hand-written shell script that builds libraries one by one, with per-library workarounds for cross-compilation quirks.&lt;br&gt;&lt;br&gt;With our vcpkg fork, that script is now a single command.&lt;/p&gt;
&lt;img src="https://track-eu1.hubspot.com/__ptq.gif?a=149513&amp;amp;k=14&amp;amp;r=https%3A%2F%2Fwww.qt.io%2Fblog%2Fbuilding-libraries-for-harmonyos-with-vcpkg&amp;amp;bu=https%253A%252F%252Fwww.qt.io%252Fblog&amp;amp;bvt=rss" alt="" width="1" height="1" style="min-height:1px!important;width:1px!important;border-width:0!important;margin-top:0!important;margin-bottom:0!important;margin-right:0!important;margin-left:0!important;padding-top:0!important;padding-bottom:0!important;padding-right:0!important;padding-left:0!important; "&gt;</description><author>Qt Dev Loop</author></item><item><title>Tighter KDE Connect Integration</title><link>https://blog.broulik.de/2026/04/kde-connect-solid-back-end/</link><pubDate>Fri, 10 Apr 2026 01:14:00 +0000</pubDate><guid isPermaLink="true">https://blog.broulik.de/?p=2866</guid><description>&lt;p&gt;In my opinion, &lt;a target="_blank" href="https://kdeconnect.kde.org/" data-type="link" data-id="http://kdeconnect.kde.org/" target="_blank" rel="noreferrer noopener"&gt;KDE Connect&lt;/a&gt; is one of the finest pieces of software KDE has ever produced. It lets you easily pair your devices and makes them work together. Copy some text on your computer, paste it on your phone. A call comes in and the video you’re watching in your browser pauses. How cool is that? For the past couple of weeks I’ve been working on even tighter integration between KDE Connect and the Plasma desktop.&lt;/p&gt;
&lt;figure class="wp-block-image size-large"&gt;&lt;a target="_blank" href="https://blog.broulik.de/wp-content/uploads/2026/03/kdeconnectbackend.png"&gt;&lt;img fetchpriority="high" decoding="async" width="1024" height="830" src="https://blog.broulik.de/wp-content/uploads/2026/03/kdeconnectbackend-1024x830.png" alt="Plasma’s “Power &amp;amp; Battery ” popup, containing a power profile slider, and three batteries (intenral laptop battery, phone battery, and some other laptop battery)" class="wp-image-2900" srcset="https://blog.broulik.de/wp-content/uploads/2026/03/kdeconnectbackend-1024x830.png 1024w, https://blog.broulik.de/wp-content/uploads/2026/03/kdeconnectbackend-300x243.png 300w, https://blog.broulik.de/wp-content/uploads/2026/03/kdeconnectbackend-768x623.png 768w, https://blog.broulik.de/wp-content/uploads/2026/03/kdeconnectbackend.png 1305w" sizes="(max-width: 1024px) 100vw, 1024px" /&gt;&lt;/a&gt;&lt;figcaption class="wp-element-caption"&gt;Battery Monitor displaying status about devices paired wirelessly using KDE Connect&lt;/figcaption&gt;&lt;/figure&gt;
&lt;span id="more-2866"&gt;&lt;/span&gt;
&lt;p&gt;By adding a corresponding back end to Solid, KDE’s hardware abstraction framework, your phone’s battery status will show up in the “Power &amp;amp; Battery” popup just like a wireless mouse would. The key advantage of reporting a KDE Connect device as storage media is that it can show up in various places just like a USB drive would, including the Places panel in Dolphin and “Disk &amp;amp; Devices” in Plasma’s system tray. Right now, the Places panel entry is actually manually added by &lt;em&gt;kdeconnectd&lt;/em&gt; creating a bookmark. This also means that any modifications done to the entry, such as hiding it, will be lost once the device disappears. If instead it is a proper Solid device with a unique identifier, the Places panel will remember that the device was hidden next time it is discovered. Additionally, PowerDevil, Plasma’s power management daemon, already automatically issues a notification when a connected external device runs low on battery.&lt;/p&gt;
&lt;p&gt;Now that the fact that you can browse your phone’s storage remotely via KDE Connect is more obvious, I spent some time improving the user experience when doing so. Since KDE Connect is cross-desktop and cross-platform it uses &lt;em&gt;sshfs&lt;/em&gt; to provide access to the phone. It doesn’t implement a proper KIO worker like we normally would since that really only works in KDE applications. This unfortunately comes with a couple of downsides: for example, the device is mounted into &lt;em&gt;/run/user/&amp;lt;uid&gt;/&amp;lt;deviceid&gt;&lt;/em&gt; which is gibberish that will be shown to the user in the address bar. More importantly, though, it makes the file manager think it’s a local path (which is normally fast to access) and could lead to UI freezes when the connection is slow or unstable.&lt;/p&gt;
&lt;p&gt;To improve this, I made use of KIO’s &lt;em&gt;ForwardingWorkerBase&lt;/em&gt;. This is a tiny KIO worker that just rewrites a URL and forwards it to a different location. This way, the application sees a “remote” &lt;em&gt;kdeconnect://device/path&lt;/em&gt; URL and keeps everything nice and asynchronous but under the hood still uses the &lt;em&gt;sshfs&lt;/em&gt; infrastructure we already have. It’s what the magic &lt;em&gt;desktop:/&lt;/em&gt; URL uses that parses the name of &lt;em&gt;.desktop&lt;/em&gt; files (so your get nice application names) but other than that merely reads from &lt;em&gt;/home/&amp;lt;user&gt;/Desktop&lt;/em&gt;. This also makes the entry in the Places panel match up with the URL being browsed and ultimately makes the device’s name appear on the address bar instead of an ugly UUID.&lt;/p&gt;
&lt;figure class="wp-block-image size-large"&gt;&lt;a target="_blank" href="https://blog.broulik.de/wp-content/uploads/2026/03/Bildschirmfoto_20260409_202108.png"&gt;&lt;img decoding="async" width="1024" height="633" src="https://blog.broulik.de/wp-content/uploads/2026/03/Bildschirmfoto_20260409_202108-1024x633.png" alt="" class="wp-image-2901" style="border: 1px solid black" srcset="https://blog.broulik.de/wp-content/uploads/2026/03/Bildschirmfoto_20260409_202108-1024x633.png 1024w, https://blog.broulik.de/wp-content/uploads/2026/03/Bildschirmfoto_20260409_202108-300x185.png 300w, https://blog.broulik.de/wp-content/uploads/2026/03/Bildschirmfoto_20260409_202108-768x475.png 768w, https://blog.broulik.de/wp-content/uploads/2026/03/Bildschirmfoto_20260409_202108-825x510.png 825w, https://blog.broulik.de/wp-content/uploads/2026/03/Bildschirmfoto_20260409_202108.png 1294w" sizes="(max-width: 1024px) 100vw, 1024px" /&gt;&lt;/a&gt;&lt;figcaption class="wp-element-caption"&gt; No more gibberish &lt;em&gt;/run/user/somethingsomething&lt;/em&gt; URL on the address bar&lt;/figcaption&gt;&lt;/figure&gt;
&lt;p&gt;While at it, I also added a “KDE Connect Devices” link to the “Network” folder, like we already have for Bluetooth, MTP, and Apple devices. Finally, when there is only a single storage location on the device, such as “Internal Shared Storage”, it redirects into it automatically. This saves one click when opening the device and puts you directly where your stuff is. The back end has &lt;a target="_blank" href="https://invent.kde.org/frameworks/solid/-/commit/75d19cd14c07dda587d429d0a86fa75df83496a4" data-type="link" data-id="https://invent.kde.org/frameworks/solid/-/commit/75d19cd14c07dda587d429d0a86fa75df83496a4" target="_blank" rel="noreferrer noopener"&gt;just been merged&lt;/a&gt; and will be released next month as part of KDE Frameworks 6.26. However, since there’s still a bunch of infrastructure work needed around it, the back end is disabled by default. We will likely need to have at least KDE Gear 26.08 and Plasma 6.7 released that will include some necessary changes before we can flip the switch.&lt;/p&gt;
&lt;p&gt;If you run latest KDE git builds, please give it a try and let me know what you think! You need to set the &lt;em&gt;SOLID_ENABLE_KDECONNECT=1&lt;/em&gt; environment variable to use it. To enable all debug output to aid debugging, set QT_LOGGING_RULES=kf.solid.backends.kdeconnect*=true or use KDebugSettings. &lt;/p&gt;</description><author>Kai Uwe Broulik</author></item><item><title>KDE Ships Frameworks 6.25.0</title><link>https://kde.org/announcements/frameworks/6/6.25.0/</link><pubDate>Fri, 10 Apr 2026 00:00:00 +0000</pubDate><guid isPermaLink="true">https://kde.org/announcements/frameworks/6/6.25.0/</guid><description>&lt;p&gt;Friday, 10 April 2026&lt;/p&gt;
&lt;p&gt;KDE today announces the release of KDE Frameworks 6.25.0.&lt;/p&gt;
&lt;p&gt;This release is part of a series of planned monthly releases making improvements available to developers in a quick and predictable manner.&lt;/p&gt;
&lt;h2 id="new-in-this-version"&gt;New in this version&lt;/h2&gt;
&lt;details open="true" id="Baloo"&gt;
&lt;summary class="h4"&gt;&lt;a target="_blank" href="https://commits.kde.org/baloo"&gt;Baloo&lt;/a&gt;&lt;/summary&gt;&lt;ul&gt;
&lt;li&gt;Fix remaining QFile::open nodiscard warnings. &lt;a target="_blank" href="https://commits.kde.org/baloo/156dce7a29998c80cf39260394a564265185811b"&gt;Commit.&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;[FileIndexerConfigUtils] Fix a nodiscard warning in fixture setup. &lt;a target="_blank" href="https://commits.kde.org/baloo/85ade38b968c0d87dc272c209037742d8b238c46"&gt;Commit.&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;[FileIndexerConfigUtils] Remove unneeded QTextStream. &lt;a target="_blank" href="https://commits.kde.org/baloo/6d78cc117fdacd4d7f4456dfbf1e097a8a424b11"&gt;Commit.&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;[FileIndexerConfigTest] Get rid of an almost duplicate helper function. &lt;a target="_blank" href="https://commits.kde.org/baloo/931c05de40097989ca2070920781a229222b871f"&gt;Commit.&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;[FileIndexerConfigTest] Reduce repetitions/manual expansion. &lt;a target="_blank" href="https://commits.kde.org/baloo/8f72eeca8e12f5dbebe16f49a0243ee0f063e1a3"&gt;Commit.&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;[FileIndexerConfigTest] Reduce string puzzles to improve readability. &lt;a target="_blank" href="https://commits.kde.org/baloo/1f283e5446a83021d162035df99bb9876163999d"&gt;Commit.&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;[FileIndexerConfigTest] Move single-use strings out of header file. &lt;a target="_blank" href="https://commits.kde.org/baloo/efee67709d9b5b7ff1a8bff139783147f7e8cae2"&gt;Commit.&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;[DocumentUrlDBTest] Remove unused helper function. &lt;a target="_blank" href="https://commits.kde.org/baloo/248eb5937a57658767fcebfbc9c40daa34cba9ab"&gt;Commit.&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;[ExtractorProcess] Verify transaction was sucessfully created. &lt;a target="_blank" href="https://commits.kde.org/baloo/c6c7bc4fbd176d568d47995532148134da68554b"&gt;Commit.&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;Tell the compiler QFile::open(fd, ...) can not fail for STDIN. &lt;a target="_blank" href="https://commits.kde.org/baloo/49d6f420314780bdd32c742ea55d8d4d9dd57e46"&gt;Commit.&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;[Query] Use explicit percent-encoding for title and json data. &lt;a target="_blank" href="https://commits.kde.org/baloo/c44013d720e980b29b3fa0b9c9ea13a6a6e6d643"&gt;Commit.&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;[QuerySerializationTest] Extend test coverage for disallowed characters. &lt;a target="_blank" href="https://commits.kde.org/baloo/8845cdd76f846b9ccbf60aa0e71b8c4087330241"&gt;Commit.&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;[QuerySerializationTest] Cover fromSearchUrl/toSearchUrl methods. &lt;a target="_blank" href="https://commits.kde.org/baloo/e695f9a39ef6ce5138a90382c790d05f09f80cd5"&gt;Commit.&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;[QuerySerializationTest] Make JSON roundtrip test data driven. &lt;a target="_blank" href="https://commits.kde.org/baloo/7cd8c817ac18c7e2d877e007770022670a229c19"&gt;Commit.&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;/details&gt;
&lt;details open="true" id="Breeze Icons"&gt;
&lt;summary class="h4"&gt;&lt;a target="_blank" href="https://commits.kde.org/breeze-icons"&gt;Breeze Icons&lt;/a&gt;&lt;/summary&gt;&lt;ul&gt;
&lt;li&gt;Duplicate kdesrc-build icon as kde-builder icon. &lt;a target="_blank" href="https://commits.kde.org/breeze-icons/0455b67bf7838cc3fb13cc2fd755c2660386d7f1"&gt;Commit.&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;Remove duplicate/bogous style sheets. &lt;a target="_blank" href="https://commits.kde.org/breeze-icons/c625cec95034fce2519851ea3876443568a9db7b"&gt;Commit.&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;Remove unused path in im-invisible-user.svg that breaks webfont on MacOS. &lt;a target="_blank" href="https://commits.kde.org/breeze-icons/99030401c788507f1818b8d25f4beae6438f4c8a"&gt;Commit.&lt;/a&gt; See bug &lt;a target="_blank" href="https://bugs.kde.org/499597"&gt;#499597&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;Add data-question status icon similar to other data-* status icons. &lt;a target="_blank" href="https://commits.kde.org/breeze-icons/e6fecb0084412f3774bd111c457cb2a080cd0fbb"&gt;Commit.&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;Add nicer 16x16 variant of dialog-question. &lt;a target="_blank" href="https://commits.kde.org/breeze-icons/e91ac6297bb4b4f8f4bc487bea3eb32983a1283b"&gt;Commit.&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;Add keyframe-warn. &lt;a target="_blank" href="https://commits.kde.org/breeze-icons/a87027c1e2abe38814232039d24d6ab2bdf0aab1"&gt;Commit.&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;Resize kmouth, konversation, and kde-im-log-viewer to same height. &lt;a target="_blank" href="https://commits.kde.org/breeze-icons/35dd4a361943a06c5e93bf7eb1a3f9b33227d163"&gt;Commit.&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;Add icon for conic gradients. &lt;a target="_blank" href="https://commits.kde.org/breeze-icons/e8df9e8c28f57696487dfdb0771da228821440a8"&gt;Commit.&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;Add mask action icons. &lt;a target="_blank" href="https://commits.kde.org/breeze-icons/dab63625feccab197cab0aa1c26903702f51b342"&gt;Commit.&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;/details&gt;
&lt;details open="true" id="Extra CMake Modules"&gt;
&lt;summary class="h4"&gt;&lt;a target="_blank" href="https://commits.kde.org/extra-cmake-modules"&gt;Extra CMake Modules&lt;/a&gt;&lt;/summary&gt;&lt;ul&gt;
&lt;li&gt;KDECMakeSettings: Disable CMAKE_CXX_SCAN_FOR_MODULES. &lt;a target="_blank" href="https://commits.kde.org/extra-cmake-modules/e10d4a6fe97c7ea51d9ed48c2a62f4205eb4c1fa"&gt;Commit.&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;/details&gt;
&lt;details open="true" id="KArchive"&gt;
&lt;summary class="h4"&gt;&lt;a target="_blank" href="https://commits.kde.org/karchive"&gt;KArchive&lt;/a&gt;&lt;/summary&gt;&lt;ul&gt;
&lt;li&gt;Fix int overflow + QList assert on broken files. &lt;a target="_blank" href="https://commits.kde.org/karchive/15d0f9278b0add83a4a0b81e985fa3f4d8b58e45"&gt;Commit.&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;Generate a pkgconfig file. &lt;a target="_blank" href="https://commits.kde.org/karchive/b4433c93a16f52b6b6c9985b5b1c6839e79ebbfd"&gt;Commit.&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;/details&gt;
&lt;details open="true" id="KCalendarCore"&gt;
&lt;summary class="h4"&gt;&lt;a target="_blank" href="https://commits.kde.org/kcalendarcore"&gt;KCalendarCore&lt;/a&gt;&lt;/summary&gt;&lt;ul&gt;
&lt;li&gt;CI - add pre-commit support. &lt;a target="_blank" href="https://commits.kde.org/kcalendarcore/ca216d5f0ba6f8d91b613cf40d2b6c6073c52551"&gt;Commit.&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;Use markdownlint-cli2 to format markdown files. &lt;a target="_blank" href="https://commits.kde.org/kcalendarcore/3283afd2f4ede18e74b571aa428d174dd738b8f0"&gt;Commit.&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;Use gersemi to format CMake files. &lt;a target="_blank" href="https://commits.kde.org/kcalendarcore/9603fba9086e86fe4da67643319a53f873e01da1"&gt;Commit.&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;Src/filestorage.h - fix a misspelled word. &lt;a target="_blank" href="https://commits.kde.org/kcalendarcore/cfd4cfa0bbc800320f179df1b41fccb6ae431512"&gt;Commit.&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;Clang-format project. &lt;a target="_blank" href="https://commits.kde.org/kcalendarcore/7b509488956d844014ffebb09dc67b9987755419"&gt;Commit.&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;Clean whitespace issues. &lt;a target="_blank" href="https://commits.kde.org/kcalendarcore/6a77794b5df744b62dfd31382322620385f70cbe"&gt;Commit.&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;/details&gt;
&lt;details open="true" id="KCodecs"&gt;
&lt;summary class="h4"&gt;&lt;a target="_blank" href="https://commits.kde.org/kcodecs"&gt;KCodecs&lt;/a&gt;&lt;/summary&gt;&lt;ul&gt;
&lt;li&gt;We depend against qt 6.8 =&amp;gt; we can remove check here. &lt;a target="_blank" href="https://commits.kde.org/kcodecs/615c0d6a7425e2fadc8a819eb1a5077ddeabca1a"&gt;Commit.&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;Propagate C++20 requirement to consumers. &lt;a target="_blank" href="https://commits.kde.org/kcodecs/6a8cacede143eac4adb08938df3e7b41af605e6f"&gt;Commit.&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;[KEncodingProber] Remove unused/unreachable Reset() method. &lt;a target="_blank" href="https://commits.kde.org/kcodecs/9c5771326a58bf8ebf411a50d3acc94d06667648"&gt;Commit.&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;[KEncodingProber] Use in-class initialization for prober members. &lt;a target="_blank" href="https://commits.kde.org/kcodecs/41019af000f0cc542fe0f2cdc47181ad41f0ecc6"&gt;Commit.&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;[Codec] Default constructors/destructors, annotate as constexpr. &lt;a target="_blank" href="https://commits.kde.org/kcodecs/e5a6f2f7dd9e2a834bee8408f4b7c04420dcee83"&gt;Commit.&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;[Codec] Simplify codecForName lookup. &lt;a target="_blank" href="https://commits.kde.org/kcodecs/9ee5fb2f6a14ce44d6f3c522d45bf8a3d069c09e"&gt;Commit.&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;[Codec] Benchmark codecForName lookup. &lt;a target="_blank" href="https://commits.kde.org/kcodecs/f31a00dee17e428ba660ca375014fef1bf0efd7c"&gt;Commit.&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;[Codec] Move test class declaration to implementation file. &lt;a target="_blank" href="https://commits.kde.org/kcodecs/441f0cc46668f3fb5b9312ebaf78643175a290cc"&gt;Commit.&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;[Codec] Remove double quote for invalid codec warning. &lt;a target="_blank" href="https://commits.kde.org/kcodecs/123c9cd65b7cdb544e3b5549ad739dd33f954701"&gt;Commit.&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;[KCharsets] Simplify instance singleton. &lt;a target="_blank" href="https://commits.kde.org/kcodecs/aba1d7edddaac2429d28110ecf1fb02cfc818279"&gt;Commit.&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;[KCharsets] Reuse translated strings from encodingsByScript. &lt;a target="_blank" href="https://commits.kde.org/kcodecs/f4de617ce50ee1647063f4cd50791136e20f849c"&gt;Commit.&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;[KCharsets] Fix possible initialization race for encodingsByScript. &lt;a target="_blank" href="https://commits.kde.org/kcodecs/c1c63d6d51b60cf088cfd139774496357166fc15"&gt;Commit.&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;[KCharsets] Remove unused include. &lt;a target="_blank" href="https://commits.kde.org/kcodecs/4183c6d005ecb3cd2f8b0f73d5614a62054d2776"&gt;Commit.&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;[KCharsetsTest] Reduce call nesting to improve readability. &lt;a target="_blank" href="https://commits.kde.org/kcodecs/4d363ffdbee802f41b68957755286a1432b91f33"&gt;Commit.&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;/details&gt;
&lt;details open="true" id="KConfig"&gt;
&lt;summary class="h4"&gt;&lt;a target="_blank" href="https://commits.kde.org/kconfig"&gt;KConfig&lt;/a&gt;&lt;/summary&gt;&lt;ul&gt;
&lt;li&gt;Kreadconfig: Add flag to include globals. &lt;a target="_blank" href="https://commits.kde.org/kconfig/0f90cf5ca7999bf49812b217198ad44ca7232f46"&gt;Commit.&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;Kdesktopfile: tolerate nameless action for &lt;em&gt;SEPARATOR&lt;/em&gt;. &lt;a target="_blank" href="https://commits.kde.org/kconfig/ff314a773c65ea5495f6967b7b9cd78a77c52832"&gt;Commit.&lt;/a&gt; Fixes bug &lt;a target="_blank" href="https://bugs.kde.org/517770"&gt;#517770&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;Remove ifdef now that we depend on Qt &amp;gt;= 6.9.0. &lt;a target="_blank" href="https://commits.kde.org/kconfig/e5fc883361bba932b564a8f8beb4f43e72a37121"&gt;Commit.&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;QDoc fixes. &lt;a target="_blank" href="https://commits.kde.org/kconfig/50116c5d987ce968c4cb2958a457b3ae1e3eb221"&gt;Commit.&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;Kreadconfig: Add flag to dump all entries. &lt;a target="_blank" href="https://commits.kde.org/kconfig/d795ce74fa300e41778e898f4b4fdcd17bfcbf79"&gt;Commit.&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;Do not try to read registry entries for absolute config file names. &lt;a target="_blank" href="https://commits.kde.org/kconfig/0b07b67f753410dfedf74b19a6ecc14f587f9b5f"&gt;Commit.&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;Avoid creation of not already existing registry keys. &lt;a target="_blank" href="https://commits.kde.org/kconfig/6390ea9ac506b4d2012e00cf0879dc56ef53ccc7"&gt;Commit.&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;/details&gt;
&lt;details open="true" id="KCoreAddons"&gt;
&lt;summary class="h4"&gt;&lt;a target="_blank" href="https://commits.kde.org/kcoreaddons"&gt;KCoreAddons&lt;/a&gt;&lt;/summary&gt;&lt;ul&gt;
&lt;li&gt;Remove unused cmake variable. &lt;a target="_blank" href="https://commits.kde.org/kcoreaddons/83fe0683fb477ee7b7857f93b181716c8899010b"&gt;Commit.&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;/details&gt;
&lt;details open="true" id="KDocTools"&gt;
&lt;summary class="h4"&gt;&lt;a target="_blank" href="https://commits.kde.org/kdoctools"&gt;KDocTools&lt;/a&gt;&lt;/summary&gt;&lt;ul&gt;
&lt;li&gt;Dynamically retrieve the list of languages to install. &lt;a target="_blank" href="https://commits.kde.org/kdoctools/6af51912e9854150cb3b1c4b8b588cbf3db99f8d"&gt;Commit.&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;Install arabic files. &lt;a target="_blank" href="https://commits.kde.org/kdoctools/bdf4dcf3c8b4a9673808577d0922c2ca87a6f799"&gt;Commit.&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;/details&gt;
&lt;details open="true" id="KFileMetaData"&gt;
&lt;summary class="h4"&gt;&lt;a target="_blank" href="https://commits.kde.org/kfilemetadata"&gt;KFileMetaData&lt;/a&gt;&lt;/summary&gt;&lt;ul&gt;
&lt;li&gt;ExtractionPluginManager -&amp;gt; ExtractorCollection. &lt;a target="_blank" href="https://commits.kde.org/kfilemetadata/78c638545babc35fdafef81b312b6975d6e9ec87"&gt;Commit.&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;Ffmpeg: use qScopeGuard to release AVFormatContext on failure. &lt;a target="_blank" href="https://commits.kde.org/kfilemetadata/dc91deb6f70c602ac4c36bdf59346d9015b66728"&gt;Commit.&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;Extractors/exiv2: remove version check for BMFF_SUPPORT. &lt;a target="_blank" href="https://commits.kde.org/kfilemetadata/cf42bcdedb563e6ac52a67fd60bba64c49de5c96"&gt;Commit.&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;Ffmpegextractor: when color_space_name is &amp;quot;unkwown&amp;quot; don't set ColorSpace. &lt;a target="_blank" href="https://commits.kde.org/kfilemetadata/d8d8d917d54ecc8573233d6d04f3649c702e4372"&gt;Commit.&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;/details&gt;
&lt;details open="true" id="KGuiAddons"&gt;
&lt;summary class="h4"&gt;&lt;a target="_blank" href="https://commits.kde.org/kguiaddons"&gt;KGuiAddons&lt;/a&gt;&lt;/summary&gt;&lt;ul&gt;
&lt;li&gt;Waylandclipboard: Wait for up to 1s for the clipboard contents. &lt;a target="_blank" href="https://commits.kde.org/kguiaddons/5724d86b54bcbb0bbde70270a1f5080d70c8116b"&gt;Commit.&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;Waylandclipboard: Properly interrupt thread when client extension goes inactive. &lt;a target="_blank" href="https://commits.kde.org/kguiaddons/69c84408d2e3ef7a9819d3238ab7af84f9575220"&gt;Commit.&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;Remove ifdef now that we depend on Qt &amp;gt;= 6.9.0. &lt;a target="_blank" href="https://commits.kde.org/kguiaddons/315cfff23ac9b0983a469202324ecc4c631ee480"&gt;Commit.&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;Change include in ksysteminhibitor_dbus.cpp preventing building when using a QT version &amp;lt; 6.9. &lt;a target="_blank" href="https://commits.kde.org/kguiaddons/5c512b59693b29a464ff6db83cd5a8cc47477a14"&gt;Commit.&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;Systemclipboard: waylandApp ptr validation cleanup. &lt;a target="_blank" href="https://commits.kde.org/kguiaddons/148da3aa2e65ab623b19f5277331c1357043761c"&gt;Commit.&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;Systemclipboard/wlrwaylandclipboard: Fix WlrDataControlDevice::setPrimarySelection. &lt;a target="_blank" href="https://commits.kde.org/kguiaddons/7789521ed3135db615fcc34d177dd4496193c678"&gt;Commit.&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;/details&gt;
&lt;details open="true" id="KHolidays"&gt;
&lt;summary class="h4"&gt;&lt;a target="_blank" href="https://commits.kde.org/kholidays"&gt;KHolidays&lt;/a&gt;&lt;/summary&gt;&lt;ul&gt;
&lt;li&gt;Update holidays of 2026 for Taiwan. &lt;a target="_blank" href="https://commits.kde.org/kholidays/25b39c5ed8d98098a5f9ebb9958c1b08d518add3"&gt;Commit.&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;CI - add pre-commit support. &lt;a target="_blank" href="https://commits.kde.org/kholidays/3384a155aa85b17b2d1037c5a7ab42564058cc11"&gt;Commit.&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;Use markdownlint-cli2 to format markdown files. &lt;a target="_blank" href="https://commits.kde.org/kholidays/5e293f852e81aa6f83ed48f59fa0a22bed13893e"&gt;Commit.&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;Use gersemi to format CMake files. &lt;a target="_blank" href="https://commits.kde.org/kholidays/6806c0ad3927ad338499da5437c45a2d398da775"&gt;Commit.&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;.codespellrc - allow &amp;quot;lightening&amp;quot;. &lt;a target="_blank" href="https://commits.kde.org/kholidays/e01fc7129c95c09b2e96de7092e7cbd0b559a827"&gt;Commit.&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;Clang-format fixes. &lt;a target="_blank" href="https://commits.kde.org/kholidays/4d90ed281069a60cc13b3009b5a8ad98ea6f8df4"&gt;Commit.&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;Clean whitespace issues. &lt;a target="_blank" href="https://commits.kde.org/kholidays/186f59973c7e05ae88a1173e7a66eb1164c15fb3"&gt;Commit.&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;Edit portuguese holidays. &lt;a target="_blank" href="https://commits.kde.org/kholidays/1f03ce6bf189feb3a4c3c28ba29c54044f037d56"&gt;Commit.&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;/details&gt;
&lt;details open="true" id="KIconThemes"&gt;
&lt;summary class="h4"&gt;&lt;a target="_blank" href="https://commits.kde.org/kiconthemes"&gt;KIconThemes&lt;/a&gt;&lt;/summary&gt;&lt;ul&gt;
&lt;li&gt;Explain why SVG preference was reverted. &lt;a target="_blank" href="https://commits.kde.org/kiconthemes/495875e76cabf38e5da116953b075e7aab345626"&gt;Commit.&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;Don't try to create KIconTheme with empty theme name. &lt;a target="_blank" href="https://commits.kde.org/kiconthemes/9c0810e53a4d67731cc5adece75ae5536443e67b"&gt;Commit.&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;Revert &amp;quot;KIconTheme: Prefer SVG files over PNG files&amp;quot;. &lt;a target="_blank" href="https://commits.kde.org/kiconthemes/2dc30a2f27e2383994eb77e79b0c33f47ce4e0c7"&gt;Commit.&lt;/a&gt; Fixes bug &lt;a target="_blank" href="https://bugs.kde.org/516007"&gt;#516007&lt;/a&gt;. See bug &lt;a target="_blank" href="https://bugs.kde.org/502273"&gt;#502273&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;/details&gt;
&lt;details open="true" id="KImageformats"&gt;
&lt;summary class="h4"&gt;&lt;a target="_blank" href="https://commits.kde.org/kimageformats"&gt;KImageformats&lt;/a&gt;&lt;/summary&gt;&lt;ul&gt;
&lt;li&gt;TIM: PlayStation graphics read only support. &lt;a target="_blank" href="https://commits.kde.org/kimageformats/142ec14c81233187cc12565fe1daaa03cbf0a4ae"&gt;Commit.&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;Remove ifdef now that we depend on Qt &amp;gt;= 6.9.0. &lt;a target="_blank" href="https://commits.kde.org/kimageformats/38b8b703046d58d489b98c262459633bb0bc859f"&gt;Commit.&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;IFF: fix Integer-overflow in IDATChunk::strideSize. &lt;a target="_blank" href="https://commits.kde.org/kimageformats/7c86ccaefb2827230b7a31ac62444ebcb535d70c"&gt;Commit.&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;/details&gt;
&lt;details open="true" id="KIO"&gt;
&lt;summary class="h4"&gt;&lt;a target="_blank" href="https://commits.kde.org/kio"&gt;KIO&lt;/a&gt;&lt;/summary&gt;&lt;ul&gt;
&lt;li&gt;Kfileitem: isExecutable: rely on QFileinfo. &lt;a target="_blank" href="https://commits.kde.org/kio/186c2daa61896bf0145d27e023b35bed096ae6dc"&gt;Commit.&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;Revert &amp;quot;KFileItem: use permissions to determine isWritable and isReadable&amp;quot;. &lt;a target="_blank" href="https://commits.kde.org/kio/5c7b5e7ac1a24997cb5137765bc015b3a4128bae"&gt;Commit.&lt;/a&gt; Fixes bug &lt;a target="_blank" href="https://bugs.kde.org/504287"&gt;#504287&lt;/a&gt;. Fixes bug &lt;a target="_blank" href="https://bugs.kde.org/506472"&gt;#506472&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;KFileItem: Check desktop MIME type before isSlow. &lt;a target="_blank" href="https://commits.kde.org/kio/e3a9579ca31af78a9680adc07110497f20a8e075"&gt;Commit.&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;Widgets: Don't show an error when trying do paste while there is nothing to paste. &lt;a target="_blank" href="https://commits.kde.org/kio/4ccd88147fbb266c90a474bf219c4bfbbf239b2b"&gt;Commit.&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;Kio_ftp: Enable UTF-8 encoding negotiation after successful login. &lt;a target="_blank" href="https://commits.kde.org/kio/0f2530253adf065959afbaa174e4d3029ff67191"&gt;Commit.&lt;/a&gt; See bug &lt;a target="_blank" href="https://bugs.kde.org/269370"&gt;#269370&lt;/a&gt;. See bug &lt;a target="_blank" href="https://bugs.kde.org/165044"&gt;#165044&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;Autotests/openurljobtest: ensure to have deleteLater launched. &lt;a target="_blank" href="https://commits.kde.org/kio/4b79f4ade878435184a3b970f071e0886331d87f"&gt;Commit.&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;Filewidgets/kfileplacesview: clear job in destructor. &lt;a target="_blank" href="https://commits.kde.org/kio/674a502b72e3dd0b492db437505e981d3749049f"&gt;Commit.&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;Autotests: openurljobtest, prevent memleak in negative tests. &lt;a target="_blank" href="https://commits.kde.org/kio/6b112e74fd5b10982dbcd174afcc67f536aeeac0"&gt;Commit.&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;Kpasswdserver: prevent memleak of retry dialog. &lt;a target="_blank" href="https://commits.kde.org/kio/729acba1409ccbf75aee5d144e64b8ae929379ca"&gt;Commit.&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;Core/kcoredirlister: prevent mem-leak upon redirection. &lt;a target="_blank" href="https://commits.kde.org/kio/b4376a67d32f8d362bb2bf3c6e5d222a776ae507"&gt;Commit.&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;Filewidgets/knewfilemenu: prevent small leak. &lt;a target="_blank" href="https://commits.kde.org/kio/ddb8e616c57595c0d7c19b75e42119b3e58f7010"&gt;Commit.&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;Autotests/threadtest: prevent memleak in test. &lt;a target="_blank" href="https://commits.kde.org/kio/917169854129d847e47bdfb0c086554423bb6c4b"&gt;Commit.&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;KfilePlacesView: delete FileSystemFreeSpaceJob once it is finished. &lt;a target="_blank" href="https://commits.kde.org/kio/cb89b6f6ac82e06b7817aac86a21b88d098834d1"&gt;Commit.&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;Krecentdocumenttest: prevent a memleak. &lt;a target="_blank" href="https://commits.kde.org/kio/bd68846567b6684912a18f37bc36ed8737350abc"&gt;Commit.&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;DropJob: parent DndPopupMenuPlugin to the dropjob. &lt;a target="_blank" href="https://commits.kde.org/kio/34834830d5ed504450dcddb8f3585e86af95eb94"&gt;Commit.&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;Fix protocol in &amp;quot;Destination&amp;quot; header for WebDAV copy/move. &lt;a target="_blank" href="https://commits.kde.org/kio/a4e30ebca073339d496e8a4d924a347e30537b3c"&gt;Commit.&lt;/a&gt; Fixes bug &lt;a target="_blank" href="https://bugs.kde.org/487503"&gt;#487503&lt;/a&gt;. Fixes bug &lt;a target="_blank" href="https://bugs.kde.org/443386"&gt;#443386&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;Filepreviewjob: Track subjobs using QPointer. &lt;a target="_blank" href="https://commits.kde.org/kio/8b5b5ac8104754a627dca5caff166cd747a18870"&gt;Commit.&lt;/a&gt; Fixes bug &lt;a target="_blank" href="https://bugs.kde.org/517867"&gt;#517867&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;Filecopyjob: Pass source file size to put() workers via setSourceSize(). &lt;a target="_blank" href="https://commits.kde.org/kio/723c6921495b1c16d928d5100141dfc39526a4ba"&gt;Commit.&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;Tweak ifdef now that we depend on Qt &amp;gt;= 6.9.0. &lt;a target="_blank" href="https://commits.kde.org/kio/3b517c822dc88a51799ea33f071d6feed8629cad"&gt;Commit.&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;Core: listjob: Support selective StatDetails for directory listing. &lt;a target="_blank" href="https://commits.kde.org/kio/3d0e07a087a706b7ffa3fb19bd5f047cf7c64cb3"&gt;Commit.&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;Gui/filepreviewjob: return an error in case the sub-job failed. &lt;a target="_blank" href="https://commits.kde.org/kio/599015c06c3aecd15af27dd3bfd3a7e3fabeab75"&gt;Commit.&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;Gui/filepreviewjob: avoid a crash when temp is removed. &lt;a target="_blank" href="https://commits.kde.org/kio/82c1a1c34ac7b2c8bd21a1b12020c4d7686faf33"&gt;Commit.&lt;/a&gt; Fixes bug &lt;a target="_blank" href="https://bugs.kde.org/516575"&gt;#516575&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;File: In LSTAT also stat subvolid and mntid when requested. &lt;a target="_blank" href="https://commits.kde.org/kio/c698698b28837e578afcd24c711afc3218cc3922"&gt;Commit.&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;Kurlnavigator: Change fallback behaviour for user input url. &lt;a target="_blank" href="https://commits.kde.org/kio/b37126507491be7de55ef06fb6da9bdbbbe9a639"&gt;Commit.&lt;/a&gt; Fixes bug &lt;a target="_blank" href="https://bugs.kde.org/408315"&gt;#408315&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;Fix some cmake warnings. &lt;a target="_blank" href="https://commits.kde.org/kio/b312008450549147c34656c8b2fd1a4c95651e29"&gt;Commit.&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;Filepreviewjob: allow to log the file being previewed. &lt;a target="_blank" href="https://commits.kde.org/kio/5012f5ad42ffca85637cce2514405c4a4c638b62"&gt;Commit.&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;Forwardingworkerbase: Forward stat side and details. &lt;a target="_blank" href="https://commits.kde.org/kio/9f3784da4a202a0e60774d08a9e47e8c819c4d5d"&gt;Commit.&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;Fix build on macOS relating to tv_nsec. &lt;a target="_blank" href="https://commits.kde.org/kio/b526db12e6ddb746910d6147cf597515015ff42c"&gt;Commit.&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;Core/udsentry: don't reduce nanosecond precision to millisecond. &lt;a target="_blank" href="https://commits.kde.org/kio/d59a5dcf5663e61ac674479c2a454301f3145137"&gt;Commit.&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;KFileItemDelegate: Use margins directly from style. &lt;a target="_blank" href="https://commits.kde.org/kio/ebd5f9836a8f644068325bf1cea3a96a6bb54624"&gt;Commit.&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;/details&gt;
&lt;details open="true" id="Kirigami"&gt;
&lt;summary class="h4"&gt;&lt;a target="_blank" href="https://commits.kde.org/kirigami"&gt;Kirigami&lt;/a&gt;&lt;/summary&gt;&lt;ul&gt;
&lt;li&gt;Disable Alpine CI. &lt;a target="_blank" href="https://commits.kde.org/kirigami/a18dbe4208941b7211f233747903267e2e2c2e1d"&gt;Commit.&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;Disable qmllint for some modules. &lt;a target="_blank" href="https://commits.kde.org/kirigami/0228f311838e1159e8afe731cb105fe666b77952"&gt;Commit.&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;PageRow: don't leak the dialog layer window. &lt;a target="_blank" href="https://commits.kde.org/kirigami/38dc306a61c89ae694220519a22d9d1d6e4f0104"&gt;Commit.&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;Fix AboutPage license sheet. &lt;a target="_blank" href="https://commits.kde.org/kirigami/00e26ee01cfa8061ef73e1b21b4b3014a1de2fd5"&gt;Commit.&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;Remove duplicate FeatureSummary include. &lt;a target="_blank" href="https://commits.kde.org/kirigami/fa3a3911a80c16f681539c1d7d1761490648fbf9"&gt;Commit.&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;Don't include quiet packages in feature_summary. &lt;a target="_blank" href="https://commits.kde.org/kirigami/0d45a05ccafb164154257845a43777d945dd47f3"&gt;Commit.&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;TitleSubtitle: Add tweakable textFormat property. &lt;a target="_blank" href="https://commits.kde.org/kirigami/b2209d7bc1c23a4f5adf6e1d4e709c4d97dff7fa"&gt;Commit.&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;Platform: Prefer filesystem over qrc when determining install root. &lt;a target="_blank" href="https://commits.kde.org/kirigami/7c285a733c1624186fd2886f23239c045a0a3703"&gt;Commit.&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;LinkButton: Create template, move items from control to template. &lt;a target="_blank" href="https://commits.kde.org/kirigami/b4cd4993b8e78000c009c9dd2ee447f8a7e2bbbb"&gt;Commit.&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;/details&gt;
&lt;details open="true" id="KItemModels"&gt;
&lt;summary class="h4"&gt;&lt;a target="_blank" href="https://commits.kde.org/kitemmodels"&gt;KItemModels&lt;/a&gt;&lt;/summary&gt;&lt;ul&gt;
&lt;li&gt;Remove unused cmake variabls. &lt;a target="_blank" href="https://commits.kde.org/kitemmodels/b320ba4a206f1c588ada6c00104baa5e2d7d1643"&gt;Commit.&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;/details&gt;
&lt;details open="true" id="KNewStuff"&gt;
&lt;summary class="h4"&gt;&lt;a target="_blank" href="https://commits.kde.org/knewstuff"&gt;KNewStuff&lt;/a&gt;&lt;/summary&gt;&lt;ul&gt;
&lt;li&gt;Use KF6Kirigami, fix cmake variable use KF_DEP_VERSION. &lt;a target="_blank" href="https://commits.kde.org/knewstuff/45eeb0aedd65242b547a6d8a3f4faefc4e2faf27"&gt;Commit.&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;/details&gt;
&lt;details open="true" id="KRunner"&gt;
&lt;summary class="h4"&gt;&lt;a target="_blank" href="https://commits.kde.org/krunner"&gt;KRunner&lt;/a&gt;&lt;/summary&gt;&lt;ul&gt;
&lt;li&gt;Fix cmake warnings (use correct Qt version). &lt;a target="_blank" href="https://commits.kde.org/krunner/eaf2dac09b2e5a37db516502c1d4bdb98d551585"&gt;Commit.&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;/details&gt;
&lt;details open="true" id="KService"&gt;
&lt;summary class="h4"&gt;&lt;a target="_blank" href="https://commits.kde.org/kservice"&gt;KService&lt;/a&gt;&lt;/summary&gt;&lt;ul&gt;
&lt;li&gt;Bump sycoca version after changing the hash. &lt;a target="_blank" href="https://commits.kde.org/kservice/8f056cb5fcb6fc8fbf9fd27dc752fdbba7651169"&gt;Commit.&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;Extract to variable. &lt;a target="_blank" href="https://commits.kde.org/kservice/29999ab845002098eb251c0758a4862515c480c0"&gt;Commit.&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;Fix a typo in the bitmask used in the hash. &lt;a target="_blank" href="https://commits.kde.org/kservice/7e0182061b922ce20b0d9997b7fe26f4ae4f24c5"&gt;Commit.&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;/details&gt;
&lt;details open="true" id="KStatusNotifieritem"&gt;
&lt;summary class="h4"&gt;&lt;a target="_blank" href="https://commits.kde.org/kstatusnotifieritem"&gt;KStatusNotifieritem&lt;/a&gt;&lt;/summary&gt;&lt;ul&gt;
&lt;li&gt;Don't include quiet packages in feature_summary. &lt;a target="_blank" href="https://commits.kde.org/kstatusnotifieritem/cd5b9937cc4c27a4c450461e3d3adc602fe7f57a"&gt;Commit.&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;/details&gt;
&lt;details open="true" id="KSVG"&gt;
&lt;summary class="h4"&gt;&lt;a target="_blank" href="https://commits.kde.org/ksvg"&gt;KSVG&lt;/a&gt;&lt;/summary&gt;&lt;ul&gt;
&lt;li&gt;Add basic test for Svg. &lt;a target="_blank" href="https://commits.kde.org/ksvg/552137ab1eee2f0920815afbb31b6ac05961d19f"&gt;Commit.&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;/details&gt;
&lt;details open="true" id="KTextEditor"&gt;
&lt;summary class="h4"&gt;&lt;a target="_blank" href="https://commits.kde.org/ktexteditor"&gt;KTextEditor&lt;/a&gt;&lt;/summary&gt;&lt;ul&gt;
&lt;li&gt;Don't do reverse encoding if the target is the null char. &lt;a target="_blank" href="https://commits.kde.org/ktexteditor/3ae7657a298e304d70b2f5941e4eeb26bad83d2b"&gt;Commit.&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;KTextEditor::DocumentPrivate constructor does the register. &lt;a target="_blank" href="https://commits.kde.org/ktexteditor/bc72e1502dbad534b9f67fdc26501c1ad8d08066"&gt;Commit.&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;Katedocument: Use first line of text as document title. &lt;a target="_blank" href="https://commits.kde.org/ktexteditor/a981fa714c8c7b323150906104c8f71051ff6064"&gt;Commit.&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;Katedocument: Add relevant MIME types to Save dialog. &lt;a target="_blank" href="https://commits.kde.org/ktexteditor/c72c65c3b994a53ce3aa22dd6192b265401aa2dc"&gt;Commit.&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;Remove cmake warning. &lt;a target="_blank" href="https://commits.kde.org/ktexteditor/a02b404eb0874e969f3c918e98113e324ae0c9df"&gt;Commit.&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;Update MiniMap Area. &lt;a target="_blank" href="https://commits.kde.org/ktexteditor/319bde40df03f32510fb4f855e2cd25ac9774eda"&gt;Commit.&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;/details&gt;
&lt;details open="true" id="KUnitConversion"&gt;
&lt;summary class="h4"&gt;&lt;a target="_blank" href="https://commits.kde.org/kunitconversion"&gt;KUnitConversion&lt;/a&gt;&lt;/summary&gt;&lt;ul&gt;
&lt;li&gt;Add missing since documentation to Momme. &lt;a target="_blank" href="https://commits.kde.org/kunitconversion/a54c7953971885d881ca77b04d791c554fb7c2ef"&gt;Commit.&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;Add conversions to/from momme for silk fabric weight. &lt;a target="_blank" href="https://commits.kde.org/kunitconversion/15f4f022d42f3e640867d41a33c7c78734335125"&gt;Commit.&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;/details&gt;
&lt;details open="true" id="KUserFeedback"&gt;
&lt;summary class="h4"&gt;&lt;a target="_blank" href="https://commits.kde.org/kuserfeedback"&gt;KUserFeedback&lt;/a&gt;&lt;/summary&gt;&lt;ul&gt;
&lt;li&gt;We depend against qt6. &lt;a target="_blank" href="https://commits.kde.org/kuserfeedback/c5c91c7d06fbb3f738fe71cafbbadbaa4a62dad6"&gt;Commit.&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;Fix some cmake warnings. &lt;a target="_blank" href="https://commits.kde.org/kuserfeedback/638275a259595acb6c5060efc92802600094a0d6"&gt;Commit.&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;/details&gt;
&lt;details open="true" id="KWallet"&gt;
&lt;summary class="h4"&gt;&lt;a target="_blank" href="https://commits.kde.org/kwallet"&gt;KWallet&lt;/a&gt;&lt;/summary&gt;&lt;ul&gt;
&lt;li&gt;Fix find_package calls when not building kwalletd and ksecretd. &lt;a target="_blank" href="https://commits.kde.org/kwallet/4123ed99b4a0451a6a0149bdb7e376ad73957a42"&gt;Commit.&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;Hardcode one short DH key instead of brute-forcing one. &lt;a target="_blank" href="https://commits.kde.org/kwallet/8bfdab0783b1025de3830c5cd0feebf9c57ee429"&gt;Commit.&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;Ksecretd: fix intermittent Secret Service session key mismatches with libsecret. &lt;a target="_blank" href="https://commits.kde.org/kwallet/307db62637ac2ca78ff670d746433be9381a923b"&gt;Commit.&lt;/a&gt; Fixes bug &lt;a target="_blank" href="https://bugs.kde.org/514194"&gt;#514194&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;/details&gt;
&lt;details open="true" id="KWidgetsAddons"&gt;
&lt;summary class="h4"&gt;&lt;a target="_blank" href="https://commits.kde.org/kwidgetsaddons"&gt;KWidgetsAddons&lt;/a&gt;&lt;/summary&gt;&lt;ul&gt;
&lt;li&gt;KMessageBox: Set very long lines to wrap, even on very wide screens. &lt;a target="_blank" href="https://commits.kde.org/kwidgetsaddons/332678d8a4f635d6938eb3e9ec03d845aa89697a"&gt;Commit.&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;KAccelatorManager: Avoid unnecessary allocations. &lt;a target="_blank" href="https://commits.kde.org/kwidgetsaddons/4da51204c73e096702cf252fcc2e353ee80efb55"&gt;Commit.&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;Add test for resizing dialogs with squeezed messages. &lt;a target="_blank" href="https://commits.kde.org/kwidgetsaddons/18374277e388ac4f76c4dcba78e4d14e05b46d10"&gt;Commit.&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;Re-enable logic to allow resizing of some KMessageBox dialogs. &lt;a target="_blank" href="https://commits.kde.org/kwidgetsaddons/31abc8e4238dc4417b6ce000ba1f97a923ea25e9"&gt;Commit.&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;/details&gt;
&lt;details open="true" id="KWindowSystem"&gt;
&lt;summary class="h4"&gt;&lt;a target="_blank" href="https://commits.kde.org/kwindowsystem"&gt;KWindowSystem&lt;/a&gt;&lt;/summary&gt;&lt;ul&gt;
&lt;li&gt;Kxcbevent_p.h: FWD KXcbEvent as class instead of struct. &lt;a target="_blank" href="https://commits.kde.org/kwindowsystem/1a6cb51cee32538624e6f76c01d8ba55d30c7f3b"&gt;Commit.&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;Add missing Q_EMIT to signal call. &lt;a target="_blank" href="https://commits.kde.org/kwindowsystem/a99f40e9c77245c3647753f7dbb0e8c71028da70"&gt;Commit.&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;Platforms/wayland: Fix a crash in WindowEffects::installBlur(). &lt;a target="_blank" href="https://commits.kde.org/kwindowsystem/b7bfe25a9954435b4cb18350784c6efd231cf629"&gt;Commit.&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;/details&gt;
&lt;details open="true" id="KXMLGUI"&gt;
&lt;summary class="h4"&gt;&lt;a target="_blank" href="https://commits.kde.org/kxmlgui"&gt;KXMLGUI&lt;/a&gt;&lt;/summary&gt;&lt;ul&gt;
&lt;li&gt;KKeySequenceWidget: Add text to clear button. &lt;a target="_blank" href="https://commits.kde.org/kxmlgui/f006ebed8a159e51925c83675f1ee11d9dd996f7"&gt;Commit.&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;/details&gt;
&lt;details open="true" id="Modem Manager Qt"&gt;
&lt;summary class="h4"&gt;&lt;a target="_blank" href="https://commits.kde.org/modemmanager-qt"&gt;Modem Manager Qt&lt;/a&gt;&lt;/summary&gt;&lt;ul&gt;
&lt;li&gt;Fix version guards. &lt;a target="_blank" href="https://commits.kde.org/modemmanager-qt/cc0c310f809a405ec90c6796bc82684da23cffe4"&gt;Commit.&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;/details&gt;
&lt;details open="true" id="Network Manager Qt"&gt;
&lt;summary class="h4"&gt;&lt;a target="_blank" href="https://commits.kde.org/networkmanager-qt"&gt;Network Manager Qt&lt;/a&gt;&lt;/summary&gt;&lt;ul&gt;
&lt;li&gt;Fix cmake warnings. &lt;a target="_blank" href="https://commits.kde.org/networkmanager-qt/8e8c89c99b3f365042065048889edf4146972435"&gt;Commit.&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;/details&gt;
&lt;details open="true" id="QQC2 Desktop Style"&gt;
&lt;summary class="h4"&gt;&lt;a target="_blank" href="https://commits.kde.org/qqc2-desktop-style"&gt;QQC2 Desktop Style&lt;/a&gt;&lt;/summary&gt;&lt;ul&gt;
&lt;li&gt;SpinBox: Use displayText for display text. &lt;a target="_blank" href="https://commits.kde.org/qqc2-desktop-style/120035f3e93b82e3aea690041a2467e03c2f8056"&gt;Commit.&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;Popup: remove default contentItem. &lt;a target="_blank" href="https://commits.kde.org/qqc2-desktop-style/e3eae33ece17df6042482be2b65e510a07a12116"&gt;Commit.&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;Popup: don't clip by default. &lt;a target="_blank" href="https://commits.kde.org/qqc2-desktop-style/90c2ecc0165ca9abc1ff47edb387dcbabae06721"&gt;Commit.&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;/details&gt;
&lt;details open="true" id="Solid"&gt;
&lt;summary class="h4"&gt;&lt;a target="_blank" href="https://commits.kde.org/solid"&gt;Solid&lt;/a&gt;&lt;/summary&gt;&lt;ul&gt;
&lt;li&gt;Fstab: Use qCCritical instead of qCritical. &lt;a target="_blank" href="https://commits.kde.org/solid/237775e1fa904e72989408e79c16f84034d20ded"&gt;Commit.&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;/details&gt;
&lt;details open="true" id="Sonnet"&gt;
&lt;summary class="h4"&gt;&lt;a target="_blank" href="https://commits.kde.org/sonnet"&gt;Sonnet&lt;/a&gt;&lt;/summary&gt;&lt;ul&gt;
&lt;li&gt;Remove seemingly useless text position check. &lt;a target="_blank" href="https://commits.kde.org/sonnet/f20cdb9485ae67293029506fb564038ff113bd8d"&gt;Commit.&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;/details&gt;
&lt;details open="true" id="Syntax Highlighting"&gt;
&lt;summary class="h4"&gt;&lt;a target="_blank" href="https://commits.kde.org/syntax-highlighting"&gt;Syntax Highlighting&lt;/a&gt;&lt;/summary&gt;&lt;ul&gt;
&lt;li&gt;Add highlighting for ISO 10303-21 STEP files. &lt;a target="_blank" href="https://commits.kde.org/syntax-highlighting/e950b3d917e937d55d162bc4eaaea079f8d2d185"&gt;Commit.&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;Cmake.xml: update syntax for CMake 4.3. &lt;a target="_blank" href="https://commits.kde.org/syntax-highlighting/d1c7a2ae89b9a76a1fe9ac207550f8284b322d9e"&gt;Commit.&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;Adapt XSD and code to docs. &lt;a target="_blank" href="https://commits.kde.org/syntax-highlighting/75b3dd8ab13ebab494eb769d749db5a855a77503"&gt;Commit.&lt;/a&gt; Fixes bug &lt;a target="_blank" href="https://bugs.kde.org/517428"&gt;#517428&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;Fix reading of spellchecking element to match XSD. &lt;a target="_blank" href="https://commits.kde.org/syntax-highlighting/b88ec9274b59b624544ca18118e901ce1fc4c977"&gt;Commit.&lt;/a&gt; Fixes bug &lt;a target="_blank" href="https://bugs.kde.org/517428"&gt;#517428&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;Add license. &lt;a target="_blank" href="https://commits.kde.org/syntax-highlighting/2a4eba805b99f9524a5bbb94da524e710213f312"&gt;Commit.&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;Add PIO Assembler syntax highlighting. &lt;a target="_blank" href="https://commits.kde.org/syntax-highlighting/84e1a97246ec46fc65d66f7f355fba894968dd23"&gt;Commit.&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;Add autotest reference file. &lt;a target="_blank" href="https://commits.kde.org/syntax-highlighting/a8f706fa82027c3232eab8425ffefd5beca349a1"&gt;Commit.&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;Add syntax file and tests for SAS. &lt;a target="_blank" href="https://commits.kde.org/syntax-highlighting/e485d0b267199dbd9c8573366386acf170073725"&gt;Commit.&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;Systemd unit: update to systemd v260. &lt;a target="_blank" href="https://commits.kde.org/syntax-highlighting/03983ea414591708ff791416da8807d372e85914"&gt;Commit.&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;/details&gt;</description><author>KDE Community</author></item><item><title>Kubuntu 26.04 weekly update</title><link>https://scarlettgatelymoore.dev/blog/kubuntu-26-04-weekly-update/</link><pubDate>Fri, 10 Apr 2026 00:00:00 +0000</pubDate><guid isPermaLink="true">https://scarlettgatelymoore.dev/blog/kubuntu-26-04-weekly-update/</guid><description>Final stretch toward the April 23rd release — bug fixes, thanks to contributors, and a call for testers.</description><author>Scarlett Gately Moore</author></item><item><title>Season Of KDE 2026 Conclusion</title><link>https://mentorship.kde.org/blog/2026-04-10-sok-conclusion/</link><pubDate>Fri, 10 Apr 2026 00:00:00 +0000</pubDate><guid isPermaLink="true">https://mentorship.kde.org/blog/2026-04-10-sok-conclusion/</guid><description>&lt;h2 id="introduction"&gt;Introduction&lt;/h2&gt;
&lt;p&gt;Another year, another successful Season Of KDE for 20 contributors!
This article has been co-written with the input from all contributors.&lt;/p&gt;
&lt;h1 id="lokalize"&gt;&lt;a target="_blank" href="https://apps.kde.org/lokalize/"&gt;Lokalize&lt;/a&gt;&lt;/h1&gt;
&lt;p&gt;During Season of KDE 2026, &lt;a target="_blank" href="https://community.kde.org/SoK/2026/StatusReport/Tanish_Kumar"&gt;Tanish Kumar&lt;/a&gt; worked on cleaning up the UI in Lokalize, KDE’s translation tool. The main task was fixing an annoying bug where the menu bar kept jumping around whenever you switched tabs, which was solved by giving the menus a stable “skeleton” in the KXMLGUI .rc files. Along the way, a bunch of “ghost actions” were discovered - menu entries that existed only in XML - and actually implemented the missing ones like Cut, Copy, Paste, Alternate Translation, Save All, Revert All, and Close All. He also built a Bookmark Manager dialog so translators can see all their bookmarks in one place.&lt;/p&gt;
&lt;p&gt;&lt;figure&gt;
&lt;img class="img-fluid" alt="Lokalize menu bar is stable now, no more menus jumping when changing tabs" src="https://mentorship.kde.org/blog/2026-04-10-sok-conclusion/lokalize_menubar.gif"
style="max-width: 100%; height: auto"
/&gt;
&lt;/figure&gt;
&lt;/p&gt;
&lt;p&gt;&lt;a target="_blank" href="https://community.kde.org/SoK/2026/StatusReport/Navya_Sai_Sadu"&gt;Navya Sai Sadu&lt;/a&gt; and &lt;a target="_blank" href="https://community.kde.org/SoK/2026/StatusReport/Kumud"&gt;Kumud Sagar&lt;/a&gt; fixed navigation inconsistencies in the Editor Tab where shortcuts like “Approve and Go Next” failed to respect active filters and custom ordering in the Translation Units view. They ensured consistent behavior across all related shortcuts, including Next Ready, Next Non-Empty, and Next Bookmark.
They unified the traversal logic so navigation always follows the filtered and ordered entries and users of Lokalize can now navigate through Translation Units using the keyboard shortcuts or the options in Go menu properly..&lt;/p&gt;
&lt;p&gt;&lt;figure&gt;
&lt;img class="img-fluid" alt="Lokalize translation units view improvements" src="https://mentorship.kde.org/blog/2026-04-10-sok-conclusion/lokalize_fixed_inconsistencies.png"
style="max-width: 100%; height: auto"
/&gt;
&lt;/figure&gt;
&lt;/p&gt;
&lt;p&gt;Additionally, Kumud identified Lokalize’s on-disk file tracking mechanism and began improving its handling of external file updates.&lt;/p&gt;
&lt;p&gt;&lt;figure&gt;
&lt;img class="img-fluid" alt="Pop up when opened file in Lokalize is modified by another program" src="https://mentorship.kde.org/blog/2026-04-10-sok-conclusion/on_disk_changes_tracking.png"
style="max-width: 100%; height: auto"
/&gt;
&lt;/figure&gt;
&lt;/p&gt;
&lt;p&gt;&lt;a target="_blank" href="https://community.kde.org/SoK/2026/StatusReport/Jaimukund_Bhan"&gt;Jaimukund Bhan&lt;/a&gt; fixed foundational issues with the Glossary file, ensuring it could be properly loaded, saved, and autosaved, and cleaned up the codebase by removing an obsolete Restore function that no longer made sense once autosaving was in place. Several UI bugs were resolved, including the editor failing to clear when all terms were deleted and incorrect pre-selection behavior when the app started on the Glossary tab. In the second half, Jaimukund improved the manual term addition workflow by replacing silent blank entry creation with a proper dialog prompt, preventing accidental accumulation of empty entries. He also fixed a broken keyboard shortcut for switching to the previously active tab by replacing an index-based tracking variable with a widget pointer, which remains valid even as tab positions change.&lt;/p&gt;
&lt;p&gt;&lt;figure&gt;
&lt;img class="img-fluid" alt="Window to add a new word in glossary" src="https://mentorship.kde.org/blog/2026-04-10-sok-conclusion/manual_entry_glossary.png"
style="max-width: 100%; height: auto"
/&gt;
&lt;/figure&gt;
&lt;/p&gt;
&lt;p&gt;&lt;a target="_blank" href="https://community.kde.org/SoK/2026/StatusReport/Aditya_Sarna"&gt;Aditya Sarna&lt;/a&gt; made a full Figma redesign for the Glossary tab, which was referenced in several places to implement comprehensive UI and UX improvements. The work involved close collaboration with translators to understand user pain points and iterating on designs based on feedback from the design group. It included replacing button text with icons and adding tooltips to the Add and Delete buttons to clarify their purpose. This was followed by designing a new delete functionality, which introduced a cross button for each entry to make deletion more intuitive. Several additional UI changes were implemented, including shifting elements and improving the overall structure and layout of the Glossary tab. Furthermore, the workflow for adding new terms was refined by moving note text into the dialogue box and enhancing its layout, resulting in a cleaner, more intuitive and user-friendly interface.&lt;/p&gt;
&lt;p&gt;&lt;figure&gt;
&lt;img class="img-fluid" alt="Figma redesign for Glossary tab" src="https://mentorship.kde.org/blog/2026-04-10-sok-conclusion/lokalize_figma.png"
style="max-width: 100%; height: auto"
/&gt;
&lt;/figure&gt;
&lt;/p&gt;
&lt;p&gt;&lt;a target="_blank" href="https://community.kde.org/SoK/2026/StatusReport/Varun_Sajith_Dass"&gt;Varun Sajith Dass&lt;/a&gt; worked on improving the proofing capabilities of Lokalize and implemented a reactive character consistency check that alerts translators in real-time when special characters are mismatched between the source and target strings. This involved debugging Qt UI signals, resolving macOS build issues with KIO workers, and creating a persistent status bar warning system to enhance the overall translation workflow.&lt;/p&gt;
&lt;p&gt;&lt;figure&gt;
&lt;img class="img-fluid" alt="Testing the reactive consistency checker in Lokalize. In the highlighted translation unit (Row 11), a special character present in the source string (the colon in 'Origin: %1') is intentionally omitted from the active target translation ('Herkunft %1') to evaluate the mismatch detection logic" src="https://mentorship.kde.org/blog/2026-04-10-sok-conclusion/lokalize_checker.png"
style="max-width: 100%; height: auto"
/&gt;
&lt;/figure&gt;
&lt;/p&gt;
&lt;p&gt;&lt;a target="_blank" href="https://community.kde.org/SoK/2026/StatusReport/Vishesh_Srivastava"&gt;Vishesh Srivastava&lt;/a&gt; worked on adding Appium-based UI testing to KDE’s Lokalize. Vishesh started with a small bug fix and unit test to familiarize with the codebase and then built a complete Appium test from scratch, including basic tests and a full end-to-end workflow. Another thing done was adding accessibility ids in the UI so Appium could interact with the editor. The tests were integrated into the CMake system, ensured they ran independently of the user, and can run with kde-builder tests with a flag. By the end, Vishesh had developed a functional UI testing framework for Lokalize, along with documentation to help future contributors.&lt;/p&gt;
&lt;p&gt;&lt;figure&gt;
&lt;img class="img-fluid" alt="Workflow test running using appium in Lokalize" src="https://mentorship.kde.org/blog/2026-04-10-sok-conclusion/lokalize_appium.png"
style="max-width: 100%; height: auto"
/&gt;
&lt;/figure&gt;
&lt;/p&gt;
&lt;h1 id="kde-mentorship-website"&gt;&lt;a target="_blank" href="https://invent.kde.org/websites/mentorship-kde-org/"&gt;KDE mentorship website&lt;/a&gt;&lt;/h1&gt;
&lt;p&gt;&lt;a target="_blank" href="https://community.kde.org/SoK/2026/StatusReport/Advaith_Sathish_Kumar"&gt;Advaith Sathish Kumar&lt;/a&gt; project was transforming &lt;a target="_blank" href="https://mentorship.kde.org"&gt;mentorship.kde.org&lt;/a&gt; into a proper onboarding system for new KDE contributors. On the homepage, the hero section was redesigned, placeholder routing with experience based navigation was replaced, social media links were added, and the news cards to include author, date, and tags were also redesigned. For the /mentees page, I added past mentee details, implemented pagination, and added client-side filtering by year, program, and technology.&lt;/p&gt;
&lt;p&gt;&lt;figure&gt;
&lt;img class="img-fluid" alt="Addition of the previous mentees details" src="https://mentorship.kde.org/blog/2026-04-10-sok-conclusion/mentorship_mentees.png"
style="max-width: 100%; height: auto"
/&gt;
&lt;/figure&gt;
&lt;/p&gt;
&lt;p&gt;&lt;a target="_blank" href="https://community.kde.org/SoK/2026/StatusReport/Aryan_Rai"&gt;Aryan&lt;/a&gt;'s project was to make mentorship.kde.org better so that new contributors who want to work with the KDE ecosystem have a better onboarding experience. As part of this effort, a new &amp;quot;/programs&amp;quot; page was added. It gives a structured overview of the main KDE mentorship programs and links to help newcomers find their way around the opportunities more easily.
He also changed the card template to better organize the repository, making it more structured, easier to maintain. Aryan also filled the /resources page with more useful resources for new contributors.&lt;/p&gt;
&lt;p&gt;&lt;figure&gt;
&lt;img class="img-fluid" alt="Addition of the programs page to mentorship website" src="https://mentorship.kde.org/blog/2026-04-10-sok-conclusion/mentorship_programs.png"
style="max-width: 100%; height: auto"
/&gt;
&lt;/figure&gt;
&lt;/p&gt;
&lt;h1 id="documentation-website"&gt;&lt;a target="_blank" href="https://docs.kde.org/"&gt;Documentation website&lt;/a&gt;&lt;/h1&gt;
&lt;p&gt;&lt;a target="_blank" href="https://community.kde.org/SoK/2026/StatusReport/Mohit_Mishra"&gt;Mohit Mishra&lt;/a&gt; worked on decoupling the bundled &lt;code&gt;dblatex&lt;/code&gt; fork from the &lt;code&gt;docs-kde-org&lt;/code&gt; repository and fixing PDF generation for Chinese, Japanese and Korean (CJK) languages for KDE documentation. This involved switching the TeX engine to XeTeX from pdfTeX and then re-integrating the KDE styles. The outputs are now nearly identical, with CJK languages rendering correctly as well. There is still work in process to ensure there are no regressions and we can officially switch to this generation.&lt;/p&gt;
&lt;p&gt;&lt;figure&gt;
&lt;img class="img-fluid" alt="CJK pdf rendered with XeTex" src="https://mentorship.kde.org/blog/2026-04-10-sok-conclusion/cjk.png"
style="max-width: 100%; height: auto"
/&gt;
&lt;/figure&gt;
&lt;/p&gt;
&lt;h1 id="scripty"&gt;&lt;a target="_blank" href="https://invent.kde.org/sysadmin/l10n-scripty/"&gt;Scripty&lt;/a&gt;&lt;/h1&gt;
&lt;p&gt;&lt;a target="_blank" href="https://community.kde.org/SoK/2026/StatusReport/Aviral_Singh"&gt;Aviral Singh&lt;/a&gt; and &lt;a target="_blank" href="https://community.kde.org/SoK/2026/StatusReport/Keshav_Nanda"&gt;Keshav Nanda&lt;/a&gt; worked on fixing KDE's translation tools so translators can easily locate where text belongs in the code. Keshav corrected the underlying logic to make sure these paths are always accurate, and Aviral built an automated testing system to validate the fix across KDE projects.&lt;/p&gt;
&lt;h1 id="marknote"&gt;&lt;a target="_blank" href="https://apps.kde.org/marknote/"&gt;Marknote&lt;/a&gt;&lt;/h1&gt;
&lt;p&gt;&lt;a target="_blank" href="https://community.kde.org/SoK/2026/StatusReport/Siddharth_Chopra"&gt;Siddharth Chopra&lt;/a&gt; worked on Marknote to add source mode for notes. The Source Mode essentially allows users to bypass the rich-text WYSIWYG interface and directly edit the raw markdown. While working on this feature, Siddharth also made a major refactoring of the codebase (on both the QML and C++ sides). Spell checking using Sonnet was also added, among other small fixes and improvements.&lt;/p&gt;
&lt;video class="img-fluid" controls&gt;
&lt;source src="marknote.webm" type="video/webm"&gt;
&lt;/video&gt;
&lt;h1 id="kde-eco"&gt;&lt;a target="_blank" href="https://eco.kde.org/"&gt;KDE Eco&lt;/a&gt;&lt;/h1&gt;
&lt;p&gt;&lt;a target="_blank" href="https://community.kde.org/SoK/2026/StatusReport/Hrisikesh_Gohain"&gt;Hrishikesh Gohain&lt;/a&gt; worked on setting up KEcoLab's measurement environment with Wayland on Fedora 43 KDE Plasma Desktop. He ported the Okular measurement scripts from the X11-based xdotool to ydotool and kdotool, which work on both X11 and Wayland. His contributions can be found in this &lt;a target="_blank" href="https://invent.kde.org/sdk/kecolab/-/merge_requests/139"&gt;merge request&lt;/a&gt;. The original project plan had included measuring the KDE Plasma desktop environment itself. However, porting the Okular scripts to Wayland in the new lab setup turned out to be more complex than expected. Moreover, measuring a desktop environment may need some infrastructure changes to the KEcoLab setup. Hrishikesh is currently working towards it and will continue after SoK26 is over.&lt;/p&gt;
&lt;p&gt;&lt;figure&gt;
&lt;img class="img-fluid" alt="Measurement script for Okular" src="https://mentorship.kde.org/blog/2026-04-10-sok-conclusion/script_run_lab_pc.png"
style="max-width: 100%; height: auto"
/&gt;
&lt;/figure&gt;
&lt;/p&gt;
&lt;h1 id="automate-promo-data-collection"&gt;&lt;a target="_blank" href="https://community.kde.org/Promo"&gt;Automate Promo Data Collection&lt;/a&gt;&lt;/h1&gt;
&lt;p&gt;&lt;a target="_blank" href="https://community.kde.org/SoK/2026/StatusReport/Chuyen_Nguyen"&gt;Chuyen Nguyen&lt;/a&gt; wrote automation scripts and created environments for them to perform some of the KDE promotional team's insight data collection tasks. The first script collects KDE's X, Bluesky, Mastodon, and Threads accounts' follower and post counts using a mix of API requests and web scraping methods alongside a local Nitter instance. The second script scrapes the KDE subreddit's Reddit Insights page for weekly metrics on page visits, unique visitors and its total member count and includes a Docker image that allows for headless execution. The final script collects articles related to KDE using Google Alerts emails and performs sentiment analysis on them using a locally run large-language model. The figure below shows output from the follower and post count scraper, Reddit Insights page scraper, and Google Alerts evaluator respectively.&lt;/p&gt;
&lt;p&gt;&lt;figure&gt;
&lt;img class="img-fluid" alt="Terminal output of the different results of the scripts" src="https://mentorship.kde.org/blog/2026-04-10-sok-conclusion/comp_screenshot.png"
style="max-width: 100%; height: auto"
/&gt;
&lt;/figure&gt;
&lt;/p&gt;
&lt;h1 id="plasma-setup"&gt;&lt;a target="_blank" href="https://kde.org/plasma-desktop/"&gt;Plasma Setup&lt;/a&gt;&lt;/h1&gt;
&lt;p&gt;&lt;a target="_blank" href="https://community.kde.org/SoK/2026/StatusReport/Onat_Ribar"&gt;Onat Ribar&lt;/a&gt; worked on bringing Plasma Setup, KDE's first-run setup wizard, to Plasma Mobile. Plasma Setup was built with desktop screens in mind, and running it on a phone showed overall accessibility issues including but not limited to overlapping components, content clipping on short window sizes, session buttons that remained tappable beneath wizard pages, and a timezone selector built around an interactive map that was nearly unusable on a small touchscreen. Onat worked through these systematically across the wizard's QML UI, resulting in an adaptive experience across screen sizes and input methods without affecting the desktop UX. Two MRs have been reviewed, merged, and are now part of the upstream codebase in repositories plasma-setup and plasma-workspace.
&lt;figure&gt;
&lt;img class="img-fluid" alt="Setup Wizard for Plasma Setup" src="https://mentorship.kde.org/blog/2026-04-10-sok-conclusion/plasma_setup.png"
style="max-width: 100%; height: auto"
/&gt;
&lt;/figure&gt;
&lt;/p&gt;
&lt;h1 id="falkon"&gt;&lt;a target="_blank" href="https://apps.kde.org/falkon/"&gt;Falkon&lt;/a&gt;&lt;/h1&gt;
&lt;p&gt;&lt;a target="_blank" href="https://community.kde.org/SoK/2026/StatusReport/Sairam_Bisoyi"&gt;Sairam&lt;/a&gt; developed a XMPP extension that adds a chat client directly into the KDE Falkon browser's sidebar. Written in Python using Slixmpp, the project lets users message each other and run interactive WebXDC apps right inside their chat window. It supports modern XMPP features like Message Carbons (XEP-0280) for device syncing, Message Corrections (XEP-0308) for edits, Emoji Reactions (XEP-0444), and HTTP File Uploads (XEP-0363). This setup turns Falkon into a communication tool without even leaving the browser.
&lt;figure&gt;
&lt;img class="img-fluid" alt="XMPP Support in Falkon through WebXDC" src="https://mentorship.kde.org/blog/2026-04-10-sok-conclusion/falkon-connect.png"
style="max-width: 100%; height: auto"
/&gt;
&lt;/figure&gt;
&lt;/p&gt;
&lt;p&gt;&lt;a target="_blank" href="https://community.kde.org/SoK/2026/StatusReport/Shiva_Shankar"&gt;J Shiva Shankar&lt;/a&gt; added XMPP bookmark syncing to the Falkon browser. The basic setup is working, so whenever you add or update a bookmark, it successfully syncs across your devices. Deleting bookmarks still has a few bugs right now, but they have been documented. He plans to keep contributing after SoK to squash these bugs and get the feature completely polished.
&lt;figure&gt;
&lt;img class="img-fluid" alt="Bookmarks synchronization in Falkon" src="https://mentorship.kde.org/blog/2026-04-10-sok-conclusion/falkon_bookmark_synchro.png"
style="max-width: 100%; height: auto"
/&gt;
&lt;/figure&gt;
&lt;/p&gt;
&lt;h1 id="mankala-engine"&gt;&lt;a target="_blank" href="https://invent.kde.org/games/mankalaengine"&gt;Mankala Engine&lt;/a&gt;&lt;/h1&gt;
&lt;p&gt;&lt;a target="_blank" href="https://community.kde.org/SoK/2026/StatusReport/Sayandeep_Dutta"&gt;Sayandeep Dutta&lt;/a&gt; helped in redesigning the &lt;a target="_blank" href="https://invent.kde.org/srisharanvs/mankalanextgen"&gt;MankalaNextGen&lt;/a&gt; GUI with Kirigami and added designs fixing the Main UI and the Game with game boards and shells. He also added music with Qt to Mankala and made translations in Tamil and Hindi. Made assets for the game variants using Krita in their traditional designs and motifs. Started with the review process of MankalaNextGen with the CI build.
&lt;figure&gt;
&lt;img class="img-fluid" alt="Bohnenspiel Board" src="https://mentorship.kde.org/blog/2026-04-10-sok-conclusion/bohnenspiel.png"
style="max-width: 100%; height: auto"
/&gt;
&lt;/figure&gt;
&lt;/p&gt;
&lt;p&gt;&lt;a target="_blank" href="https://community.kde.org/SoK/2026/StatusReport/Pavan_Kumar_S_G"&gt;Pavan Kumar&lt;/a&gt; enhanced MankalaEngine by adding an opening book and investigated performance of multithreaded alpha-beta search using OpenMP, Pthreads and Taskflow. In addition, he enhanced MankalaNextGen by creating visual assets for game boards and seeds and also created logos for MankalaEngine and MankalaNextGen.
&lt;figure&gt;
&lt;img class="img-fluid" alt="New MankalaEngine logo" src="https://mentorship.kde.org/blog/2026-04-10-sok-conclusion/logo.png"
style="max-width: 100%; height: auto"
/&gt;
&lt;/figure&gt;
&lt;/p&gt;</description><author>KDE Mentorship</author></item><item><title>Testing org.kde.Platform flatpak built in CI</title><link>https://akselmo.dev/posts/flatpak-kdeplatform-ci/</link><pubDate>Thu, 09 Apr 2026 20:53:56 +0000</pubDate><guid isPermaLink="true">https://akselmo.dev/posts/flatpak-kdeplatform-ci/</guid><description>&lt;p&gt;Very technical post, feel free to ignore if you're not working on KDE stuff.&lt;/p&gt;
&lt;span id="continue-reading"&gt;&lt;/span&gt;
&lt;p&gt;Since I'm on KDE Linux, I use flatpak apps for pretty much everything, such as Kontact suite.
I wanted to test out how my Breeze changes would look like in KMail and other apps, but I didn't
want to build the whole PIM stack.&lt;/p&gt;
&lt;p&gt;Here's how I tested it by building the flatpak-kde-runtime in CI, downloading the built files
and using it as a repository for testing any changes to &lt;code&gt;org.kde.Platform&lt;/code&gt; locally.&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;First make changes to the flatpak-kde-runtime, such as this here: &lt;a target="_blank" href="https://invent.kde.org/packaging/flatpak-kde-runtime/-/commits/work%2Fakselmo%2Ftest-breeze"&gt;https://invent.kde.org/packaging/flatpak-kde-runtime/-/commits/work%2Fakselmo%2Ftest-breeze&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;Run the CI&lt;/li&gt;
&lt;li&gt;Check the pipeline ID for &lt;code&gt;build-runtime-amd64&lt;/code&gt;
&lt;ul&gt;
&lt;li&gt;Click the green checkmark, its something like &lt;code&gt;#1210828&lt;/code&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;Download the artifact from here: &lt;a target="_blank" href="https://storage.kde.org/ci-artifacts/packaging/flatpak-kde-runtime/p/PIPELINE_ID_HERE/repository-x86_64.tar.gz"&gt;https://storage.kde.org/ci-artifacts/packaging/flatpak-kde-runtime/p/PIPELINE_ID_HERE/repository-x86_64.tar.gz&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;Extract the tar into some folder after downloading&lt;/li&gt;
&lt;li&gt;Add it as a repository: &lt;code&gt;flatpak remote-add --no-gpg-verify kde-platform-testing ./repo-x86_64&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;Uninstall the current platform: &lt;code&gt;flatpak uninstall org.kde.Platform --force-remove&lt;/code&gt;
&lt;ul&gt;
&lt;li&gt;The force-remove makes sure we do not install any apps, just the platform&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;Run &lt;code&gt;flatpak install org.kde.Platform&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;Select the &lt;code&gt;kde-platform-testing&lt;/code&gt; as the repo to install from&lt;/li&gt;
&lt;li&gt;Done!&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;Now any app that uses the version of platform (6.10 in my example) will utilize your
custom built one.&lt;/p&gt;
&lt;p&gt;&lt;a target="_blank" href="https://brid.gy/publish/mastodon"&gt;&lt;/a&gt;&lt;/p&gt;</description><author>Akseli Lahtinen (Aks)</author></item><item><title>Akademy 2026: Registration Now Open</title><link>https://akademy.kde.org/news/2026-04_akademy-2026-registration/</link><pubDate>Thu, 09 Apr 2026 08:12:13 +0000</pubDate><guid isPermaLink="true">https://akademy.kde.org/news/2026-04_akademy-2026-registration/</guid><description>&lt;h2 id="akademy-2026-registration"&gt;Akademy 2026: Registration&lt;/h2&gt;
&lt;p&gt;&lt;strong&gt;Akademy 2026 will be a hybrid event held simultaneously in Graz, Austria,
and Online.&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;Hundreds of participants from the global KDE community, the wider free and
open source software community, local organisations and software companies
will gather at this year's Akademy 2026 conference. The event will take
place in Graz and Online from Saturday, 19 September to Thursday, 24 September.&lt;/p&gt;
&lt;p&gt;KDE developers, artists, designers, translators, users, writers, sponsors and
supporters worldwide will meet face-to-face to discuss key technology issues,
explore new ideas and strengthen KDE's innovative and dynamic culture.&lt;/p&gt;
&lt;p&gt;&lt;a target="_blank" href="https://conf.kde.org/event/11/"&gt;Register&lt;/a&gt; now and join us for engaging talks,
workshops, BoFs and coding sessions. Collaborate with your fellow KDE
contributors to fix bugs, pioneer new features and immerse yourself in the
world of open source.&lt;/p&gt;
&lt;p&gt;For more information about the conference, visit the
&lt;a target="_blank" href="https://akademy.kde.org/2026/"&gt;Akademy 2026&lt;/a&gt; website.&lt;/p&gt;</description><author>Akademy</author></item><item><title>Skrooge 26.4.0 released</title><link>https://skrooge.org/news/2026-04-09-skrooge_26.4.0_released/</link><pubDate>Thu, 09 Apr 2026 00:00:00 +0000</pubDate><guid isPermaLink="true">https://skrooge.org/news/2026-04-09-skrooge_26.4.0_released/</guid><description>The &lt;a target="_blank" href="https://skrooge.org"&gt;Skrooge&lt;/a&gt; Team announces the release 26.4.0 version of its popular Personal Finances Manager based on &lt;a target="_blank" href="https://kde.org"&gt;KDE Frameworks&lt;/a&gt;.
&lt;h3 id="changelog"&gt;Changelog&lt;/h3&gt;
&lt;ul&gt;
&lt;li&gt;Correction bug 515099: Missing secondary currency value in Accounts totals&lt;/li&gt;
&lt;li&gt;Correction bug 514649: Fix initial layout when splash screen is not displayed&lt;/li&gt;
&lt;li&gt;Correction bug 514649: Double click issue on table when there is no selection&lt;/li&gt;
&lt;li&gt;Correction bug 438967: Labels in Skrooge Report axis and Legend tend to illegible&lt;/li&gt;
&lt;li&gt;Correction bug 517475: Alarms triggering even when conditions not met&lt;/li&gt;
&lt;li&gt;Correction bug 515186: Import should remember the directory used last when restarted&lt;/li&gt;
&lt;li&gt;Correction bug 430245: summaries display truncated after searching in Operations grouped by Category&lt;/li&gt;
&lt;li&gt;Correction bug 518461: charts missing in responsive monthly report&lt;/li&gt;
&lt;li&gt;Correction: Better filtering in categories page&lt;/li&gt;
&lt;li&gt;Correction: Fix various error in flatpak mode (import, download sources, ...)&lt;/li&gt;
&lt;/ul&gt;</description><author>Stéphane MANKOWSKI</author></item></channel></rss>