22 Nov 2025
Planet KDE | English
This Week in Plasma: UI and performance improvements
Welcome to a new issue of This Week in Plasma!
This week there were many user interface and performance improvements - some quite consequential. So let's get right into it!
Notable New Features
Plasma 6.6.0
Windows can now be selectively excluded from screen recording! This can be invoked from the titlebar context menu, Task Manager context menu, and window rules. (Stanislav Aleksandrov, link)
Notable UI Improvements
Plasma 6.6.0
With a dark color scheme, the blur effect now produces a blur that's darker (ideally back to the level seen in Plasma 6.4) and also more vibrant in cases where there are bright colors behind it. People seemed to like this! But for those who don't, the saturation value of the blur effect is now user-configurable, so you can dial it in to your preferred level. (Vlad Zahorodnii, link 1, link 2, and link 3)

When clicking on grouped Task Manager icons to cycle through their windows, full-screen windows will no longer always be raised first. Now, windows will be raised in the order of their last use. (Grégori Mignerot, link)
Did a round of UI polishing on the portal remote control dialog to make it look better and read more naturally. (Nate Graham and Joshua Goins, link 1 link 2, link 3 and link 4)
When you open the Kickoff Application Launcher and your pointer happens to end up right on top of one of the items in the Favorites view, it won't be selected automatically. (Christoph Wolk, link)
The Kickoff Application Launcher widget now tries very hard to keep the first item of the search results view selected - at least until the point where you focus the list and start navigating to another item. (Christoph Wolk, link)
Discover now uses more user-friendly language when it's being used to find apps that can open a certain file type. (Taras Oleksy, link)
You're now far less likely to accidentally raise an unintended app when a notification happens to appear right underneath something you're dragging-and-dropping. (Kai Uwe Broulik, link)
KMenuEdit now lets you select multiple items at a time for faster deletion. (Alexander Wilms, link)
The QR code dialog invokable from the clipboard has been removed, and instead the QR code is shown inline in the widget. This makes it large enough to actually use and also reduces unnecessary code. (Fushan Wen, link)
Notable Bug Fixes
Plasma 6.5.3
Fixed a rare case where KWin could crash when the system wakes from sleep. (Xaver Hugl, link)
Worked around a QML compiler bug in Qt that made the power and session buttons in the Application Launcher widget overlap with the tab bar if you resized its popup. (Christoph Wolk, link)
Plasma 6.5.4
Fixed a regression in menu sizing that got accidentally backported to Plasma 6.5.3. All should be well in 6.5.4, and some distros have backported the fix already. (Akseli Lahtinen and Nate Graham, link)
Fixed a Plasma 6 regression that broke the ability to activate the System Tray's expanded items popup with a keyboard shortcut. (Cursor AI, operated by Mikhail Sidorenko, link)
Fixed a regression caused by a Qt change that broke the clipboard's Actions menu from being able to appear when the configuration dialog wasn't open. (Fushan Wen, link)
Fixed a bug that could make the Plasma panel's custom size chooser appear on the wrong screen. (Vlad Zahorodnii, link)
Fixed a bug that could make the clipboard contents get sent many times when it's being set programmatically in a portal-using app. (David Redondo, link)
Fixed a memory leak in Plasma's desktop. (Vlad Zahorodnii, link)
Fixed a memory leak in the clipboard Actions menu. (Fushan Wen, link)
KWin's zoom effect now saves its current zoom level a little bit after you change it, rather than at logout. This prevents a situation where the system is inappropriately zoomed in (or not zoomed in) after a KWin crash or power loss. (Ritchie Frodomar, link)
Fixed a bug that made the optional Textual List representation of multiple windows in the Task Manager widget fail to get focus when using medium focus stealing prevention. (David Redondo, link)
Plasma 6.6.0
Worked around a bug in some XWayland-using games that made it impossible type text into certain popups. (Xaver Hugl, link)
Clearing KRunner's search history now takes effect immediately, rather than only after KRunner was restarted. (Nate Graham, link)
With a very narrow display and a high scale factor, the buttons on the login, lock, and logout screens can no longer get cut off; now they wrap onto the next line. (Nate Graham, link)
Frameworks 6.21
Fixed a bug that could confuse KWallet - when being used as a Secret Service proxy for KeePassXC - into becoming convinced that it needed to create a new wallet. (Marco Martin, link)
Fixed two memory leaks affecting QML-based System Settings pages. (Vlad Zahorodnii, link 1 and link 2)
Other bug information of note:
- 4 very high priority Plasma bugs (Same as last week). Current list of bugs
- 34 15-minute Plasma bugs (Up from 31 last week). Current list of bugs
Notable in Performance & Technical
Plasma 6.5.3
Apps that use the Keyboard Shortcuts Portal to set shortcuts can now remove them in the same way. (David Redondo, link)
You can now use Spectacle's Active Window mode to take a screenshot of WINE windows. (Xaver Hugl, link)
Plasma 6.6.0
Made a major improvement to the smoothness of animations throughout Plasma and KWin for people using screens with a refresh rate higher than 60 Hz! (David Edmundson, link)
Reduced the amount of unnecessary work KWin does during its compositing pipeline. (Xaver Hugl, link)
When you delete a whole category's worth of shortcuts on System Settings' Shortcuts page, all the shortcuts get grayed out and cease to be interactive, and a warning message tells you they'll seen be deleted and gives you a chance to undo that before it happens. (Nate Graham, link)
Frameworks 6.21
KConfig now parses config files in a stream rather than opening them all at once, which allows it to notice early when a file is corrupted or improperly formatted. This prevents freezes in several places. (Méven Car, link 1, link 2, and link 3)
When using the Systemd integration functionality (which is on by default if Systemd is present), programs will no longer fail to launch while there are any environment variables beginning with a digit, as this is something Systemd doesn't support. (Christoph Cullmann, link)
How You Can Help
Donate to KDE's 2025 fundraiser! It really makes a big difference. Believe it or not, we've already hit out our €75k stretch goal and are €5k towards the final one. I'm just in awe of the generosity of the KDE community and userbase. Thank you all for helping KDE to grow and prosper!
If money is tight, you can help KDE by directly getting involved. 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.
To get a new Plasma feature or a bugfix mentioned here, feel free to push a commit to the relevant merge request on invent.kde.org.
22 Nov 2025 12:01am GMT
21 Nov 2025
Planet KDE | English
Web Review, Week 2025-47
Let's go for my web review for the week 2025-47.
In 1982, a physics joke gone wrong sparked the invention of the emoticon - Ars Technica
Tags: tech, history, culture
If you're wondering where emoticons and emojis are coming from, this is a nice little piece about that.
Screw it, I'm installing Linux
Tags: tech, linux, foss, gaming
Clearly something is brewing right now. We're seeing more and more people successfully switching.
https://www.theverge.com/tech/823337/switching-linux-gaming-desktop-cachyos
Lawmakers Want to Ban VPNs-And They Have No Idea What They're Doing
Tags: tech, vpn, privacy, law
This is totally misguided… Let's hope no one will succeed passing such dangerously stupid bills.
Learning with AI falls short compared to old-fashioned web search
Tags: tech, ai, machine-learning, gpt, learning, teaching
If there's one area where people should stay clear from LLMs, it's definitely when they want to learn a topic. That's one more study showing the knowledge you retain from LLMs briefs is shallower. The friction and the struggle to get to the information is a feature, our brain needs it to remember properly.
https://theconversation.com/learning-with-ai-falls-short-compared-to-old-fashioned-web-search-269760
The Psychogenic Machine: Simulating AI Psychosis, Delusion Reinforcement and Harm Enablement in Large Language Models
Tags: tech, ai, machine-learning, gpt, psychology, safety
The findings in this paper are chilling… especially considering what fragile people are doing with those chat bots.
https://arxiv.org/abs/2509.10970v1
Feeds, Feelings, and Focus: A Systematic Review and Meta-Analysis Examining the Cognitive and Mental Health Correlates of Short-Form Video Use
Tags: tech, social-media, cognition, psychology
Unsurprisingly the news ain't good on the front of social media and short form videos. Better stay clear of those.
https://psycnet.apa.org/fulltext/2026-89350-001.html
Do Not Put Your Site Behind Cloudflare if You Don't Need To
Tags: tech, cloud, decentralized, web
Friendly reminder following the Cloudflare downtime earlier this week.
https://huijzer.xyz/posts/123/do-not-put-your-site-behind-cloudflare-if-you-dont
Cloudflare outage on November 18, 2025
Tags: tech, cloud, complexity, safety, rust
Wondering what happened at Cloudflare? Here is their postmortem, this is an interesting read. Now for Rust developers… this is a good illustration of why you should stay clear from unwrap() in production code.
https://blog.cloudflare.com/18-november-2025-outage/
Needy Programs
Tags: tech, ux, notifications
Kind of ignore the security impact of the needed upgrades, but apart from this I largely agree. Most applications try to push more features in your face nowadays, unneeded notifications and all… this is frankly exhausting the users.
https://tonsky.me/blog/needy-programs/
I think nobody wants AI in Firefox, Mozilla
Tags: tech, browser, ai, machine-learning, gpt, mozilla
Looks like Mozilla is doing everything it can to alienate the current Firefox user base and to push forward its forks.
https://manualdousuario.net/en/mozilla-firefox-window-ai/
DeepMind's latest: An AI for handling mathematical proofs
Tags: tech, ai, machine-learning, mathematics, google
That's an interesting approach. Early days on this one, it clearly requires further work but it seems like the proper path for math related problems.
https://arstechnica.com/ai/2025/11/deepminds-latest-an-ai-for-handling-mathematical-proofs/
Production-Grade Container Deployment with Podman Quadlets
Tags: tech, systemd, containers, linux, system, podman
Podman is really a nice option for deploying containers nowadays.
https://blog.hofstede.it/production-grade-container-deployment-with-podman-quadlets/
Match it again Sam
Tags: tech, regex, rust
Nice alternative syntax to the good old regular expressions. Gives nice structure to it all. There's a Rust crate to try it out.
https://www.sminez.dev/match-it-again-sam/
10 Smart Performance Hacks For Faster Python Code
Tags: tech, python, performance
Some of this might sound obvious I guess. Still there are interesting lesser known nuggets proposed here.
https://blog.jetbrains.com/pycharm/2025/11/10-smart-performance-hacks-for-faster-python-code/
Floodfill algorithm in Python
Tags: tech, python, algorithm, graphics
This is a nice little algorithm and it shows how to approach it in Python while keeping it efficient in term of operations.
https://mathspp.com/blog/floodfill-algorithm-in-python
AMD vs. Intel: a Unicode benchmark
Tags: tech, amd, intel, hardware, simd, performance
Clearly AMD is now well above Intel in performance around AVX-512. This is somewhat unexpected.
https://lemire.me/blog/2025/11/16/amd-vs-intel-a-unicode-benchmark/
Memory is slow, Disk is fast
Tags: tech, memory, storage, performance, system
No, don't go assuming you can use disks instead of ram. This is not what it is about. It shows ways to get more out of your disks though. It's not something you always need, but sometimes it can be a worth endeavor.
https://www.bitflux.ai/blog/memory-is-slow-part2/
Compiler Options Hardening Guide for C and C++
Tags: tech, c++, security
Good list of hardening options indeed. That's a lot to deal with of course, let's hope this spreads and some defaults are changed to make it easier.
The problem with inferring from a function call operator is that there may be more than one
Tags: tech, c++, type-systems, safety
The type inference in C++ can indeed lead to this kind of traps. Need to be careful as usual.
https://devblogs.microsoft.com/oldnewthing/20251002-00/?p=111647
There's always going to be a way to not code error handling
Tags: tech, programming, safety, failure
Depending on the ecosystem it's more or less easy indeed. Let's remember that error handling is one of the hard problems to solve.
https://utcc.utoronto.ca/~cks/space/blog/programming/AlwaysUncodedErrorHandling
Disallow code usage with a custom clippy.toml
Tags: tech, rust, tools, quality
Didn't know about that clippy feature. This is neat, allows to precisely target some of your project rules.
https://www.schneems.com/2025/11/19/find-accidental-code-usage-with-a-custom-clippytoml/
The Geometry Behind Normal Maps
Tags: tech, 3d, graphics, shader
Struggling to understand tangent space and normal maps? This post does a good job to explain where this comes from.
https://www.shlom.dev/articles/geometry-behind-normal-maps/
Know why you don't like OOP
Tags: tech, object-oriented
I don't get why object oriented programming gets so much flack these days… It brings interesting tools and less interesting ones. Just pick and choose wisely like for any other paradigm.
https://zylinski.se/posts/know-why-you-dont-like-oop/
Ditch your (mut)ex, you deserve better
Tags: tech, multithreading, safety
If you're dealing with multithreading you should not turn to mutexes by default indeed. Consider higher level primitives and patterns first.
https://chrispenner.ca/posts/mutexes
Brownouts reveal system boundaries
Tags: tech, infrastructure, reliability, failure, resilience
Interesting point of view. Indeed, you probably want things to not be available 100% of the time. This forces you to see how resilient things really are.
https://jyn.dev/brownouts-reveal-system-boundaries/
Tech Leads in Scrum
Tags: tech, agile, scrum, tech-lead, leadership
Interesting move on the Scrum definitions to move from roles to accountabilities. The article does a good job explaining it but then falls back into talking about roles somehow. Regarding the tech leads indeed they can work in Scrum teams. Scrum don't talk about them simply because Scrum don't talk about technical skills.
https://www.patkua.com/blog/tech-leads-in-scrum/
How to Avoid Solo Product Leadership Failure with a Product Value Team
Tags: tech, agile, product-management
I wonder what the whole series will give. Anyway I very much agree with this first post. Too often projects have a single product manager and that's a problem.
Bye for now!
21 Nov 2025 10:46am GMT
Planet GNOME
Jakub Steiner: 12 months instead of 12 minutes
Hey Kids! Other than raving about GNOME.org being a static HTML, there's one more aspect I'd like to get back to in this writing exercise called a blog post.

