11 Jul 2026
Planet KDE | English
This Week in Plasma: Audio Recording in Spectacle
Welcome to a new issue of This Week in Plasma!
This week was busy! We've got some great new features to share, improved theming compatibility, UI improvements, bug fixes… and lots more! This is one of those weeks with a bit of something for everyone - even people who are picky about software dependencies. Take a look:
Notable new features
Plasma 6.8
Spectacle now gives you the option to record audio during screen recordings! It can grab audio from the microphone, audio that the system is outputting, or both. (Khudoberdi Abdujalilov, KDE Bugzilla #474798)

System Monitor can now measure VRAM usage as a percentage of the total, just like it can for regular RAM. (Beck Thompson, ksystemstats MR #135)
The 13-month Ethiopian calendar joins the growing ranks of supported alternate calendars! (Eyobed Awel, kdeplasma-addons MR #1079)

Notable UI improvements
Plasma 6.6.6
Improved the responsiveness of the brightness slider in the Brightness & Color widget. (Marco Martin, powerdevil MR #650)
Plasma 6.7.3
The Vietnamese lunar calendar now displays its text in Vietnamese even if your system language is set to something else, which is more consistent with other alternate calendars. (Trần Nam Tuấn, KDE Bugzilla #521787)

The feature to show alternative characters when you press and hold a key on the keyboard now triggers after 600 milliseconds of holding, rather than 200. This should make it much harder to accidentally activate. (Kristen McWilliam, plasma-keyboard MR #157)
You can now interact with the Overview and Custom Tiling overlays using a drawing tablet stylus in a Wayland session. (Nicolas Fella, KDE Bugzilla #468396 and KDE Bugzilla #522677)
Plasma 6.8
Comboboxes in Plasma now use the active Plasma theme to style their popups, rather than using a hardcoded Breeze-style appearance. And their menu highlights no longer animate in and out, either, which matches the appearance everywhere else. (Filip Fila, libplasma MR #1547 and libplasma MR #1550)
System Settings' Remote Desktop page no longer looks somewhere between "very awkward" and "broken" with a small and narrow window size, like on a phone. (Nick Haghiri, krdp MR #208)
System Settings' "Report a Bug in the Current Page" feature now works for pages that didn't come from KDE but still list a bug reporting URL. (Antti Savolainen, systemsettings MR #412)
Auto-login now works in Plasma Login Manager on operating systems with older versions of systemd, like KDE neon. (David Edmundson, KDE Bugzilla #522006)
Brightness on external monitors now changes more quickly after you adjust the brightness slider in the Brightness & Color widget. (Kylie CT, KDE Bugzilla #498913)
Frameworks 6.29
When using the default qqc2-desktop-style system (as opposed to when testing the upcoming Union system), list and grid view highlights in QML-based KDE software now respect the visual styling of the active app style, rather than having a hardcoded Breeze-style appearance. In addition, password fields no longer change in height for certain fonts when you type the first character into them. (Evgeniy Harchenko, qqc2-desktop-style MR #521 and qqc2-desktop-style MR #524)
The Breeze icon theme now includes an icon for Android app bundle files. (Tobias Zwick, KDE Bugzilla #508430)

The large fancy Kirigami tab bars seen in QML-based KDE software now switch the active tab when you scroll over them or press one of the standard tab-switching keyboard shortcuts - just like tab bars in QtWidgets-based apps do. (Tobias Ozór, kirigami MR #2123)
Notable bug fixes
Plasma 6.6.6
The Choose Application window no longer percent-encodes some characters in filenames, which looked pretty ugly. (David Redondo, KDE Bugzilla #521748)
The Media Frame widget no longer displays every other image in a somewhat sharpened and crunchy manner. (Marco Martin, KDE Bugzilla #521534)
Plasma 6.7.3
Fixed a recent regression that broke closing windows in the Overview overlay by middle-clicking them. (Xaver Hugl, KDE Bugzilla #522015)
Fixed a few remaining minor layout regressions in the Color Picker widget, so now it should always have the same size as it did in Plasma 6.6. (Tobias Fella, KDE Bugzilla #522377)
Fixed a recent regression in an X11 session that made icons of all running Flatpak apps appear unnecessarily in the System Tray. (David Redondo, KDE Bugzilla #522864)
Plasma no longer crashes if you disable the Calendar Events plugin in one Digital Clock widget when there are more than one of them with that plugin enabled. (Shouvik Kar, KDE Bugzilla #520465)
When the system is configured to automatically switch global themes at certain times of day, this switchover now takes place as expected even if the computer happened to be turned off when the transition would have taken place. (Vlad Zahorodnii, KDE Bugzilla #511740)
Plasma 6.8
Fixed a glitch related to scrolling in System Monitor's Configure Columns popup, which is now a traditional window instead. (Arjen Hiemstra, KDE Bugzilla #517723)
In the Networks widget, connecting to a network you don't have permission to edit no longer mistakenly makes all other available networks look connected. (Sergey Katunin, KDE Bugzilla #461028)
Frameworks 6.28
Fixed a subtle regression that prevented overriding settings set at the vendor/distro level (e.g. via a /etc/xdg/kwinrc file) that differed from Plasma's own default settings. This affected Kubuntu and Fedora, which turned on Wobbly Windows and Plasma Keyboard, respectively. (Nicolas Fella, KDE Bugzilla #519481)
Typst documents once again show a fancy icon when using the Breeze icon theme, fixing an issue where this stopped happening after the official MIME type for Typst files was changed upstream of KDE. (Boris Jurcaga, breeze-icons MR #554)

Notable in performance & technical
Plasma 6.6.6
Using a udev rule to set the LIBINPUT_CALIBRATION_MATRIX property now works as expected in a Wayland session. (Nicolas Fella, KDE Bugzilla #521464)
Plasma 6.8
Spectacle no longer requires the fairly chunky OpenCV software library; we found a way to implement an adequately-performant blur effect without it. (Noah Davis, spectacle MR #561 and kquickimageeditor MR #53)
How you can help
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.
Would you like to help put together this weekly report? Introduce yourself in the Matrix room and join the team!
Beyond that, you can help KDE by directly getting involved 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.
You can also help out by making a donation! This helps cover operational costs, salaries, travel expenses for contributors, and in general just keeps KDE bringing Free Software to the world.
To get a new Plasma feature or a bug fix mentioned here
Push a commit to the relevant merge request on invent.kde.org.
11 Jul 2026 12:00am GMT
10 Jul 2026
Planet KDE | English
Web Review, Week 2026-28
Let's go for my web review for the week 2026-28.
Chat Control 1.0: EU Council forces messenger scans via fast-track
Tags: tech, europe, surveillance
This is a shady move once more… They really want to extend this security apparatus. We could hope there were enough MEPs to vote against this… but it's not been the case.
You paid me, a long-time Linux user, to use Windows 11 exclusively for a month: here's how it went
Tags: tech, windows, funny
Funny experiment. If you're a Linux user pondering going back to Windows it'll likely cure you. Goodness the install experience is abysmal and that's just the beginning of the troubles. Of course it has a good side as well but it feels fairly limited.
Democratizing Abandonware
Tags: tech, ai, machine-learning, gpt, copilot, slop, flatpak, codereview
The data set is rather small but the trend is really bad. So much reviewer time wasted due to AI slop… this time on the Flathub side.
https://geopjr.dev/blog/democratizing-abandonware
I am not a tool
Tags: tech, ai, machine-learning, gpt, copilot, ethics, foss
Really this kind of AI push is a bad move from employers, especially when interacting with FOSS communities so much. This forces people to pass the ethical issues onto volunteers…
https://eng.hroncok.cz/2026/07/07/ai-tool
Bosses Horrified as "AI Native" College Graduates Hit the Workplace
Tags: tech, ai, machine-learning, gpt, productivity, education
How is going this social experiment at scale? Not well I'd say… And some in those cohorts will end up in positions of power, that's when it'll become really "interesting" I guess.
https://futurism.com/future-society/college-critical-thinking-ai
Local, CPU-Friendly, High-Quality TTS with Kokoro
Tags: tech, ai, machine-learning, speech
This keeps being a very interesting TTS model. Looks like it's getting simpler to deploy too.
https://ariya.io/2026/03/local-cpu-friendly-high-quality-tts-text-to-speech-with-kokoro/
Cpp2Rust: Automatic Translation of C++ to Safe Rust
Tags: tech, c++, rust, compiler
Still need some work I'd say but this is interesting research. Transpiling C++ to Rust is getting more accessible. It need some improvements on the optimisation side to be more generally usable.
https://web.ist.utl.pt/nuno.lopes/pubs/cpp2rust-pldi26.pdf
Physically Based - The PBR values database
Tags: tech, shader, pbr, physics
Cool resource to have the right values for various PBR materials.
How I'm using CSS View Transitions on this blog
Tags: tech, html, css, animation
A good reminder that you can go a long way to specify transitions with just CSS nowadays.
https://blog.omgmog.net/post/how-im-using-css-view-transitions-on-this-blog/
Size does matter, actually
Tags: tech, web, performance, complexity
There are ways to have a lighter web. It leads to interesting techniques too.
98% isn't very much
Tags: tech, reliability, statistics
Can you rely on something? Indeed, if it fails "only" 2% of the time it can mean a lot of failures… you better handle the edge cases and degrade gracefully.
https://whynothugo.nl/journal/2026/07/03/98-isnt-very-much/
a software engineering interview question I like: computing the median
Tags: tech, hr, interviews, complexity
I like this kind of questions as well. It's more interesting to aim for something simple to start with than a puzzle. Even topics considered simple have several layers of complexity.
https://krisshamloo.com/blog/007
The Lion, The Witch, and the audacity of recruiters
Tags: tech, hr, interviews
Whatever the hiring process, show some respect to the candidate. It's the least you can do for them.
https://hauleth.dev/post/the-lion-the-witch-and-the-aduacity-of-recruiter/
The myth of mind uploading
Tags: tech, scifi, science, philosophy
A long piece, but digs in details on why "mind uploading" really can't be a thing.
https://plus.flux.community/p/the-myth-of-mind-uploading
Bye for now!
10 Jul 2026 12:09pm GMT
KDE Ships Frameworks 6.28.0
Friday, 10 July 2026
KDE today announces the release of KDE Frameworks 6.28.0.
This release is part of a series of planned monthly releases making improvements available to developers in a quick and predictable manner.
New in this version
KCoreAddons
- KMemoryInfo: add basic GNU/Hurd support. Commit.
- KDirWatch_UnitTest: fix memory leaks. Commit.
- KFileSystemType: add custom determineFileSystemTypeImpl for Hurd. Commit.
- Switch to ECMGenerateExportHeader generating C++ standard attributes. Commit.
- Aboutdata: Also fill componentName from AppStream data. Commit.
- Expose basic KSandbox properties to QML. Commit.
- Find AppStream files on Android. Commit.
- Fix Clang-Tidy: Method 'test_locking' can be made static. Commit.
- Fix Clang-Tidy: Static member accessed through instance. Commit.
- Fix Clang-Tidy: Method 'test_fileStaleFiles' can be made static. Commit.
- Aboutdata: Fix retrieving untranslated release notes. Commit.
KDE Daemon
- Disable startup notification for kded. Commit.
KGuiAddons
- Use iOS-compatible platform and URL handling. Commit.
KIconThemes
- Disable desktop-only KIconThemes tools and plugin on iOS. Commit.
KImageformats
- EXR: added support for additional metadata. Commit.
- JP2: limits the maximum number of channels to the global value defined. Commit.
- Ossfuzz: replace INITGUID with ANSI. Commit.
- JXR: remove INITGUID define. Commit.
- Ossfuzz: update libaom and libavif. Commit.
- HEIF: use heif_reader for random access devices. Commit.
- Avif: If we only have single image, return false at jumpToNextImage. Commit. Fixes bug #521200
- Added limit to maximum number of channels. Commit.
- Improve buffer memory management. Commit.
KIO
- Knewfilemenu: misc refactoring. Commit.
- Knewfilemenu: remove EntryType. Commit.
- KFileWidgetTest: fix flaky testDropFile. Commit.
- KFilePlacesView: only repaint the drop indicator when it changes. Commit. See bug #522257
- WorkerThread: do not pthread_join the QThread's own thread. Commit.
- File worker: create directories with the requested mode. Commit.
- File worker: do not fail mkdir when overwrite is set and nothing to remove. Commit.
- KFilePermissionsPropsPlugin: fix isIrregular calculation when using extended ACLs. Commit.
- Autotests: add a union-based UDSEntry candidate to the comparison benchmark. Commit.
- Kio_file: stop recursive deletion promptly when the job is cancelled. Commit.
- Core, kio_file: stop directory listing promptly when the job is cancelled. Commit.
- KUrlNavigator: Fix context menu action removing focus effect from region of navbar. Commit.
- Switch to ECMGenerateExportHeader generating C++ standard attributes. Commit.
- Openurljob: treat x-ms-dos-executable as a native binary if the executable bit is set. Commit.
- Autotests: verify POSIX ACL preservation when copying a file. Commit.
- Commandlauncherjobtest: wait for KProcessRunner deletion in runExecutableInLocalPath. Commit.
- Worker: do not flush deferred deletes globally in the destructor. Commit.
- Autotests: add a regression test for the Worker::deref() deadlock. Commit.
- Worker: do not join the worker thread synchronously in deref(). Commit.
- Autotests/threadtest: redesign concurrent test to avoid Qt plugin singleton race. Commit.
- Autotests: fix reliability and prevent memory leaks. Commit.
- Scheduler: kill pending jobs on scheduler shutdown. Commit.
- Worker, WorkerThread: fix QPluginLoader, QLibraryPrivate and thread lifecycle leaks. Commit.
- Enable LSAN in CI. Commit.
- NameFinderJob: fix StatJob lifetime, add doKill() and clean up. Commit.
- File worker: set the modification time through SetFileTime on Windows. Commit.
- Ignore the file worker move in git blame. Commit.
- File worker: drop the stale chmod FIXME comment. Commit.
- File worker: remove the dead tryChangeFileAttr and ActionType enum. Commit.
- File worker: set the copied file's permissions and ownership through a descriptor. Commit.
- Mkdirjob: add setOwnership to set uid/gid. Commit. Fixes bug #517067
- Deletejob: report files removed before a partial failure. Commit. Fixes bug #424545
- Openurljobtest: wait for the launched output, not just the file. Commit.
- Make KFilePropsPluginWidget labels' case adhere to the HIG. Commit.
- Kfileitem: do not read .directory on slow filesystems in iconName. Commit. Fixes bug #519189
- Filepreviewjobtest: Correct email in SPDX header. Commit.
- Filepreviewjobtest: Correct email in SPDX header. Commit.
- Filepreviewjob: stop timeout timer when the job finishes. Commit.
- Core: refresh KIO changes without DBus notifications. Commit.
- Widgets/kfileitem: center small icons in grid view. Commit. Fixes bug #520659
- Kfilewidget: jump to the closest sliderstep value. Commit.
- Kfileplacesmodel: Check whether tags are a supported protocol before adding them. Commit.
- KFilePlaceEditDialog: avoid public include of . Commit.
Kirigami
- Action: only enable alternateShortcut when the action is enabled. Commit.
- FormEntry: fix binding loop. Commit.
- FormEntry: always be hoverEnabled. Commit.
- Forms: Dont put items at fractional positions. Commit. See bug #522042
- AbstractApplicationWindow: Fix applications that use an header item. Commit. Fixes bug #521552
- Primitives: Base Icon's node size on icon size, not item size. Commit. Fixes bug #391315. Fixes bug #518041. Fixes bug #519129. Fixes bug #408215
- AlignedSize: fix docs. Commit.
- Controls/private/DefaultChipBackground.qml: remove wrong colorSet. Commit.
KNotifications
- Android: Modernize JNI code. Commit.
KTextEditor
- Fix typo in settings. Commit.
- Vi-mode: Fix reversed mouse selection range. Commit. Fixes bug #454417
- Vi-mode: Fix command range for mouse selection. Commit. Fixes bug #454312
- Vi-mode: Implement read-only registers: search and command. Commit.
- Vi-mode: Fix register for last inserted text. Commit.
- Vi-mode: Simplify validation of register characters. Commit.
- Change setting wording. Commit.
- Word cursor movement: Only stop at underscores in camel cursor. Commit.
- Vi-mode: Shorten names for VI modes on the status bar. Commit.
- Vi-mode: Allow count for multiple undo/redo. Commit.
- Add editor color theme preview icon to config page combo boxes. Commit.
- Show preview icons for editor color themes. Commit.
- Themeconfig: Set file type instead of highlighting mode. Commit.
KUnitConversion
- ADD: Wh (watt-hour) energy conversion. Commit.
KUserFeedback
- Inject version macros to all public headers. Commit.
KWallet
- Fix(ksecretd): reject invalid UTF-8 in
SetSecret/CreateIteminstead of silent corruption. Commit.
Oxygen Icons
- Add to favorites icon. Commit.
- Updated kt-magnet for sizes 22-64. Commit.
- Actions/kt-magnet initial version. Commit.
- Appimage mimetype. Commit.
- Symlink system-save-session -> document-save. Commit.
- Application-x-msdownload -> application-x-ms-dos-executable. Commit.
- Amarok-symbolic. Commit.
- Some symlinks for eye icon. Commit.
- Https://invent.kde.org/frameworks/oxygen-icons/-/work_items/1#note_1527713 fix. Commit.
- More symbolic icons for 32x32. Commit.
- Another icon complete. Commit.
- Another icons that was not needed 20 years ago :D. Commit.
- Keepsecret app icon. Commit.
- New icon for a series. Commit.
Syntax Highlighting
- Invalidate cached translations when language changes. Commit.
- Powershell: fix parentheses matching in command substitution with function calls. Commit. Fixes bug #519774
- Powershell: fix Numeric Suffix when the previous line ends with number. Commit.
- Make build reproducable. Commit.
- Adapt refs to fixed scope highlighting. Commit.
- Fixes formatting for scopes containing types like 'std::char' or 'std::str::Bytes' which contain 'str' and 'char'. Commit.
- Systemd unit: update to systemd v261. Commit.
- YAML: fix some bad indentation detection, add Timestamp and fix some defects. Commit.
- Fish: end keyword of function as Keyword instead of Control Flow. Commit.
- Fish: use the "Function Doc" style for strings with --description followed by spaces. Commit. Fixes bug #521369
- Theme: Add preview icon. Commit.
- Zsh: remove String Transl. which does not exist in zsh. Commit.
- Bash: fix String Transl. highlingting (was a String DoubleQ). Commit.
- Bash: fix context pop of brace command substitution (${ cmd}/${|cmd}). Commit. Fixes bug #521069
10 Jul 2026 12:00am GMT
09 Jul 2026
Planet KDE | English
Improving Koko (Part 1 of 2)
Myself and others have been contributing to Koko under the banner of Techpaladin Software. Here's what we've been up to over the past year.
09 Jul 2026 1:51pm GMT
Qt for MCUs 2.12.2 LTS Released
Qt for MCUs 2.12.2 LTS has been released and is available for download. This patch release provides several bug fixes and other improvements while maintaining source compatibility with Qt for MCUs 2.12 (see Qt for MCUs 2.12 LTS released). This release does not add any new functionality however as part of a continuous effort to scale Qt for MCUs to more platforms new Tier-2 board Nuvoton Gerda-4L is now available.
![]()
09 Jul 2026 3:00am GMT
08 Jul 2026
Planet KDE | English
GSOC progress, Midterm and Upcoming goals
Hi everyone!! So we are halfway through our journey of GSOC 2026. It's time for the midterm and new status updates we have accomplished over the past 6 weeks.
-
During my first and second weeks, I familiarized myself more with the XMPP protocols and clients like Kaidan, etc., which can be used for XMPP server interactions and also created a page for the Mankala Engine using Hugo. I have successfully added the option to register XMPP accounts from within the Mankala Engine and also added an XMPP compliance check in the 2nd week, which makes sure that the selected XMPP server has all the protocols that are needed to play the game.
-
For the next tasks in week 3, I worked on extracting usernames and profile player icons from within the XMPP servers and directly display it as part of the user account in the game. I also fixed the sizes for the different components in the profile page and gave it a proper redesign.

- For weeks 4 and 5, I spent time creating the tournaments. I experimented a bit with the connectivity to connect more than 2 players to an XMPP server, and then created a detailed tournament page for the number of wins, losses, and player match details, and thus implemented the round-robin tournament style. Some more features, like setting up the time limits for each move and accepting game invites, were also added.

- In the 6th week, I gave a talk at the ILUGC (Indian Linux Users Group Chennai) virtual meet and got feedback from the players, and implemented better sounds and a sound button for the game. I also added animations for the shells so they get smoothly displaced to their destined pits after each move.
Challenges I faced
The most difficult part while implementing tournaments can be said to connect multiple players and track their moves in real time across the games. The best possible way to fix this was to create a XMPP MUC and then join the player using that and track the moves being sent across the channel. So, for example a move played by Player 1 will be sent to Player 2, to do this we send the request from Player 1's account track the request through the MUC and display it on the Players 2's board and same goes for multiple players present in the game.
Goals for upcoming weeks
A couple of changes were added based on our GSOC proposal, and a lot of new things and features were implemented. In the next half of GSOC, I plan to work on text- and voice-based chat options within the Mankala so that players can communicate with others during their matches. I also plan to add another variant of tournaments, which gives the players a broader number of options to choose from, and add the feature to create a user-defined AI to play against another person or an AI over the network.
Thanks for reading 🚀
08 Jul 2026 1:51pm GMT
07 Jul 2026
Planet KDE | English
Week 6: Clipboard Auto-Clear with Klipper Protection
This week I implemented clipboard auto-clear for KeepSecret (!36).
When a user copies a password, it shouldn't stay in the clipboard indefinitely - that's a real security risk if the clipboard gets inspected, synced, or accessed by another application.
What was implemented:
After copying a password, the clipboard is automatically cleared after 30 seconds. A Kirigami.InlineMessage countdown notification appears in the entry page showing "Password copied. Clipboard will be cleared in X seconds", updating every second. The clipboard is also cleared when the app quits via QCoreApplication::aboutToQuit. Instead of QClipboard::clear() (which on X11 reverts to the previous clipboard entry), the clipboard is overwritten with an empty string. A single repeating QTimer of 1 second handles both the countdown and the clear - subtracting 1 second each tick, stopping and clearing when it reaches 0. The timeout uses std::chrono::seconds as suggested by Marco Martin during review.
Klipper history protection:
One tricky KDE-specific problem: even if you clear the clipboard after the timeout, the password could still be sitting in Klipper's clipboard history. The fix is to add the x-kde-passwordManagerHint MIME type (set to "secret") alongside the password data when copying. Klipper specifically checks for this hint and skips adding that entry to its history entirely - so the password never gets recorded there in the first place. This approach was pioneered by KeePassXC.
07 Jul 2026 8:14am GMT
KDE Mega Sprint 2026
I attended my first KDE sprint in Graz, Austria, travelling abroad for the first time. In this late blog post, I discuss the things I did and my thoughts on travel.
07 Jul 2026 7:40am GMT
KDE Plasma 6.6.6, Bugfix Release for July
Today KDE releases a bugfix update to KDE Plasma 6, versioned 6.6.6.
Plasma 6.6 was released in February 2026 with many feature refinements and new modules to complete the desktop experience.
This release adds two months' worth of new translations and fixes from KDE's contributors. The bugfixes are typically small but important and include:
07 Jul 2026 12:00am GMT
06 Jul 2026
Planet KDE | English
Week 4 + Week 5 GSoC update | Almost had a heart attack
Ok, the title is slightly click-baity but hear me out.
So nearly 2 weeks ago, after writing a lot of code for making the font subsetting work for annotations, I found a flaw in my approach.
I was never deleting the old original font after embedding it's subset version.
So what happened is that:
- Suppose a user creates a new annotation in an empty PDF.
- The subsetted font gets embedded and used in the PDF.
- But the original font stays there, taking space.
This is actually slightly worse than when we had no subsetting at all.
So the solution should just be to delete the original font right? Nope
If we simply delete the original font, it would create the following problem:
- Suppose a PDF with two annotations pointing / using the same font.
- User edits the 1st annotation.
- 1st annotation uses the subset font, and the old font gets deleted from the PDF.
- The 2nd annotation is rendered useless.
When I realized this, I thought I would need to completely change how I do subsetting, and almost all the code I had written will go to waste.
My new idea was to never let the full version of a font to exist inside the PDF. What I mean is subsetting immediately when the font is loaded from the disk and is about to be embedded as a Font object.
But I had a meeting with my mentor Albert Astals Cid yesterday, and we decided to settle on a simpler approach. We can simply detect if the font we want to delete is:- a font we added ourselves or a pre-existing font inside the PDF.
If we added it ourselves, we can safely remove it. Otherwise, let it stay there as it might be in use by other annotations.
I implemented it today, and we have working font subsetting for freetext annotations right now (not merged).
https://gitlab.freedesktop.org/poppler/poppler/-/merge_requests/2220
A simple size experiment
Here's a simple experiment which demonstrates the impact of font subsetting on PDF file size:
Original file size: 105820 bytes = 105.82 KB
After adding an annotation with content "hello world":
Poppler without font subsetting: 504699 bytes = 504.699 KB
Poppler with font subsetting: 145806 bytes = 145.806 KB
That's like a 500% improvement...
What's next
- Right now, I only do the subsetting for ttf/otf fonts and not for ttc fonts. I need to do that.
- I need to make the subsetting work for forms as well.
Thank You
Good Night!
06 Jul 2026 6:46pm GMT
Kdenlive 26.04.3 released
The last maintenance release of the 26.04 series is out, bringing the usual batch of bug fixes and workflow and stability improvements. Highlights include fixes for crashes when undoing sequence creation and recording audio without an audio device, as well as improvements to Rectangular Alpha Mask and Rotoscoping effects. This release also continues the security hardening efforts of this cycle by preventing unwanted command execution on MLT versions below 7.40.
For the full changelog continue reading on kdenlive.org.
06 Jul 2026 1:15pm GMT
Week 6: Gradient Widget Wired to Qt-Color-Widgets
This is a weekly update from my Google Summer of Code 2026 project with KDE, improving effect widgets in Kdenlive, a free and open source video editor.
Gradient widget: switched to Qt-Color-Widgets
Julius Künzel suggested last week that the Gradient widget be built with an eye toward upstreaming to KDE Frameworks, pointing to Qt-Color-Widgets's GradientEditor class as a reference. It's already vendored inside MLT's Glaxnimate module, so this week I wired it in directly instead of maintaining a fully custom-painted widget.
The vendored color_widgets::GradientEditor gives a native-styled gradient bar with checkerboard alpha preview, drag-and-drop stop reordering, and its own color dialog, all for free.
Fixing undo-stack behavior
The library only emits stopsChanged on completed actions (mouse release, menu add/remove, dialog accept), not per-pixel during drags. That meant two bugs: every plain click created a junk undo-stack entry, and drags had no live preview on the monitor at all.
Fixed with three pieces:
commitStops()emitsvalueChanged(..., true)only when the serialized value actually changed- An
eventFilteremitsvalueChanged(..., false)during drag moves, for live monitor preview - An echo-guard in
slotRefresh()ignores the model value coming back from our own emit; without it, the synchronous refresh resets the editor's selection and kills the drag mid-motion
32-stop cap
MLT's gradientmap filter supports stop.1 through stop.32. The library has no pre-add hook to reject a 33rd stop, so commitStops() rejects after the fact: the just-added stop gets removed and the editor reset under a signal blocker, with no undo entry created. gradientStopsFromString() also truncates at 32 on load, so an over-long saved value can't smuggle in extra stops. Exposed as GradientEditWidget::MaxStops.
Build: configurable vendor path
The path to Qt-Color-Widgets was previously hardcoded assuming a sibling MLT checkout. Replaced with a KDENLIVE_QTCOLORWIDGETS_PATH CMake cache variable; same default, overridable with -D, and a missing path is now a fatal configure error instead of a silent skip that only surfaced at compile time.
Tests
gradienteditwidgettest.cpp now covers a full widget-interaction path with a real timeline document and synthesized mouse events: a plain click produces zero undo entries, a drag produces two preview emissions plus exactly one committed undo entry, and adding a 33rd stop is rejected with the editor staying at 32. All 5 test cases pass, 62 assertions.
What's next
Four commits are done locally (gradient widget + CMake + tests, plus two unrelated Qt 6.10 compat fixes found along the way), but nothing's pushed yet. Waiting on Jean-Baptiste to confirm this is the direction to commit to before opening an MR.
06 Jul 2026 10:20am GMT
05 Jul 2026
Planet KDE | English
KDE Gear 26.08 branches created
Make sure you commit anything you want to end up in the KDE Gear 26.08 releases to them
Next Dates:
- July 16, 2026, 23:59 UTC: 26.08 Freeze and Beta (26.07.80) tarball creation
- July 17 2026: 26.08 Beta (26.07.80) release
- July 30, 2026, 23:59 UTC: 26.08 RC (26.07.90) tarball creation
- July 31, 2026: 26.08 RC (26.07.90) Release
- August 13, 2026, 23:59 UTC: 26.08 tarball creation
- August 14, 2026: 26.08 packages released to packagers
- August 20, 2026: 26.08 Release
https://community.kde.org/Schedules/KDE_Gear_26.08_Schedule
05 Jul 2026 10:22pm GMT
Rolisteam v1.10 is out!
After a long development cycle, we are thrilled to announce the official release of Rolisteam v1.10. This version brings a wave of brand-new tools for Game Masters, a major technical overhaul of the whole project, and a much healthier codebase for the years to come.
Download it now: https://rolisteam.org/02_download/
What's new
Mind maps
Rolisteam now embeds a full mind-map editor, letting you sketch out plots, NPC relationships, or campaign notes visually, right next to your other campaign tools.
Watch it in action: https://youtu.be/3dkokPLlre8
Documentation: https://doc.rolisteam.org/21_mindmap/
3D dice, powered by a physics engine
Rolling dice has never been more satisfying. The new 3D dice roller uses a real physics engine to simulate dice tumbling and bouncing, giving your rolls a tactile, tabletop feel.
Watch it in action: https://youtu.be/d18iqq4eNFw
Documentation: https://doc.rolisteam.org/34_dice3d/
A new interface for instant messaging
The instant messaging panel has been redesigned from the ground up for better readability and a smoother chat experience during your sessions.
Watch it in action: https://youtu.be/t8iAKKfH2E4
Documentation: https://doc.rolisteam.org/07_chat/
Antagonist panel
A brand-new Antagonist panel lets you list and manage all the NPCs of your campaign in one place, with search and filtering options to quickly find the antagonist you need, right when you need it.
Watch it in action: https://youtu.be/CKDvFuruCwE
Documentation: https://doc.rolisteam.org/07_antagonist/
A new connection profile selection dialog
Choosing and managing your connection profiles is now easier thanks to a completely reworked selection dialog.
Watch it in action: https://youtu.be/BJ0_8XG9NQc
Documentation: https://doc.rolisteam.org/03_firststeps/
Improvements
Battle maps
- New, streamlined toolbar for the vectorial map (VMap).
- Full light and shadow management, including support for multiple light sources, adjustable light radius, and network synchronization of lights.
- New shadow casting from walls, computed via raycasting, for more realistic fog-of-war and line-of-sight.
- Various improvements to zoom, item resizing, drag-and-drop from the media panel, and undo/redo reliability.
Watch it in action: https://youtu.be/RtnZxa5HjAQ
Documentation: https://doc.rolisteam.org/05_vectorialmap/
Character sheet
- Reworked tables for a more flexible and reliable layout.
- Dice commands can now be written directly in the sheet's code.
- New buttons to navigate to the next/previous page of a multi-page sheet.
- Automatic sharing
- RCSE: Auto filler dialog
- RCSE: New way to generate code
Watch it in action: https://youtu.be/343vYAqrui8
Documentation: https://doc.rolisteam.org/06_charactersheet/
PDF viewer
The built-in PDF viewer, used for sharing handouts and rulebook excerpts with your players, has also received its share of polish this release.
Watch it in action: https://youtu.be/rRrQwUmLUp0
Documentation: https://doc.rolisteam.org/20_pdf/
Translations
Thanks to the KDE translation teams, Rolisteam is now available in even more languages, with existing translations kept up to date release after release.
Refactoring
Under the hood, this release is the result of a massive modernization effort:
- Port to Qt 6 - the entire codebase now runs on the Qt 6 framework.
- Build system switched to CMake, replacing the previous qmake-based setup.
- Websites migrated from self-hosting to KDE's infrastructure.
- Websites migrated from the Pelican generator to Hugo.
- Source hosting moved from GitHub to KDE's GitLab.
Quality
Code quality and long-term maintainability were a major focus of this release:
- 70% of the code is now covered by unit tests.
- An extensive suite of validation tests now runs continuously to catch regressions early.
- Dedicated test coverage was added for the mind-map, the character sheet, translations, and the network layer.
- Continuous integration now tracks code coverage on every change.
A huge thank you
This release wouldn't have been possible without the community, the KDE translation teams, and everyone who reported bugs, tested pre-releases, and contributed code. Thank you!
Download Rolisteam v1.10 now: https://rolisteam.org/02_download/
05 Jul 2026 2:22pm GMT
KDE snaps, Debian packaging adventures, and what's next
Updated KDE content snaps with Qt 6.11.1, KF6 6.27.0, and Applications 26.04.3, critical bug fixes, Debian packaging of Rust crates for Plasma 6.7.0, and what's on the horizon.
05 Jul 2026 12:00am GMT
04 Jul 2026
Planet KDE | English
This Week in Plasma: Better Animations
Welcome to a new issue of This Week in Plasma!
This week Plasma 6.7 received a few more stabilization bug-fixes while attention turned towards the upcoming 6.8 release. Some exciting changes are in progress, and a few have already merged, including highly visible improvements to some common animations.
Check it out!
Notable new features
Plasma 6.8
Updated the Emoji Selector app to version 17 of the Unicode emoji standard, giving you access to derpy new emojis like "️". (Jens Jerosch, plasma-desktop MR #3849)

Notable UI improvements
Plasma 6.7.2
Moved the global "Move Mouse to Focus" and "Move Mouse to Center" actions out of the Zoom effect, so they still work even if you've globally disabled the Zoom effect. (Vlad Zahorodnii, KDE Bugzilla #522070)
Plasma 6.7.3
Made KRunner's Bookmarks search provider return results for 2-character queries (so it will match "Qt", for example), and use fewer system resources. (Kai Uwe Broulik, plasma-workspace MR #6764)
The Clipboard widget's Actions Configuration page now uses better internal margins for the content. (Levi Leal, plasma-workspace MR #6779)
Plasma 6.8
The "Bouncing app icon" launch feedback style now uses a more visually pleasing animation with a better physics model, a more appropriate easing curve, and a higher frame-rate. (The Entropyist, kwin MR #9487)
The new sliding animation for notifications now uses a more natural easing curve, so it looks even better than it already did! (Thomas Duckworth, KDE Bugzilla #522276)
There's no longer a secret keyboard shortcut (previously Meta+Ctrl+x) that turns on clipboard actions. This was easy to press by accident, and would then make weird popups appear when you copied URLs. (Tobias Fella, plasma-workspace MR #6773)
The Digital Clock widget now requests "tabular numerals", which are monospaced digits supported by some fonts. The use of these numerals prevents the clock from changing its width as time passed in a few edge cases where the existing code to prevent that wasn't good enough. (Christoph Wolk, plasma-workspace MR #6797)
Discover's old "CD and DVD" category is now named "Disc Burning", because that's what apps expect it to be, which explains why it only contained disc burning apps. (Nate Graham, discover MR #1350)
And before you ask: no, we couldn't instead change the category to include all apps related to CDs and DVDs, because it's a standard category governed by a FreeDesktop spec, and to do that, we'd need a new one.
Info Center's Memory page now shows a busy indicator if it takes more than a moment to load. (Kai Uwe Broulik, kinfocenter MR #305)
You can now more easily find the System Settings page responsible for the "press and hold a key to see alternative characters" popup, to turn it on or off or change the delay before it appears. (Kristen McWilliam, plasma-keyboard MR #154)
The DrKonqi crash reporting wizard now tells you when it's safe to close the window. (Antti Savolainen, drkonqi MR #397)
Notable bug fixes
Plasma 6.6.6
Hardened the Task Manager widget against maliciously-crafted .desktop files for apps. (David Edmundson, plasma-workspace MR #6817)
Hardened the ksystemstats_intel_helper process against path traversal attacks. (Matthias Gerstner, ksystemstats MR #141)
Plasma 6.7.2
Fixed a recent regression that made certain screens incorrectly notify about being disconnected and re-connected in a loop after they went to sleep. (Xaver Hugl, KDE Bugzilla #521826)
Fixed a recent regression that produced corrupted visuals on some rotated screens and with some older AMD GPUs. (Xaver Hugl, KDE Bugzilla #521878 and KDE Bugzilla #521764)
Fixed a recent regression that broke the ability to drag desktop files and folders between screens. (Marco Martin, KDE Bugzilla #521713)
Fixed a recent regression that made SDR content look a bit de-saturated for some screens while in HDR mode. (Xaver Hugl, KDE Bugzilla #521759)
Fixed a recent regression that made certain ICC profiles show the wrong colors. (Xaver Hugl, KDE Bugzilla #522301)
Fixed a recent regression that made KWin lag and hang when playing certain poorly-optimized games via Proton. (Vlad Zahorodnii, KDE Bugzilla #522005)
The implementation of the new "press and hold for alternative characters" feature now prioritizes compatibility for apps, fixing a massive number of bugs. (Kristen McWilliam, plasma-keyboard MR #152)
The new Vietnamese calendar now shows the correct dates. (Trần Nam Tuấn, KDE Bugzilla #522099)
The new feature to show how much earlier or later a time zone is than your current one now correctly calculates the value for time zones with a half-hour offset that are earlier than your local time zone. Time is hard. (Michael Kohl, KDE Bugzilla #522037)
Forcing the use of the software pointer no longer makes it disappear when a window pushes a panel in "Dodge Windows" mode into its hidden state. (Xaver Hugl, KDE Bugzilla #521953)
The Mouse page in System Settings no longer shows layout glitches in X11. (Marco Martin, KDE Bugzilla #521992)
Text on the Networks widget's Details tab can no longer visually overflow when it's really long. (Manuel Alcaraz, KDE Bugzilla #522333)
Plasma 6.7.3
The "Kameleon" system service is now disabled by default, which prevents it from applying a color to your keyboard's backlit keys even if the feature to apply colors to RGB keyboard backlighting is disabled. The context here is that we added support for the Steam Machine's LED strip, and this also made it work for many keyboards, but exposed a pre-existing bug. (Oliver Beard, KDE Bugzilla #521793)
Spectacle no longer includes the tooltip showing image dimensions in the final screenshot if you accept a rectangular region by double-clicking it. (Noah Davis, KDE Bugzilla #513715)
Plasma 6.8
Fixed the most common crash in Plasma, which could happen once in a while when using multiple screens. (Marco Martin, KDE Bugzilla #500044)
Minimizing the window of an RDP client no longer stops the video stream. (Shouvik Kar, KDE Bugzilla #497765)
Frameworks 6.28
XWayland-using apps no longer start to behave in a couple of weird and quirky ways after XWayland itself crashes and restarts. (Vlad Zahorodnii, kwindowsystem MR #220)
Notable in performance & technical
Plasma 6.7.3
Fixed a recent performance regression that increased KWin's CPU usage on some Intel systems using atomic mode-setting. (Xaver Hugl, KDE Bugzilla #522075)
Plasma 6.8
Implemented support for version 1.6 of the Emulated Input system. (David Edmundson, kwin MR #9112)
KWin now internally only uses OpenGL ES, which ensures that it will always be working since everyone will be using it - at least until Vulkan support is farther along. OpenGL ES is necessary for some old GPUs and turns out to be sufficient for everything KWin needs anyway, so we don't anticipate any downsides from this change. (Xaver Hugl, kwin MR #9488)
How you can help
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.
Would you like to help put together this weekly report? Introduce yourself in the Matrix room and join the team!
Beyond that, you can help KDE by directly getting involved 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.
You can also help out by making a donation! This helps cover operational costs, salaries, travel expenses for contributors, and in general just keeps KDE bringing Free Software to the world.
To get a new Plasma feature or a bug fix mentioned here
Push a commit to the relevant merge request on invent.kde.org.
04 Jul 2026 12:00am GMT