I've recently come across an apalling genAI website for a project I hold deerly so I thought I'd give a glimpse on how we used to do things in the olden days. It is probably not going to be done this way anymore in the enshittified timeline we ended up in. The two options available these days are - a quickly generated slop website or no website at all, because privately owned social media is where it's at.
The wanna-be-catchy title of this post comes from the fact the website underwent numerous iterations (iterations is the core principle of good design) spanning over a year before we introduced the redesign.
So how did we end up with a 3D model of a laptop for the hero image on the GNOME website, rather than something generated in a couple of seconds and a small town worth of drinking water or a simple SVG illustration?
The hero image is static now, but used to be a scroll based animation at the early days. It could have become a simple vector style illustration, but I really enjoy the light interaction of the screen and the laptop, especially between the light and dark variants. Toggling dark mode has been my favorite fidget spinner.
Creating light/dark variants is a bit tedious to do manually every release, but automating still a bit too hard to pull off (the taking screenshots of a nightly OS bit). There's also the fun of picking a theme for the screenshot rather than doing the same thing over and over. Doing the screenshooting manually meant automating the rest, as a 6 month cycle is enough time to forget how things are done. The process is held together with duct tape, I mean a python script, that renders the website image assets from the few screenshots captured using GNOME OS running inside Boxes. Two great invisible things made by amazing individuals that could go away in an instant and that thought gives me a dose of anxiety.

This does take a minute to render on a laptop (CPU only Cycles), but is a matter of a single invocation and a git commit. So far it has survived a couple of Blender releases, so fingers crossed for the future.
Sophie has recently been looking into translations, so we might reconsider that 3D approach if translated screenshots become viable (and have them contained in an SVG similar to how os.gnome.org is done). So far the 3D hero has always been in sync with the release, unlike in our Wordpress days. Fingers crossed.
21 Nov 2025 7:44am GMT
This Week in GNOME: #226 Exporting Events
Update on what happened across the GNOME project in the week from November 14 to November 21.
GNOME Core Apps and Libraries
Calendar ↗
A simple calendar application.
Hari Rana | TheEvilSkeleton (any/all) 🇮🇳 🏳️⚧️ says
Thanks to FineFindus, who previously worked on exporting events as
.icsfiles, GNOME Calendar can now export calendars as.icsfiles, courtesy of merge request !615! This will be available in GNOME 50.
Hari Rana | TheEvilSkeleton (any/all) 🇮🇳 🏳️⚧️ says
After two long and painful years, several design iterations, and more than 50 rebases later, we finally merged the infamous, trauma-inducing merge request !362 on GNOME Calendar. This changes the entire design of the quick-add popover by merging both pages into one and updating the style to conform better with modern GNOME designs. Additionally, it remodels the way the popover retrieves and displays calendars, reducing 120 lines of code.
The calendars list in the quick-add popover has undergone accessibility improvements, providing a better experience for assistive technologies and keyboard users. Specifically: tabbing from outside the list will focus the selected calendar in the list; tabbing from inside the list will skip the entire list; arrow keys automatically select the focused calendar; and finally, assistive technologies now inform the user of the checked/selected state.
Admittedly, the quick-add popover is currently unreachable via keyboard because we lack the resources to implement keyboard focus for month and week cells. We are currently trying to address this issue in merge request !564, and hope to get it merged for GNOME 50, but it's a significant undertaking for a single unpaid developer. If it is not too much trouble, I would really appreciate some donations, to keep me motivated to improve accessibility throughout GNOME and sustain myself: https://tesk.page/#donate
This merge request allowed us to close 4 issues, and will be available in GNOME 50.
Files ↗
Providing a simple and integrated way of managing your files and browsing your file system.
Peter Eisenmann says
Files landed two big changes by Khalid Abu Shawarib this week.
The first change adds a bunch of tests, bringing the total coverage of the huge code base close to 30%. This will prevent regressions in previously uncovered areas such as bookmarking or creating files.
The second change is more noticeable as the way thumbnails are loaded was largely rewritten to finally make full use of GTK4's recycling views. It took a lot of code detangling to get thumbnails to load asynchronously, but the result is a great speedup, making thumbnails show as fast as never before. 🚀
Attached is a comparison of reloading a folder before and after the change
Libadwaita ↗
Building blocks for modern GNOME apps using GTK4.
Alice (she/her) 🏳️⚧️🏳️🌈 announces
as of today, libadwaita has support for the new reduced motion preference, both supporting the
@media (prefers-reduced-motion: reduce)query from CSS, and using simple crossfade transitions where appropriate (e.g. inAdwDialog,AdwNavigationViewandAdwTabOverview
Alice (she/her) 🏳️⚧️🏳️🌈 reports
libadwaita has deprecated the
style-dark.css,style-hc.cssandstyle-hc-dark.cssresources thatAdwApplicationautomatically loads. They still work, but will be removed in 2.0. Applications are recommended to switch tostyle.cssand media queries for dark and high contrast styles
GTK ↗
Cross-platform widget toolkit for creating graphical user interfaces.
Matthias Clasen reports
This weeks GTK 4.21.2 release includes initial support for the CSS backdrop-filter property. The GSK APIs enabling this are new copy/paste and composite render nodes, which allow flexible reuse of the 'background' at any point in the scene graph. We are looking forward to your experiments with this!
GLib ↗
The low-level core library that forms the basis for projects such as GTK and GNOME.
Philip Withnall says
Luca Bacci has dug into an intermittent output buffering issue with GLib on Windows, which should fix some CI issues and opt various GLib utilities into more modern features on Windows - https://gitlab.gnome.org/GNOME/glib/-/merge_requests/4788
Third Party Projects
Alain announces
Planify 4.16.0 - Natural dates, smoother flows, and smarter task handling
This week, Planify released version 4.16.0, bringing several improvements that make task management faster, more intuitive, and more predictable on GNOME.
The highlight of this release is natural language date parsing, now enabled by default in Quick Add. You can type things like "tomorrow 3pm", "next Monday", "25/12/2024", or "ahora", and Planify will automatically convert it into a proper scheduled date. Spanish support has also been added, including expressions like mañana, pasado mañana, próxima semana, and more.
Keyboard navigation got a boost too:
- Ctrl + D now opens the date picker instantly
- Ctrl + K toggles "Keep adding" mode
- And several shortcuts were cleaned up for more predictable behavior
Planify also adds label management in the task context menu, making it easier to add or remove labels without opening the full editor.
For calendar users, event items now open a richer details popover, with automatic detection of Google Meet and Microsoft Teams links, making online meetings just one click away.
As always, translations, bug fixes, and general UI refinements round out the update.
Planify 4.16.0 is available now on Flathub
Jan-Willem reports
This week I released Java-GI version 0.13.0, a Java language binding for GNOME and other libraries that support GObject-Introspection, based on OpenJDK's new FFM functionality. Some of the highlights in this release are:
- Bindings for LibRsvg, GstApp (for GStreamer) and LibSecret have been added
- The website for Java-GI has its own domain name now: java-gi.org, and this is also used in all module- and package names
- Thanks to GObject-Introspection's extensive testsuite, I've implemented over 900 testcases to test the Java bindings, and fixed many bugs along the way.
I hope that Java-GI will help Java (or Kotlin, Scala, Clojure, …) developers to create awesome new GNOME apps!
Quadrapassel ↗
Fit falling blocks together.
Will Warner says
Quadrapassel 49.2 is out! Here is whats new:
- Updated translations: Ukrainian, Russian, Brazilian Portuguese, Chinese (China), Slovenian, Georgian
- Made the 'P' key pause the game
- Replaced the user help docs with a 'Game Rules' dialog
- Stopped the menu button taking focus
- Fixed a bug where the game's score would not be recorded when the app was quit
- Added total rows and level information to scores
Phosh ↗
A pure wayland shell for mobile devices.
Guido announces
Phosh 0.51.0 is out:
There's a new quick setting that allows to toggle location services on/off and the ☕ quick setting can now disable itself after a certain amount of time (check here on how to configure the intervals). We also add added a toggle to enable automatic brightness from the top panel and when enabled the brightness slider acts as an offset to the current brightness value.
The minimum brightness of the 🔦 brightness slider can now be configured via
hwdb/udevallowing one go to lower values then the former hard coded 40%. The configuration is maintained in gmobile.If you're using Phosh on a Google Pixel 3A XL you can now enjoy haptic feedback when typing on the on screen keyboard (like users on other devices) and creating notch configurations for new devices should now be simpler as our tooling can take screen shots of the resulting UI element layout in Phosh for you.
There's more, see the full details at here
GNOME Websites
Emmanuele Bassi says
After a long time, the new user help website is now available and up to date with the latest content. The new help website replaces the static snapshot of the old library-web project, but it is still a work in progress, and contributions are welcome. Just like in the past, the content is sourced from each application, as well as from the gnome-user-docs repository. If you want to improve the documentation of GNOME components and core applications, make sure to join the #docs:gnome.org room.
Shell Extensions
Pedro Sader Azevedo announces
Foresight is a GNOME Shell extension that automatically enters the activities view on empty workspaces, making it faster to open apps and start using your computer!
This week, it gained support for GNOME 49, courtesy of gabrielpalassi. This is the second time in a row that Foresight gained support for a newer GNOME Shell version thanks to community contributions, which I'm immensely grateful for. I'm also very grateful to Just Perfection, who single-handedly holds so many responsibilities in the GNOME Shell extensions ecosystem.
The latest version of Foresight is available at EGO: https://extensions.gnome.org/extension/7901/foresight/
Happy foretelling 🔮👣
Miscellaneous
revisto reports
The Persian GNOME community was featured at the Debian 13 Release Party at Sharif University in Iran. The talk introduced GNOME, explained how the Persian community came together, highlighted its contributions (GTK/libadwaita apps, GNOME Circle involvement, translations, and fa.gnome.org), and invited newcomers to participate and contribute.
Recording available (Farsi): https://youtu.be/UPmNNygNQuc
GNOME Foundation
ramcq reports
The GNOME Foundation board has shared details about our recently-approved balanced budget for 2024-25, as well as a note to share our thanks to Karen Sandler, as she has decided to step down from the board.
That's all for this week!
See you next week, and be sure to stop by #thisweek:gnome.org with updates on your own projects!
21 Nov 2025 12:00am GMT
Planet KDE | English
FAQs
Table of Contents
- Import Tool
- Run Time Issues
- Thumbnail Generation Fails on Large Files
- Why are my RAW images so dark?
- Some Properties in Sidebar are Unknown or Unavailable
- How can I inform you about bugs and wishes?
- What can I do if digiKam always crashes when doing something?
- How to deal with UTF-8 encoding issues?
- ExifTool not Found at Startup
- Database
- Customizations
- Workflow
- Contribute
🟠 Skill Level: INTERMEDIATE
21 Nov 2025 12:00am GMT
19 Nov 2025
Planet GNOME
Philip Withnall: Parental controls screen time limits backend
Ignacy blogged recently about all the parts of the user interface for screen time limits in parental controls in GNOME. He's been doing great work pulling that all together, while I have been working on the backend side of things. We're aiming for this screen time limits feature to appear in GNOME 50.
High level design
There's a design document which is the canonical reference for the design of the backend, but to summarise it at a high level: there's a stateless daemon, malcontent-timerd, which receives logs of the child user's time usage of the computer from gnome-shell in the child's session. For example, when the child stops using the computer, gnome-shell will send the start and end times of the most recent period of usage. The daemon deduplicates/merges and stores them. The parent has set a screen time policy for the child, which says how much time they're allowed on the computer per day (for example, 4h at most; or only allowed to use the computer between 15:00 and 17:00). The policy is stored against the child user in accounts-service.
malcontent-timerd applies this policy to the child's usage information to calculate an 'estimated end time' for the child's current session, assuming that they continue to use the computer without taking a break. If they stop or take a break, their usage - and hence the estimated end time - is updated.
The child's gnome-shell is notified of changes to the estimated end time and, once it's reached, locks the child's session (with appropriate advance warning).
Meanwhile, the parent can query the child's computer usage via a separate API to malcontent-timerd. This returns the child's total screen time usage per day, which allows the usage chart to be shown to the parent in the parental controls user interface (malcontent-control). The daemon imposes access controls on which users can query for usage information. Because the daemon can be accessed by the child and by the parent, and needs to be write-only for the child and read-only for the parent, it has to be a system daemon.
There's a third API flow which allows the child to request an extension to their screen time for the day, but that's perhaps a topic for a separate post.
So, at its core, malcontent-timerd is a time range store with some policy and a couple of D-Bus interfaces built on top.
Per-app time limits
Currently it only supports time limits for login sessions, but it is built in such a way that adding support for time limits for specific apps would be straightforward to add to malcontent-timerd in future. The main work required for that would be in gnome-shell - recording usage on a per-app basis (for apps which have limits applied), and enforcing those limits by freezing or blocking access to apps once the time runs out. There are some interesting user experience questions to think about there before anyone can implement it - how do you prevent a user from continuing to use an app without risking data loss (for example, by killing it)? How do you unambiguously remind the user they're running out of time for a specific app? Can we reliably find all the windows associated with a certain app? Can we reliably instruct apps to save their state when they run out of time, to reduce the risk of data loss? There are a number of bits of architecture we'd need to get in place before per-app limits could happen.
Wrapping up
As it stands though, the grant funding for parental controls is coming to an end. Ignacy will be continuing to work on the UI for some more weeks, but my time on it is basically up. With the funding, we've managed to implement digital wellbeing (screen time limits and break reminders for adults) including a whole UI for it in gnome-control-center and a fairly complex state machine for tracking your usage in gnome-shell; a refreshed UI for parental controls; parental controls screen time limits as described above; the backend for web filtering (but more on that in a future post); and everything is structured so that the extra features we want in future should bolt on nicely.
While the features may be simple to describe, the implementation spans four projects, two buses, contains three new system daemons, two new system data stores, and three fairly unique new widgets. It's tackled all sorts of interesting user design questions (and continues to do so). It's fully documented, has some unit tests (but not as many as I'd like), and can be integration tested using sysexts. The new widgets are localisable, accessible, and work in dark and light mode. There are even man pages. I'm quite pleased with how it's all come together.
It's been a team effort from a lot of people! Code, design, input and review (in no particular order): Ignacy, Allan, Sam, Florian, Sebastian, Matthijs, Felipe, Rob. Thank you Endless for the grant and the original work on parental controls. Administratively, thank you to everyone at the GNOME Foundation for handling the grant and paperwork; and thank you to the freedesktop.org admins for providing project hosting for malcontent!
19 Nov 2025 11:39pm GMT
17 Nov 2025
planet.freedesktop.org
Lennart Poettering: Mastodon Stories for systemd v258
Already on Sep 17 we released systemd v258 into the wild.
In the weeks leading up to that release I have posted a series of serieses of posts to Mastodon about key new features in this release, under the #systemd258 hash tag. It was my intention to post a link list here on this blog right after completing that series, but I simply forgot! Hence, in case you aren't using Mastodon, but would like to read up, here's a list of all 37 posts:
- Post #1: systemctl start -v
- Post #2: Home areas
- Post #3: systemd-resolved delegate zones
- Post #4: Foreign UID range
- Post #5: /etc/hostname ??? wildcards
- Post #6: Quota on /tmp/
- Post #7: ConcurretnySoftMax= + ConcurrencyHardMax=
- Post #8: Product UUID in ConditionHost=
- Post #9: Context OSC terminal sequences
- Post #10: uki-url Boot Loader Spec Type #1 fields
- Post #11: rd.break= boot breakpoints
- Post #12: Factory Reset Rework
- Post #13: systemd-resolved DNS Configuration Change IPC Subscription API
- Post #14: io.systemd.boot-entries.extra= SMBIOS Type #11 Key
- Post #15: Bring Your Own Firmware
- Post #16: userdb record aliases
- Post #17: systemd-validatefs and its xattrs
- Post #18: Offline Signing of Artifacts
- Post #19: PAMName= in services hooked up to ask-password protocol
- Post #20: x-systemd.graceful-option= mount option
- Post #21: systemd-userdb-load-credentials.service
- Post #22: systemd-vmspawn --grow-image=a
- Post #23: systemd-notify --fork
- Post #24: $TERM auto-discovery
- Post #25: Rebooting/Powering off systemd-nspawn containers via hotkey
- Post #26: ExecStart= | modifier
- Post #27: systemctl reload reloads confexts
- Post #28: Server side userdb filtering
- Post #29: Quota on StateDirectory= and friends
- Post #30: systemd-analyze unit-shell
- Post #31: /etc/issue.d/ drop-in for AF_VSOCK CID
- Post #32: fsverity in systemd-repart
- Post #33: AcceptFileDescriptor= + PassPIDFD=
- Post #34: Tab completion in interactive systemd-firstboot
- Post #35: rd.systemd.pull= kernel command line option/Boot into tarball
- Post #36: ConditionKernelModuleLoaded=
- Post #37: systemd-analyze chid
- Post #38: homectl list-signing-keys/get-signing-key/add-signing-key/remove-signing-key
- Post #39: DDI Image Filters
- Post #40: Android USB Debugging udev rules
- Post #41: systemd-vmspawn's --smbios11= switch
- Post #42: $MAINPIDFDID + $MANAGERPIDFDID
- Post #43: $DEBUG_INVOCATION=1 Respected by all systemd services
- Post #44: LoaderDeviceURL EFI Variable and systemd.pull='s origin kernel command line switch
- Post #45: cgroupv1 removal
- Post #46: ProtectHostname=private
- Post #47: homectl adopt + homectl register
- Post #48: systemd-machined Varlink APIs
- Post #49: DeferTrigger and "lenient" job mode
- Post #50: Automatic Removal of foreign UID owned delegate subgroups in the per-user service manager
- Post #51: Per-user ask-password protocol
- Post #52: PrivateUsers=full
- Post #53: LoadCredentialEncrypted= in the per-user service manager
- Post #54: dissect_image builtin in systemd-udevd
- Post #55: BPF Delegation via Tokens
I intend to do a similar series of serieses of posts for the next systemd release (v259), hence if you haven't left tech Twitter for Mastodon yet, now is the opportunity.
We intend to shorten the release cycle a bit for the future, and in fact managed to tag v259-rc1 already yesterday, just 2 months after v258. Hence, my series for v259 will begin soon, under the #systemd259 hash tag.
In case you are interested, here is the corresponding blog story for systemd v257, and here for v256.
17 Nov 2025 11:00pm GMT
Rodrigo Siqueira: XDC 2025
It has been a long time since I published any update in this space. Since this was a year of colossal changes for me, maybe it is also time for me to make something different with this blog and publish something just for a change - why not start talking about XDC 2025?
This year, I attended XDC 2025 in Vienna as an Igalia developer. I was thrilled to see some faces from people I worked with in the past and people I'm working with now. I had a chance to hang out with some folks I worked with at AMD (Harry, Alex, Leo, Christian, Shashank, and Pierre), many Igalians (Žan, Job, Ricardo, Paulo, Tvrtko, and many others), and finally some developers from Valve. In particular, I met Tímur in person for the first time, even though we have been talking for months about GPU recovery. Speaking of GPU recovery, we held a workshop on this topic together.
The workshop was packed with developers from different companies, which was nice because it added different angles on this topic. We began our discussion by focusing on the topic of job resubmission. Christian began sharing a brief history of how the AMDGPU driver started handling resubmission and the associated issues. After learning from erstwhile experience, amdgpu ended up adopting the following approach:
- When a job cause a hang, call driver specific handler.
- Stop the scheduler.
- Copy all jobs from the ring buffer, minus the job that caused the issue, to a temporary ring.
- Reset the ring buffer.
- Copy back the other jobs to the ring buffer.
- Resume the scheduler.
Below, you can see one crucial series associated with amdgpu recovery implementation:
The next topic was a discussion around the replacement of drm_sched_resubmit_jobs() since this function became deprecated. Just a few drivers still use this function, and they need a replacement for that. Some ideas were floating around to extract part of the specific implementation from some drivers into a generic function. The next day, Philipp Stanner continued to discuss this topic in his workshop, DRM GPU Scheduler.
Another crucial topic discussed was improving GPU reset debuggability to narrow down which operations cause the hang (keep in mind that GPU recovery is a medicine, not the cure to the problem). Intel developers shared their strategy for dealing with this by obtaining hints from userspace, which helped them provide a better set of information to append to the devcoredump. AMD could adopt this alongside dumping the IB data into the devcoredump (I am already investigating this).
Finally, we discussed strategies to avoid hang issues regressions. In summary, we have two lines of defense:
- IGT: At the IGT level, we can have more tests that insert malicious instructions into the ring buffer, forcing the driver into an invalid state and triggering the recovery process.
- HangTest suite: HangTest suite is a tool that simulates some potential hangs using Vulkan. Some tests are already available in this suite, but we should explore more creative combinations for trying to trigger hangs.
This year, as always, XDC was super cool, packed with many engaging presentations which I highly recommend everyone check out. If you are interested, check the schedule and the presentation recordings available on the X.Org Foundation Youtube page. Anyway, I hope this blog post marks the inauguration of a new era for this site, where I will start posting more content ranging from updates to tutorials. See you soon.
17 Nov 2025 12:00am GMT
15 Nov 2025
planet.freedesktop.org
Simon Ser: Status update, November 2025
Hi!
This month a lot of new features have added to the Goguma mobile IRC client. Hubert Hirtz has implemented drafts so that unsent text gets saved and network disconnections don't disrupt users typing a message. He also enabled replying to one's own messages, changed the appearance of short messages containing only emoji, upgraded our emoji library to Unicode version 16, fixed some linkifier bugs and added unit tests.

Markus Cisler has added a new option in the message menu to show a user's profile. I've added an on-disk cache for images (with our own implementation, because the widely used cached_network_image package is heavyweight). I've been working on displaying network icons and blocking users, but that work is not finished yet. I've also contributed some maintenance fixes for our webcrypto.dart dependency (toolkit upgrades and CI fixes).
The soju IRC bouncer has also got some love this month. delthas has contributed support for labeled-response for soju clients, allowing more reliable matching of server replies with client commands. I've introduced a new icon directive to configure an image representing the bouncer. soju v0.10.0 has been released, followed by soju v0.10.1 including bug fixes from Karel Balej and Taavi Väänänen.
In Wayland news, wlroots v0.19.2 and v0.18.3 have been released thanks to Simon Zeni. I've added support for the color-representation protocol for the Vulkan renderer, allowing clients to configure the color encoding and range for YCbCr content. Félix Poisot has been hard at work with more color management patches: screen default color primaries are now extracted from the EDID and exposed to compositors, the cursor is now correctly converted to the output's primaries and transfer function, and some work-in-progress patches switch the renderer API from a descriptive model to a prescriptive model.
go-webdav v0.7.0 has been released with a patch from prasad83 to play well with Thunderbird. I've updated clients to make multi-status errors non-fatal, returning partial data alongside the error.
I've released drm_info v2.9.0 with improvements mentioned in the previous status update plus support for the TILE connector property.
See you next month!
15 Nov 2025 10:00pm GMT





