<?xml version="1.0" encoding="utf-8" standalone="yes"?><rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom"><channel><title>Jakob Petsovits on KDE Blogs</title><link>https://blogs.kde.org/authors/jpetso/</link><description>Recent content in Jakob Petsovits on KDE Blogs</description><generator>Hugo -- gohugo.io</generator><language>en</language><lastBuildDate>Sun, 03 May 2026 12:54:54 +0200</lastBuildDate><atom:link href="https://blogs.kde.org/authors/jpetso/index.xml" rel="self" type="application/rss+xml"/><item><title>Gestures in Graz, and beyond</title><link>https://blogs.kde.org/2026/05/03/gestures-in-graz-and-beyond/</link><pubDate>Sun, 03 May 2026 09:55:00 +0000</pubDate><author>Jakob Petsovits</author><guid>https://blogs.kde.org/2026/05/03/gestures-in-graz-and-beyond/</guid><description>&lt;p&gt;KDE's Mega Sprint 2026 in Graz brought a group of about 20 KDE contributors together in early April, to discuss technical challenges, make decisions, and get stuff done. With travel support from KDE e.V. (thanks to &lt;a href="https://kde.org/donate/"&gt;your donations&lt;/a&gt;), I was able to join the group there.&lt;/p&gt;
&lt;p&gt;Other blogs have reported on their experiences of what happened in Graz: &lt;a href="https://mxdarkwater.com/2026/04/10/kde-in-graz/"&gt;Kieryn Darkwater&lt;/a&gt;, &lt;a href="https://tsdgeos.blogspot.com/2026/04/a-week-in-graz-kde-megasprint-and.html"&gt;Albert Astals Cid&lt;/a&gt;, &lt;a href="https://merritt.codes/blog/2026/04/15/2026/_kde_mega_sprint"&gt;Kristen McWilliam&lt;/a&gt;, &lt;a href="https://www.volkerkrause.eu/2026/04/18/kde-sprint-linuxtage-graz-2026.html"&gt;Volker Krause&lt;/a&gt;, and &lt;a href="https://nmariusp.blogspot.com/2026/04/kde-mega-sprint-2026-graz.html"&gt;Raresh Rus&lt;/a&gt;. A &lt;a href="https://community.kde.org/Sprints/MegaSprint/2026"&gt;large variety of topics&lt;/a&gt; were on the agenda, people were wearing multiple hats to help each other out.&lt;/p&gt;
&lt;p&gt;I, on the other hand, went to Graz with one sole purpose: figure out the best way to merge gesture customization.&lt;/p&gt;
&lt;h2 id="dude-whats-taking-you-so-long"&gt;Dude, what's taking you so long&lt;/h2&gt;
&lt;p&gt;Quick recap. Since &lt;a href="https://blogs.kde.org/2025/05/14/input-handling-in-spring-2025/#funding-for-input-handling-improvements"&gt;NLnet approved a grant&lt;/a&gt; last year, we've &lt;a href="https://community.kde.org/Goals/Input/Triggers_and_Actions"&gt;published requirements&lt;/a&gt;, &lt;a href="https://invent.kde.org/teams/vdg/issues/-/issues/99"&gt;designed settings UIs&lt;/a&gt;, &lt;a href="https://invent.kde.org/plasma/kwin/-/issues/298"&gt;proposed config file formats&lt;/a&gt;, &lt;a href="https://invent.kde.org/plasma/kwin/-/merge_requests/7620"&gt;ported my earlier mouse gesture prototype to KWin&lt;/a&gt;, and &lt;a href="https://blogs.kde.org/2025/12/08/i-didnt-think-id-be-at-akademy-2025/"&gt;presented at Akademy 2025&lt;/a&gt;. Then I got injured for a while, hit a slump through the fall and winter, and didn't make much progress until more recently.&lt;/p&gt;
&lt;p&gt;Meanwhile, as an actual Plasma user, you have benefited from exactly none of this prep work. For example, a representative sentiment from the comment section of Brodie Robertson's recent &lt;a href="https://www.youtube.com/watch?v=npKb9UAxDxQ"&gt;Plasma 6.7 upcoming features video&lt;/a&gt;:&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;Yet again it looks like configurable touchpad gestures have slipped....&lt;/p&gt;&lt;/blockquote&gt;
&lt;p&gt;To be fair, we haven't actually promised any particular Plasma release for this to land in. But I get it. It's been weighing on me probably harder than it's been weighing on you. So I finally emerged from the slump with a set of experimental patches that allowed real-time (&amp;quot;one to one&amp;quot;) gestures like Overview to be reassigned to a different gesture via config file options.&lt;/p&gt;
&lt;h2 id="quick-architectural-primer"&gt;Quick architectural primer&lt;/h2&gt;
&lt;p&gt;There are several KDE components that work together to handle keyboard shortcuts:&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;KGlobalAccel&lt;/strong&gt;: This KDE Framework is used by an app or desktop component to register actions and their preferred global shortcuts. KGlobalAccel doesn't actually do much by itself, it just sends requests to a background service (via D-Bus) and tells the app what shortcut actually got assigned for each action. Then it just waits for a signal from the background service that the shortcut was pressed and the action should be performed.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;KGlobalAccelD&lt;/strong&gt;: This is the background service! Part of any Plasma desktop. It listens for global shortcut requests from apps, looks for additional shortcuts in &lt;code&gt;*.desktop&lt;/code&gt; files, and reads from and writes to &lt;code&gt;~/.config/kglobalshortcutsrc&lt;/code&gt; to manage shortcut assignments. It can check if a given key combination will trigger a registered action. If it does, it tells the corresponding app to perform the action. On Wayland, KGlobalAccelD is embedded into KWin, giving KWin access to functionality that isn't available over D-Bus.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;KWin&lt;/strong&gt;: Plasma's compositor which we all know and love. It manages windows and puts their contents on screen, but it also has exclusive access to libinput on Wayland. So any key presses, mouse clicks, touch taps, and pointer movement will go through KWin. Most of these just get relayed to the current app. But some of them are intercepted. For global shortcuts, KWin asks its KGlobalAccelD service to check if it should eat up the shortcut and fire a global shortcut instead of sending it to the currently focused app.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;System Settings / &amp;quot;Shortcuts&amp;quot; page&lt;/strong&gt;: An independent app that asks the KGlobalAccelD service for all components with registered shortcut actions. If the user changes a shortcut assignment, it tells the KGlobalAccelD service about it. As a result, KGlobalAccelD notifies the app that its shortcut has changed.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;XDG Desktop Portal KDE&lt;/strong&gt;: Only tangentially involved. It implements the &lt;a href="https://flatpak.github.io/xdg-desktop-portal/docs/doc-org.freedesktop.portal.GlobalShortcuts.html#org-freedesktop-portal-globalshortcuts-bindshortcuts"&gt;Global Shortcuts portal&lt;/a&gt;, so that any app can register global shortcuts, even if they aren't using KDE Frameworks. All it does is to translate an app's portal requests to requests for KGlobalAccelD.&lt;/p&gt;
&lt;p&gt;The consensus is that gestures are much like keyboard shortcuts, so gesture configuration should be implemented in similar ways, using the same components. There are important differences of course. How to deal with those isn't quite trivial. That's where sprint discussions come in.&lt;/p&gt;
&lt;h2 id="back-to-graz"&gt;Back to Graz&lt;/h2&gt;
&lt;p&gt;Having a functional prototype is a good start, but it's still a couple of steps removed from getting it merged into Plasma. I arrived with a number of technical questions to hash out the exact plan and get agreement. All the minutious details can be found &lt;a href="https://community.kde.org/Sprints/MegaSprint/2026/Notes#Gestures"&gt;in the sprint notes wiki page&lt;/a&gt;, but the short version is that the implementation plans became very clear. There were three breakthroughs in particular:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;We don't need to expose gesture details through KGlobalAccel: System Settings can link against KGlobalAccelD directly, so we can put the new trigger class in there without worrying about backwards compatiblility for apps.&lt;/li&gt;
&lt;li&gt;Natalie, Nate, Kristen and I sat down for a long UX design session, improving on our previous UX proposal together.&lt;/li&gt;
&lt;li&gt;Nicolas Fella provided wise advice on config syntax, leading to a better trade-off between readability, clean code, and migration concerns.&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;Xaver Hugl deserves a special mention, he was generous with all the other technical questions that I kept pestering him about.&lt;/p&gt;
&lt;p&gt;Of course I also got involved in a few other discussions, as well as daily dinner outings. It's a good group. But you've read about this on other blogs already, so I won't bore you except with a few more pictures.&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/05/03/gestures-in-graz-and-beyond/2026-04-10-project-room.jpg" alt="Proof I was there" lazy class="rounded"&gt;
 &lt;span class="d-block text-center mt-2"&gt;Proof I was there&lt;/span&gt;
 &lt;/div&gt;
 &lt;div class="swiper-slide"&gt;
 &lt;img src="https://blogs.kde.org/2026/05/03/gestures-in-graz-and-beyond/2026-04-07-konqi.jpg" alt="I bought an amigurumi Konqi" lazy class="rounded"&gt;
 &lt;span class="d-block text-center mt-2"&gt;I bought an amigurumi Konqi&lt;/span&gt;
 &lt;/div&gt;
 &lt;div class="swiper-slide"&gt;
 &lt;img src="https://blogs.kde.org/2026/05/03/gestures-in-graz-and-beyond/2026-04-07-styrian-food.jpg" alt="One of many food outings" lazy class="rounded"&gt;
 &lt;span class="d-block text-center mt-2"&gt;One of many food outings&lt;/span&gt;
 &lt;/div&gt;
 &lt;div class="swiper-slide"&gt;
 &lt;img src="https://blogs.kde.org/2026/05/03/gestures-in-graz-and-beyond/2026-04-10-buschenschank-mountain.jpg" alt="Walking to a rustic restaurant on a hill" lazy class="rounded"&gt;
 &lt;span class="d-block text-center mt-2"&gt;Walking to a rustic restaurant on a hill&lt;/span&gt;
 &lt;/div&gt;
 &lt;div class="swiper-slide"&gt;
 &lt;img src="https://blogs.kde.org/2026/05/03/gestures-in-graz-and-beyond/2026-04-10-buschenschank-sattler.jpg" alt="Snackies" lazy class="rounded"&gt;
 &lt;span class="d-block text-center mt-2"&gt;Snackies&lt;/span&gt;
 &lt;/div&gt;
 &lt;div class="swiper-slide"&gt;
 &lt;img src="https://blogs.kde.org/2026/05/03/gestures-in-graz-and-beyond/2026-04-11-konqi.jpg" alt="Konqi at Linuxtage Graz" lazy class="rounded"&gt;
 &lt;span class="d-block text-center mt-2"&gt;Konqi at Linuxtage Graz&lt;/span&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;I spent the remainder of April improving my previous patches. The result is a series of MRs that are finally ready for code review by KWin and KF6 maintainers (&lt;a href="https://invent.kde.org/frameworks/kglobalaccel/-/merge_requests/137"&gt;1&lt;/a&gt;, &lt;a href="https://invent.kde.org/plasma/kglobalacceld/-/merge_requests/95"&gt;2&lt;/a&gt;, &lt;a href="https://invent.kde.org/plasma/kwin/-/merge_requests/9100"&gt;3&lt;/a&gt;, &lt;a href="https://invent.kde.org/plasma/kglobalacceld/-/merge_requests/96"&gt;4&lt;/a&gt;, &lt;a href="https://invent.kde.org/plasma/kwin/-/merge_requests/9062"&gt;5&lt;/a&gt;). This will allow assigning touchpad and touchscreen gestures for global actions by editing the &lt;code&gt;kglobalshortcutsrc&lt;/code&gt; config file. Schedules were tight, so this didn't make the cut for Plasma 6.7 anymore. Let's see if we can get it into 6.8 though.&lt;/p&gt;
&lt;p&gt;Based on this work, my work-in-progress changes to support &lt;del&gt;mouse gestures&lt;/del&gt; &lt;del&gt;stroke gestures&lt;/del&gt; line shape gestures have been improved as well (&lt;a href="https://invent.kde.org/plasma/kglobalacceld/-/merge_requests/97"&gt;1&lt;/a&gt;, &lt;a href="https://invent.kde.org/plasma/kwin/-/merge_requests/7620"&gt;2&lt;/a&gt;). Autotests and more code polish are needed before this can go into code review, but it's now quite functional: path simplification, shape recognition, action configuration, and a neat little visualization effect are all in place.&lt;/p&gt;
&lt;h2 id="other-recent-input-highlights"&gt;Other recent input highlights&lt;/h2&gt;
&lt;p&gt;Plasma Keyboard was also heavily discussed in Graz, spearheaded by Kristen who put some serious polishing work into it. Kristen introduced a &lt;a href="https://blogs.kde.org/2026/03/14/this-week-in-plasma-press-and-hold-for-alternative-characters/"&gt;long-press diacritic selection pop-up&lt;/a&gt; for Plasma 6.7, a killer feature in my opinion. Meanwhile, on a different continent, Devin Lin has been hard at work to prepare an architectural overhaul of Plasma Keyboard, which would facilitate much-requested improvements to the on-screen keyboard experience (this won't make it into 6.7 though).&lt;/p&gt;
&lt;p&gt;Quinten Kock's changes to &lt;a href="https://invent.kde.org/graphics/okular/-/commit/2ed4df7c7d3e7a983285bd823880d8cc92f193ee"&gt;make touchpad pinch zoom gestures work in Okular&lt;/a&gt; are now available with the recent KDE Gear 26.04 release. This bug was pointed out &lt;a href="https://phabricator.kde.org/T17433#308227"&gt;in the discussion on our Input Goal proposal&lt;/a&gt;, all the way back in 2024, so it's great to see it fixed. If you're a developer, have a look at the commit and use &lt;code&gt;QNativeGesture&lt;/code&gt; events to support touchpad pinch. Shout-out also to Taufeeque Sifat, who's been &lt;a href="https://invent.kde.org/graphics/okular/-/merge_requests/1355"&gt;improving Okular's text selection behavior&lt;/a&gt; including &lt;a href="https://invent.kde.org/graphics/okular/-/merge_requests/1308"&gt;triple-click line selection&lt;/a&gt;.&lt;/p&gt;
&lt;p&gt;Kai Uwe Broulik &lt;a href="https://invent.kde.org/plasma/plasma-desktop/-/merge_requests/3544"&gt;modernized the code for mouse and touchpad settings pages&lt;/a&gt;. This is not a user-visible change, but future changes to these settings become easier thanks to Kai Uwe's work. I'm excited because it paves the way to a unified Mouse &amp;amp; Touchpad settings page in future releases. Alexander Wilms tweaked System Settings to &lt;a href="https://invent.kde.org/plasma/plasma-desktop/-/merge_requests/3436"&gt;hide Mouse, Touchpad, and Game Controller settings pages&lt;/a&gt; when no such devices are connected. Also notable is &lt;a href="https://invent.kde.org/plasma/plasma-desktop/-/merge_requests/3569"&gt;work on a custom pointer acceleration curve editor&lt;/a&gt;, which is not ready to ship yet but hopefully can get there eventually.&lt;/p&gt;
&lt;p&gt;Joshua Goins added an &lt;a href="https://invent.kde.org/plasma/plasma-desktop/-/merge_requests/3233"&gt;option for the stylus cursor&lt;/a&gt; to stay in sync with the mouse pointer. David Redondo &lt;a href="https://bugs.kde.org/show_bug.cgi?id=519600"&gt;fixed the stylus button assignment lines looking weird&lt;/a&gt; in the Drawing Tablet page in System Settings.&lt;/p&gt;
&lt;p&gt;Vlad Zahorodnii &lt;a href="https://invent.kde.org/plasma/kwin/-/merge_requests/8771"&gt;added support&lt;/a&gt; for &lt;a href="https://who-t.blogspot.com/2025/05/libinput-and-lua-plugins.html"&gt;libinput plugins&lt;/a&gt; to KWin, allowing technical users to work around otherwise unfixable input hardware quirks. Xuetian Weng and Nicolas Fella improved the behavior of key repeats &lt;a href="https://invent.kde.org/plasma/kwin/-/commit/6be62bb9077034476feb025f507cbc805f41a3a4"&gt;for input methods&lt;/a&gt; and &lt;a href="https://invent.kde.org/plasma/kwin/-/commit/60bb46893553ab1e65a4e4c6e4b83efe78908227"&gt;screen readers&lt;/a&gt;. David Edmundson fixed an &lt;a href="https://bugs.kde.org/show_bug.cgi?id=514688"&gt;issue with pointer positions for mirrored touchscreen displays&lt;/a&gt;.&lt;/p&gt;
&lt;p&gt;Thanks to everyone who has worked on &lt;a href="https://kde.org/goals/"&gt;KDE's Input Goal&lt;/a&gt; in the past! At this year's &lt;a href="https://akademy.kde.org/2026/"&gt;Akademy in Graz&lt;/a&gt;, we should see a new set of goals elected, so we're in the final stretch for this one.&lt;/p&gt;
&lt;h2 id="onward-to-germany"&gt;Onward to Germany&lt;/h2&gt;
&lt;p&gt;I wrote this blog post while riding a long-distance train, on the way to another gesture customization mini-sprint with Natalie. The plan is to focus on implementing the new settings pages that will let regular users reassign (or unassign) gestures. Thanks again to KDE e.V. for travel support for another week of in-person collaboration. Let's see how much stuff we can get squared away - it's not just settings forms, but more infrastructure on the KWin and KGlobalAccelD side is also still needed to make everything fit together.&lt;/p&gt;
&lt;p&gt;There will be another blog post to follow up on this later. Until then!&lt;/p&gt;</description></item><item><title>I didn't think I'd be at Akademy 2025</title><link>https://blogs.kde.org/2025/12/08/i-didnt-think-id-be-at-akademy-2025/</link><pubDate>Mon, 08 Dec 2025 00:30:00 +0000</pubDate><author>Jakob Petsovits</author><guid>https://blogs.kde.org/2025/12/08/i-didnt-think-id-be-at-akademy-2025/</guid><description>&lt;p&gt;The attentive reader will note that yes, &lt;a href="https://akademy.kde.org/2025/"&gt;Akademy happened&lt;/a&gt; in September already. Not the most prolific blogger. Not the most prolific contributor either. But I had already drafted much of this post two months ago, so let's get it out the door. I'll cut all the paragraphs about fun social outings and focus on recapping stuff related to our &lt;a href="https://phabricator.kde.org/T17433"&gt;Input Goal&lt;/a&gt;.&lt;/p&gt;
&lt;p&gt;A special thank-you to Farid, of Kdenlive and KDE Goals coordination fame, who convinced me to take the trek when I thought perhaps I shouldn't cross the Atlantic twice in a year. I'm glad I went, tons of great sessions and conversations. Powered by &lt;a href="https://kde.org/donate/"&gt;your donations&lt;/a&gt;, KDE e.V. supported my travel costs and made it possible for me to coordinate with many KDE people in person. Thank you. Yes, &lt;em&gt;you&lt;/em&gt;! Anyway.&lt;/p&gt;
&lt;h2 id="talking-input"&gt;Talking input&lt;/h2&gt;
&lt;p&gt;I met my fellow Input Goal co-initiator Gernot (Duha on Matrix) in person for the first time. Together, and alongside reports on the &lt;a href="https://blogs.kde.org/2024/09/07/kde-goals-a-new-cycle-begins/"&gt;other KDE goals&lt;/a&gt;, we delivered our &lt;a href="https://youtu.be/19GMLBq9G7s?list=PLsHpGlwPdtMrmR5QxoSYGbuiy2we0uMmt&amp;amp;t=1795"&gt;presentation summarizing one year of input improvements&lt;/a&gt;. The KDE community made some excellent progress since the goal was chosen, thanks to everyone who contributed towards it! At the same time, there is more work to do and we'd love to see further contributions. Watch the talk for more details.&lt;/p&gt;
&lt;figure&gt;
 &lt;img class="img-fluid" alt="Akademy 2025 - photos from the video of our &amp;quot;KDE Goals - One Year Recap&amp;quot; presentation" src="https://blogs.kde.org/2025/12/08/i-didnt-think-id-be-at-akademy-2025/akademy-2025-goals-recap-medley.png"
 style="max-width: 100%; height: auto"
 /&gt;
&lt;/figure&gt;
&lt;p&gt;Our third Input Goal champion, Joshua Goins, had so much to report on improvements for drawing tablet users that he held an entire presentation on &lt;a href="https://youtu.be/c0M0pILJGdo?list=PLsHpGlwPdtMrmR5QxoSYGbuiy2we0uMmt&amp;amp;t=450"&gt;that particular topic&lt;/a&gt;.&lt;/p&gt;
&lt;p&gt;One particular highlight for me was running into &lt;a href="https://dorotac.eu/"&gt;Dorota&lt;/a&gt;. She has been pushing for improvements to Wayland's input method protocols and had joined our &lt;a href="https://matrix.to/#/%23kde-input:kde.org"&gt;input handling community on Matrix&lt;/a&gt; over the past year. Listening to Dorota's cross-desktop experience and plans was super interesting, and I was happy to see her coordinate with KWin maintainers over the course of Akademy. In the time since, some of Dorota's work was included in the &lt;a href="https://www.phoronix.com/news/Wayland-Protocols-1.46"&gt;latest upstream release of Wayland Protocols&lt;/a&gt; as experimental addition. Hopefully this will be further refined and standardized over time.&lt;/p&gt;
&lt;p&gt;Andy Betts sat down with me to discuss the UI designs for touchpad gesture customization, following earlier back-and-forth with Natalie and Nate over the summer. Xaver Hugl provided some great feedback at Akademy about my ongoing patch series to implement stroke gesture support in KWin. He also proposed a change that will help with integrating config file support for gesture customization into KWin. This is all still in the works - full disclosure, I've been having somewhat of a hard time recently for unrelated reasons. It now has path simplification (for performance reasons) plus a nice stroke drawing visualization, but still lacking tests and such. Christmas time seems as good a time as any to pick up some slack and push this forward.&lt;/p&gt;
&lt;p&gt;In more exciting news, KDE's new on-screen keyboard has seen a significant amount of work in the last few months. Aleix Pol's initial prototype for &lt;a href="https://invent.kde.org/plasma/plasma-keyboard"&gt;Plasma Keyboard&lt;/a&gt; was supercharged by Devin Lin, who &lt;a href="https://espi.dev/posts/2025/09/akademy-2025/"&gt;also made it to Akademy&lt;/a&gt; but had to take off early. We decided to release Plasma Keyboard independently first, then integrating it into regular Plasma releases in 2026. This 0.1 preview release is now available, you can check if your distribution already ships it, or you can grab the &lt;a href="https://invent.kde.org/plasma/plasma-keyboard#install-using-the-flatpak-nightly-repository"&gt;nightly Plasma Keyboard Flatpak&lt;/a&gt; to test its latest state. Yes, even input methods will run just fine as Flatpaks.&lt;/p&gt;
&lt;p&gt;Meanwhile, somewhere far away across the ocean, a remote partipant was going full steam ahead on another important piece in the input handling puzzle.&lt;/p&gt;
&lt;h2 id="gsoc-project-game-controller-support-in-kwin"&gt;GSoC project: Game controller support in KWin&lt;/h2&gt;
&lt;p&gt;For this year's Google Summer of Code, Yelsin Sepulveda was accepted to &lt;a href="https://blogs.kde.org/2025/05/12/gsoc-2025-project-blog-intro-improving-game-controller-support-in-kwin/"&gt;improve game controller support in KWin&lt;/a&gt; with mentorship by Xaver Hugl and myself. After a strong start, Yelsin was forced to delay the second part of his project due to personal circumstance and Google did not agree to a deadline extension. However! With an excellent work ethic, Yelsin still continued to work on the project and brought it to completion regardless of Google's official approval. The result is &lt;a href="https://invent.kde.org/plasma/plasma-desktop/-/merge_requests/3229"&gt;an opt-in KWin plugin&lt;/a&gt; that's close to getting merged, and will:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Make KWin aware of game controllers in the first place,&lt;/li&gt;
&lt;li&gt;Prevent system sleep on controller activity,&lt;/li&gt;
&lt;li&gt;Emulate mouse and keyboard input when no other game (or app) uses the controller,&lt;/li&gt;
&lt;li&gt;Deal with the Steam Controller's idiosyncratic &amp;quot;Lizard Mode&amp;quot;.&lt;/li&gt;
&lt;li&gt;Provide the foundation for future game controller customization in Plasma.&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;From the KDE side, we consider this GSoC project a resounding success. If you missed Yelsin's own posts on Planet KDE, his blog posts from &lt;a href="https://blogs.kde.org/2025/09/15/gsoc25-kwin-project-blog-post-week-3-4/"&gt;mid September&lt;/a&gt; and &lt;a href="https://blogs.kde.org/2025/10/03/gsoc25-kwin-project-blog-post-week-5-6/"&gt;early October&lt;/a&gt; cover a lot more detail.&lt;/p&gt;
&lt;h2 id="other-exciting-developments"&gt;Other exciting developments&lt;/h2&gt;
&lt;p&gt;Some presentations and conversations that I found particularly compelling, not focused on input.&lt;/p&gt;
&lt;p&gt;&lt;a href="https://youtu.be/4gMnwuuzZKo?list=PLsHpGlwPdtMrmR5QxoSYGbuiy2we0uMmt&amp;amp;t=1243"&gt;Thanks to Bhushan Shah&lt;/a&gt;, Plasma now knows what made your system wake up from system sleep. Building on this, power management primarily for Plasma Mobile but also Plasma Desktop can improve even further, including the potential for scheduled background tasks and going right back to sleep.&lt;/p&gt;
&lt;p&gt;Linux distros have been kind to KDE this year. &lt;a href="https://youtu.be/CznIsJQQE9U?list=PLsHpGlwPdtMrmR5QxoSYGbuiy2we0uMmt&amp;amp;t=1227"&gt;Neal Gompa presented&lt;/a&gt; the Fedora KDE SIG's long-term efforts to ship a &lt;a href="https://fedoraproject.org/kde/"&gt;premium Plasma experience&lt;/a&gt;. Terrific work from these folks, this is now my current favorite distro suggestion for friends &amp;amp; family. Furthermore, Harald Sitter presented the &lt;a href="https://pointieststick.com/2025/09/06/announcing-the-alpha-release-of-kde-linux/"&gt;Alpha release of KDE Linux&lt;/a&gt;, now happily chugging along on its way to becoming a Beta. This is what I hope to install on my parents' laptops one day. I took a banana from Harald in return for promising that I'll test it out myself. Didn't say when; nonetheless, the promise stands.&lt;/p&gt;
&lt;p&gt;I was not expecting to find myself talking to GNOME contributors at Akademy, but &lt;a href="https://discourse.gnome.org/t/2025-board-candidate-lorenz-wildberg/29247"&gt;Lorenz Wildberg&lt;/a&gt; from the GNOME Foundation's Board of Directors was a super interesting conversation partner. Long story short, both GNOME and KDE know about their respective shortcomings and are trying to learn from each other's experiences. Sometimes by adopting things that work, sometimes by taking a different route, sometimes just by focusing on our existing strengths and building on those. Either way, listening and reflecting will beat low-effort snark anytime. SDK evolution, contributor onboarding, governance, fun times.&lt;/p&gt;
&lt;h2 id="looking-back-and-ahead"&gt;Looking back and ahead&lt;/h2&gt;
&lt;p&gt;Yes, I lost a few weeks from getting a back injury soon after Akademy. The good news is that it's pretty much all healed at this point. But my contribution habits have remained out of whack since. I'm hoping to get this back on track asap, because I also really want to &lt;a href="https://kde.org/fundraisers/yearend2025/"&gt;help KDE to reach the inflection point&lt;/a&gt;. &lt;a href="https://www.youtube.com/watch?v=5O6tQYJSEMw"&gt;Gamers&lt;/a&gt;, &lt;a href="https://www.heise.de/en/news/Goodbye-Microsoft-Schleswig-Holstein-relies-on-Open-Source-and-saves-millions-11105459.html"&gt;governments&lt;/a&gt; and many more people have something to gain if the Linux desktop breaks out of its niche into the mainstream. The tech industry has been disappointing to me on so many fronts. This here, though, is something I'm excited to see happening.&lt;/p&gt;</description></item><item><title>Gesture customization mini-sprint</title><link>https://blogs.kde.org/2025/06/12/gesture-customization-mini-sprint/</link><pubDate>Thu, 12 Jun 2025 16:30:00 +0000</pubDate><author>Jakob Petsovits</author><guid>https://blogs.kde.org/2025/06/12/gesture-customization-mini-sprint/</guid><description>&lt;p&gt;&lt;a href="https://blogs.kde.org/2025/05/14/input-handling-in-spring-2025/"&gt;To briefly recap&lt;/a&gt;, &lt;a href="https://nclarius.github.io/"&gt;Natalie Clarius&lt;/a&gt; and I applied for an NLnet grant to improve gesture support in Plasma, and they accepted our project proposal. We thought it would be a good idea to meet in person and workshop this topic from morning to evening for three days in a row. Props to Natalie taking the trip from far away in Germany to my parents' place, where we were kindly hosted and deliciously fed.&lt;/p&gt;
&lt;p&gt;Our project plan starts with me adding stroke gesture support to KWin in the first place, while Natalie works on making multi-touch gestures customizable. Divvying up the work along these lines allows us to make progress independently without being blocked on each other's work too often. But of course there is quite a bit of overlap, which is why we applied to NLnet together as a single project.&lt;/p&gt;
&lt;p&gt;The common thread is that both kinds of gestures can result in similar actions being triggered, for example:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Showing Plasma's Window Overview&lt;/li&gt;
&lt;li&gt;Starting an app / running a custom command&lt;/li&gt;
&lt;li&gt;Invoking an action inside a running app&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;So if we want to avoid duplicating lots of code, we'll want a common way to assign actions to a gesture. We need to know what to store in a config file, how Plasma code will make use of it, and how System Settings can provide a user interface that makes sense to most people. These are the topics we focused on. Time always runs out faster than you'd like, ya gotta make it count.&lt;/p&gt;
&lt;h2 id="three-days-in-a-nutshell"&gt;Three days in a nutshell&lt;/h2&gt;
&lt;p&gt;Getting to results is an iterative process. You start with some ideas for a good user experience (UX) and make your way to the required config data, or you start with config data and make your way to actual code, or you hit a wall and start from the other end going from code to UX until you hit another wall again. Rinse and repeat until you like it well enough to ship it.&lt;/p&gt;
&lt;p&gt;On day 1, we:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Explored some code together, primarily in:
&lt;ul&gt;
&lt;li&gt;&lt;a href="https://invent.kde.org/plasma/kwin"&gt;KWin&lt;/a&gt;, which recognizes gestures;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://invent.kde.org/plasma/kglobalacceld"&gt;KGlobalAccelD&lt;/a&gt;, which manages global shortcut configurations;&lt;/li&gt;
&lt;li&gt;the &lt;a href="https://invent.kde.org/frameworks/kglobalaccel"&gt;KGlobalAccel framework&lt;/a&gt;, which asks KGlobalAccelD to to register a global shortcut,&lt;/li&gt;
&lt;li&gt;and the Shortcuts page in System Settings, a.k.a. &lt;a href="https://invent.kde.org/plasma/plasma-desktop/-/tree/master/kcms/keys"&gt;&lt;code&gt;kcm_keys&lt;/code&gt;&lt;/a&gt;.&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;Figured out why Natalie's KWin session wouldn't produce systemd logs.
&lt;ul&gt;
&lt;li&gt;(Answer: a &lt;a href="https://blog.davidedmundson.co.uk/blog/plasma-and-the-systemd-startup/"&gt;leftover config entry&lt;/a&gt;.)&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;Collected a comprehensive list of gestures (and gesture variants) to support.&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;On day 2, we:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Collected a broad list of actions (and action types) to invoke when a gesture is triggered.&lt;/li&gt;
&lt;li&gt;Sketched out UI concepts for configuring gestures.&lt;/li&gt;
&lt;li&gt;Weren't quite satisfied, came up with a different design which we like better.&lt;/li&gt;
&lt;li&gt;Discussed how we can automatically use one-to-one gesture tracking when an assigned action supports it.&lt;/li&gt;
&lt;li&gt;Drafted a config file format to associate (gesture) triggers with actions.&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;On day 3, we:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Drafted a competing config file format which adds the same data to the existing &lt;code&gt;kglobalshortcutsrc&lt;/code&gt; file instead.&lt;/li&gt;
&lt;li&gt;Reviewed existing gesture assignments and proposals.&lt;/li&gt;
&lt;li&gt;Created a table with proposed default gesture assignments (to be used once gestures are configurable).&lt;/li&gt;
&lt;li&gt;Collected remaining questions that we didn't get to.&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;What I just wrote is a lie, of course. I needed to break up the long bullet point list into smaller sections. In reality we jumped back and forth across all of these topics in order to reach some sort of conclusion at the end. Fortunately, we make for a pretty good team and managed to answer a good amount of questions together. We even managed to make time for ice cream and owl spottings along the way.&lt;/p&gt;
&lt;p&gt;Since you asked for it, here's a picture of Natalie and I drawing multi-touch gestures in the air.&lt;/p&gt;
&lt;figure&gt;
 &lt;img class="img-fluid" alt="Photo of the two mini-sprint participants" src="https://blogs.kde.org/2025/06/12/gesture-customization-mini-sprint/gesture-disco.jpg"
 style="max-width: 100%; height: auto"
 /&gt;
&lt;/figure&gt;
&lt;h2 id="next-up-in-gestures"&gt;Next up in gestures&lt;/h2&gt;
&lt;p&gt;So there are some good ideas, we need to make them real. Since the sprint, I've been trying my hand on more detailed mockups for our rough design sketches. This always raises a few more issues, which we want to tackle before asking for opinions from KWin maintainers and Plasma's design community. There isn't much to share with the community yet, but we'll involve other contributors before too long.&lt;/p&gt;
&lt;p&gt;Likewise, my first KWin MR for &lt;a href="https://invent.kde.org/plasma/kwin/-/merge_requests/7620/diffs"&gt;stroke gesture infrastructure&lt;/a&gt; is not quite there yet, but it's getting closer. The first milestone will be to make it possible for someone to provide stroke gesture actions. The second milestone will be for Plasma/KWin to provide stroke gesture actions by itself and offer a nice user interface for it.&lt;/p&gt;
&lt;p&gt;Baby steps. Keep chiseling away at it and trust that you'll create something decent eventually. This is not even among the largest efforts in KDE, and yet there are numerous pieces to fit and tasks to tackle. Sometimes I'm frankly in awe of communities like KDE that manage to maintain a massive codebase together, with very little overhead, through sheer dedication and skill. &lt;a href="https://kde.org/donate/"&gt;Those donations&lt;/a&gt; don't go to waste.&lt;/p&gt;
&lt;p&gt;At this point I would also like to apologize to anyone who was looking for reviews or other support from me elsewhere in Plasma (notably, PowerDevil) which I haven't helped with. I get stressed when having to divide my time and focus between different tasks, so I tend to avoid it, in the knowledge that someone or something will be left wanting. I greatly admire people who wear lots of different hats simultaneously, and it would surely be so nice to have the aptitude for that, but it kills me so I have to pick one battle at a time.&lt;/p&gt;
&lt;p&gt;Right now, that's gestures. Soon, a little bit of travel. Then gestures again. Once that's done, we'll see what needs work most urgently or importantly.&lt;/p&gt;
&lt;p&gt;Take care &amp;amp; till next time!&lt;/p&gt;</description></item><item><title>Input handling in spring 2025</title><link>https://blogs.kde.org/2025/05/14/input-handling-in-spring-2025/</link><pubDate>Wed, 14 May 2025 12:25:00 +0000</pubDate><author>Jakob Petsovits</author><guid>https://blogs.kde.org/2025/05/14/input-handling-in-spring-2025/</guid><description>&lt;p&gt;Since &lt;a href="https://akademy.kde.org/2024/"&gt;Akademy 2024&lt;/a&gt;, input handling improvements have been one of three &lt;a href="https://kde.org/goals/"&gt;KDE Goals&lt;/a&gt; with myself as a co-instigator. You may be wondering why you didn't see a series of dedicated blog posts on this topic, which &lt;a href="https://blogs.kde.org/2024/09/18/power-input-people-at-akademy-2024/"&gt;I had hoped to write&lt;/a&gt;. Instead of taking accountability for a longer absence from &lt;a href="https://planet.kde.org/"&gt;Planet KDE&lt;/a&gt;, here's a quick recap of what's noteworthy and exciting right now.&lt;/p&gt;
&lt;h2 id="input-improvements-in-kde-plasma-64"&gt;Input improvements in KDE Plasma 6.4&lt;/h2&gt;
&lt;p&gt;Plasma 6.4 is scheduled to be released on June 17, 2025. The &amp;quot;soft feature freeze&amp;quot; is now in effect, which means we pretty much know which major changes will be included, only polish and bug-fixing work remains. On the input front, you can look forward to some quality of life improvements:&lt;/p&gt;
&lt;p&gt;Nicolas Fella added an option to use a graphics drawing tablet in &amp;quot;Mouse&amp;quot; mode, also known as &lt;a href="https://bugs.kde.org/show_bug.cgi?id=477898"&gt;&amp;quot;relative mode&amp;quot;&lt;/a&gt;. This allows you to use the stylus on your drawing tablet like you would use a finger on a laptop's touchpad.&lt;/p&gt;
&lt;p&gt;Joshua Goins keeps updating his &lt;a href="https://artonwayland.redstrate.com/"&gt;Art on Wayland&lt;/a&gt; website to keep track of current and past drawing tablet improvements. For this release, the Drawing Tablet settings page will now &lt;a href="https://invent.kde.org/plasma/plasma-desktop/-/merge_requests/2793"&gt;ask for confirmation&lt;/a&gt; after re-calibrating your device. He also added a visualization of pen buttons to the settings page, to make it clear which button you're configuring:&lt;/p&gt;
&lt;figure&gt;
 &lt;img class="img-fluid" alt="Improved display of the pen button mapping in the Drawing Tablet settings page" src="https://blogs.kde.org/2025/05/14/input-handling-in-spring-2025/tablet-pen-button-mapping.png"
 style="max-width: 100%; height: auto"
 /&gt;
&lt;/figure&gt;
&lt;p&gt;Xaver Hugl added a &lt;a href="https://invent.kde.org/plasma/kwin/-/merge_requests/7561"&gt;3-finger pinch gesture&lt;/a&gt; for the desktop zoom accessibility feature, which is in addition to Ctrl+Meta+scroll or Meta-&amp;quot;+&amp;quot; / Meta-&amp;quot;-&amp;quot;.&lt;/p&gt;
&lt;p&gt;Nicolas Fella also implemented the accessibility feature called &lt;a href="https://invent.kde.org/plasma/kwin/-/merge_requests/3362"&gt;MouseKeys&lt;/a&gt; on Wayland. This lets you move the mouse pointer using numpad keys, and can be enabled in the Accessibility settings page.&lt;/p&gt;
&lt;p&gt;Sebastian Parborg added an option to set &lt;a href="https://invent.kde.org/frameworks/kio/-/merge_requests/1856"&gt;&amp;quot;move file&amp;quot; as the default drag &amp;amp; drop behavior&lt;/a&gt;. This applies across all KDE software. By default, dropping a file in a different folder will continue to ask if it should be moved, copied or linked.&lt;/p&gt;
&lt;p&gt;Christoph Wolk in particular just keeps fixing tons of bugs, including many input handling improvements. He's been tackling keyboard navigation issues, scrolling bugs, mouse hover, pasting, in all kinds of widgets and settings and apps. The list just goes on, here are some links from just the last two or so months: &lt;a href="https://invent.kde.org/plasma/plasma-workspace/-/merge_requests/5455"&gt;1&lt;/a&gt;, &lt;a href="https://invent.kde.org/plasma/plasma-workspace/-/merge_requests/5314"&gt;2&lt;/a&gt;, &lt;a href="https://bugs.kde.org/show_bug.cgi?id=501584"&gt;3&lt;/a&gt;, &lt;a href="https://bugs.kde.org/show_bug.cgi?id=489580"&gt;4&lt;/a&gt;, &lt;a href="https://invent.kde.org/plasma/kdeplasma-addons/-/merge_requests/722"&gt;5&lt;/a&gt;, &lt;a href="https://invent.kde.org/plasma/kdeplasma-addons/-/merge_requests/696"&gt;6&lt;/a&gt;, &lt;a href="https://invent.kde.org/plasma/kdeplasma-addons/-/merge_requests/713"&gt;7&lt;/a&gt;, &lt;a href="https://bugs.kde.org/show_bug.cgi?id=501350"&gt;8&lt;/a&gt;, &lt;a href="https://invent.kde.org/plasma/plasma-desktop/-/merge_requests/2791"&gt;9&lt;/a&gt;, &lt;a href="https://bugs.kde.org/show_bug.cgi?id=500705"&gt;10&lt;/a&gt;. (There's more but you get the gist.)&lt;/p&gt;
&lt;p&gt;Of course others are also actively fixing issues, like Akseli Lahtinen for &lt;a href="https://bugs.kde.org/show_bug.cgi?id=500666"&gt;custom tiling keyboard shortcuts&lt;/a&gt; and &lt;a href="https://invent.kde.org/system/dolphin/-/merge_requests/963"&gt;Dolphin file renaming&lt;/a&gt;. I'm frankly not able to keep up with everyone's contributions, but keep following &lt;a href="https://blogs.kde.org/categories/this-week-in-plasma/"&gt;This Week in Plasma&lt;/a&gt; to learn about the most notable ones.&lt;/p&gt;
&lt;p&gt;I myself don't have much to show for Plasma 6.4. All my hopes for personally making an impact are staked on future work. I did, however, ask some very nice people if they're open to mentor projects within GSoC 2025. It appears this might pay off.&lt;/p&gt;
&lt;h2 id="funding-for-input-handling-improvements"&gt;Funding for input handling improvements&lt;/h2&gt;
&lt;p&gt;Nate Graham keeps pointing out that &lt;a href="https://www.youtube.com/watch?v=6UEkwBB_Fn8"&gt;we need more paid developers working on KDE software&lt;/a&gt;. Here are some popular ways to make this happen:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href="https://kde.org/donate"&gt;Donate to KDE e.V.&lt;/a&gt; to help with important infrastructure and engineering work&lt;/li&gt;
&lt;li&gt;&lt;a href="https://pointieststick.com/2025/03/10/personal-and-professional-updates-announcing-techpaladin-software/"&gt;Get paid by companies like Valve&lt;/a&gt;, or governments, that want to use &amp;amp; improve KDE tech&lt;/li&gt;
&lt;li&gt;Pay yourself with your hard-earned retirement income, then work on what you think is most important&lt;/li&gt;
&lt;li&gt;Apply for grants from public benefit foundations and corporate initiatives&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;On that last bullet point, we recently received some nice funding commitments.&lt;/p&gt;
&lt;figure&gt;
 &lt;img class="img-fluid" alt="GSoC logo" src="https://blogs.kde.org/2025/05/14/input-handling-in-spring-2025/gsoc-logo.png"
 style="max-width: 100%; height: auto"
 /&gt;
&lt;/figure&gt;
&lt;p&gt;Google is perhaps best known for its repeated abuse of market power, getting convicted for huge fines only to do it again in a slightly different form. They also run a program called &lt;a href="https://summerofcode.withgoogle.com/"&gt;Google Summer of Code&lt;/a&gt; (GSoC), which is more positive. Every year, numerous students receive a stipend to write Free &amp;amp; Open Source code over the summer, to the benefit of organizations like KDE, mentored by existing developers from the community. On May 8, Google announced the accepted projects for this year. KDE was assigned &lt;a href="https://mentorship.kde.org/blog/2025-05-12-gsoc-start/"&gt;15 student projects&lt;/a&gt; across a variety of apps and infrastructure efforts. One of these is particularly relevant to our Input Goal.&lt;/p&gt;
&lt;p&gt;Starting in June, &lt;a href="https://invent.kde.org/yorisoft"&gt;Yelsin 'yorisoft' Sepulveda&lt;/a&gt; will work on &lt;a href="https://summerofcode.withgoogle.com/programs/2025/projects/cBR33y2a"&gt;improving game controller support in KWin&lt;/a&gt;. Yelsin jumped right into the community by asking great questions on Matrix, learned about KDE development by getting several changes merged into &lt;a href="https://apps.kde.org/angelfish/"&gt;Angelfish&lt;/a&gt; (KDE's mobile-friendly web browser), and already published an &lt;a href="https://blogs.kde.org/2025/05/12/gsoc-2025-project-blog-intro-improving-game-controller-support-in-kwin/"&gt;introductory blog post&lt;/a&gt; with more details about the project. We're excited to mentor Yelsin and get &lt;a href="https://bugs.kde.org/show_bug.cgi?id=328987"&gt;one of the oldest open Plasma bugs&lt;/a&gt; fixed in the process.&lt;/p&gt;
&lt;figure&gt;
 &lt;img class="img-fluid" alt="NLnet logo" src="https://blogs.kde.org/2025/05/14/input-handling-in-spring-2025/nlnet-banner.png"
 style="max-width: 100%; height: auto"
 /&gt;
&lt;/figure&gt;
&lt;p&gt;&lt;a href="https://nlnet.nl/"&gt;NLnet Foundation&lt;/a&gt; is an organization that supports open software, open hardware, open data and open standards. At Akademy 2024, Jos van den Oever of NLnet &lt;a href="https://www.youtube.com/watch?v=MXMa_k6VeGU&amp;amp;list=PLsHpGlwPdtMqp2bZfLl1hznIM-c4s_QdW&amp;amp;index=39"&gt;held a talk and encouraged KDE contributors&lt;/a&gt; to apply for funding there and elsewhere. Unlike many other granting organizations, NLnet allows individuals to &lt;a href="https://nlnet.nl/funding.html"&gt;apply for comparatively small grants&lt;/a&gt; with very limited bureaucracy, between 5,000 and 50,000 EUR for first-time applicants. Last year, they already supported various &lt;a href="https://nlnet.nl/project/KDEPlasma-Wayland/"&gt;improvements in accessibility and drawing tablet support&lt;/a&gt; in Plasma.&lt;/p&gt;
&lt;p&gt;Natalie Clarius and I applied to NLnet following Akademy 2024. Our project would make multi-touch gestures configurable through System Settings, as well as implement stroke gestures (a.k.a. mouse gestures) for Plasma on Wayland. In April this year, &lt;a href="https://nlnet.nl/project/KDEPlasma-gestures/"&gt;NLnet approved this project&lt;/a&gt; together with &lt;a href="https://nlnet.nl/news/2025/20250422-announcement-grants-CommonsFund.html"&gt;many other open source initiatives&lt;/a&gt;. We've seen a lot of user requests for this functionality, so I'm happy to work on upstreaming this functionality going forward. We're currently ramping up our efforts - stay tuned for actual merge requests and UI designs.&lt;/p&gt;
&lt;p&gt;What's also great is &lt;a href="https://github.com/taj-ny/InputActions"&gt;InputActions by taj-ny&lt;/a&gt;, which is a third-party plugin for KWin that provides customization for multi-touch gestures via text file. Its next release should &lt;a href="https://discuss.kde.org/t/available-until-the-end-of-2024-mouse-gestures-support-on-plasma-6-wayland/5549/52"&gt;include stroke gesture support&lt;/a&gt; as well. I'm glad that my prototype from last year was useful as a starting point for this. Getting code into upstream KWin and System Settings requires a different approach though, so it still makes sense for the NLnet project to go ahead.&lt;/p&gt;
&lt;p&gt;NLnet approved a second KDE-related grant in the same batch, for &lt;a href="https://nlnet.nl/project/KDE-Dolphin-a11y/"&gt;Accessible KDE File Management&lt;/a&gt; by diligent Dolphin maintainer &lt;a href="https://wordsmith.social/felix-ernst/how-to-not-pay-german-taxes-for-free-software-development-funded-by-the"&gt;Felix Ernst&lt;/a&gt;. In addition to targeted improvements for Dolphin, this project will also benefit the KDE-wide Open/Save dialog, as well as settings for editing shortcuts. Felix with prior experience in accessibility and (obviously) Dolphin is ideally suited for this work.&lt;/p&gt;
&lt;p&gt;You may be able to get NLnet funding too. Primary requirements:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Expertise in a given area of the KDE codebase that you want to improve.&lt;/li&gt;
&lt;li&gt;Patience to sit down and write a detailed project plan.&lt;/li&gt;
&lt;li&gt;Flexibility to wait for up to half a year for confirmation.&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;Note: Like all such foundations, NLnet has some favorite topics including mobile, accessibility, or federated internet infrastructure. If you're interested in this kind of funding for KDE work, feel free to ask me about more details.&lt;/p&gt;
&lt;h2 id="input-at-the-plasma-sprint"&gt;Input at the Plasma Sprint&lt;/h2&gt;
&lt;p&gt;In late April I dropped by at the recent Plasma Sprint 2025 in Graz, which you may have seen in other posts on Planet KDE already. Among many other topics, we briefly discussed the direction of further input-related developments.&lt;/p&gt;
&lt;p&gt;Previously, Xuetian Weng (a.k.a. csslayer, the long-term maintainer of the &lt;a href="https://github.com/fcitx/fcitx5"&gt;fcitx5&lt;/a&gt; input method framework) proposed &lt;a href="https://invent.kde.org/teams/goals/we-care-about-your-input/-/issues/13"&gt;a unified way to manage keyboard layout, input methods, and other input related tools&lt;/a&gt;. The gist of the proposal is that each input method (IM) would be associated to a keyboard layout in System Settings. In the linked issue, he argues that this is a better fit for Plasma than the approaches of other platforms for configuring language, layout and input methods. I briefly presented Xuetian's proposal at the Sprint and there was a general consensus that this is a sensible way forward.&lt;/p&gt;
&lt;p&gt;There was a question about how to deal with devices that don't have a keyboard connected to begin with. We considered some options and compared our thoughts with the actual keyboard hot-plugging behavior of a sprint attendees' Android phone. Same conclusion either way: each connected keyboard should correspond to a separate layout/IM selection, and the absence of a keyboard will likewise correspond to its own input method. Multiple input devices can be supported by switching configurations upon key-press or (dis)connect events. If we can implement this, it should turn out more versatile and still simpler than Plasma's current settings.&lt;/p&gt;
&lt;p&gt;We also discussed the virtual keyboard prototype &lt;a href="https://invent.kde.org/plasma/plasma-keyboard"&gt;plasma-keyboard&lt;/a&gt; and its most important blockers for getting included in Plasma Desktop / Plasma Mobile. It looks like the major concerns have been captured in the &lt;a href="https://invent.kde.org/plasma/plasma-keyboard/-/issues"&gt;issue queue&lt;/a&gt; already, so what's needed now is a developer to buckle down and fix them one by one. Also, testing in more languages.&lt;/p&gt;
&lt;h2 id="kde-needs-you"&gt;KDE Needs You!&lt;/h2&gt;
&lt;p&gt;Lots of movement overall. That said, not all of these plans have someone actively working on it. We really do need more hands on deck if we want the &lt;a href="https://phabricator.kde.org/T17433"&gt;Input Goal proposal&lt;/a&gt; to be a smashing success. If you are interested to work with the community on input handling, stipend or not, we can help you to help KDE. Drop by in &lt;a href="https://matrix.to/#/%23kde-input:kde.org"&gt;#kde-input:kde.org on Matrix&lt;/a&gt; if you need mentorship to guide your contributions, MR reviews to get your patches landed, or any other kind of support.&lt;/p&gt;
&lt;p&gt;Here's a small selection of efforts that would really benefit from your development chops:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Test and improve plasma-keyboard so we can ship it with Plasma.&lt;/li&gt;
&lt;li&gt;Make Xuetian's proposal for unified keyboard layout and input method settings a reality. This can be split into smaller tasks:
&lt;ul&gt;
&lt;li&gt;Settings page changes&lt;/li&gt;
&lt;li&gt;Quick-switching between input methods&lt;/li&gt;
&lt;li&gt;Adapting fcitx5&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;Pave the way for speech-to-text, emoji input, and &lt;a href="https://blog.davidedmundson.co.uk/blog/new-ideas-using-wayland-input-methods/"&gt;other small input helpers&lt;/a&gt;.&lt;/li&gt;
&lt;li&gt;Confirm and/or fix any bug from &lt;a href="https://bugs.kde.org/buglist.cgi?bug_status=UNCONFIRMED&amp;amp;bug_status=CONFIRMED&amp;amp;bug_status=ASSIGNED&amp;amp;bug_status=REOPENED&amp;amp;component=Input%20Method%20widget&amp;amp;component=Keyboard%20Layout%20widget&amp;amp;component=Kimpanel%20widget&amp;amp;component=Touchpad&amp;amp;component=input&amp;amp;component=kcm_accessibility&amp;amp;component=kcm_joystick&amp;amp;component=kcm_keyboard&amp;amp;component=kcm_keyboard_layout&amp;amp;component=kcm_keys&amp;amp;component=kcm_khotkeys&amp;amp;component=kcm_kwinscreenedges&amp;amp;component=kcm_kwintouchscreen&amp;amp;component=kcm_kwinvirtualkeyboard&amp;amp;component=kcm_language&amp;amp;component=kcm_mouse&amp;amp;component=kcm_touchpad&amp;amp;component=kcm_touchscreen&amp;amp;order=changeddate%20DESC%2Cbug_status%2Cpriority%2Cassigned_to%2Cbug_id&amp;amp;product=plasmashell&amp;amp;product=kwin&amp;amp;product=systemsettings&amp;amp;query_format=advanced"&gt;this long list&lt;/a&gt;.&lt;/li&gt;
&lt;li&gt;Anything input-related that excites you!&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;Let's get these gaps filled. Until next time. And don't forget to drop by at &lt;a href="https://akademy.kde.org/2025/"&gt;Akademy 2025 in Berlin&lt;/a&gt; for more Input Goal discussions!&lt;/p&gt;</description></item><item><title>Power, input &amp; people at Akademy 2024</title><link>https://blogs.kde.org/2024/09/18/power-input-people-at-akademy-2024/</link><pubDate>Wed, 18 Sep 2024 00:00:00 +0000</pubDate><author>Jakob Petsovits</author><guid>https://blogs.kde.org/2024/09/18/power-input-people-at-akademy-2024/</guid><description>&lt;p&gt;Contrary to popular belief, &lt;a href="https://akademy.kde.org/2024/"&gt;Akademy 2024&lt;/a&gt; was not my first Akademy.
KDE seems to keep tagged faces from Akademy group photos around, so I stumbled over some vintage
pictures of me in 2006 (Glasgow) and 2007 (Dublin). At the time, I was an utter greenhorn with
big dreams, vague plans, and a fair bit of social anxiety.&lt;/p&gt;
&lt;figure&gt;
 &lt;img class="img-fluid" alt="Dublin is where Aaron Seigo taught me how to eat with chopsticks. I continue to draw from that knowledge to this day." src="https://blogs.kde.org/images/2024-09-18.jpetso-akademy-2006-2007.png"
 style="max-width: 100%; height: auto"
 /&gt;
&lt;/figure&gt;
&lt;p&gt;And then I disappeared for 15 years, but now it's time for a new shot. This time around, I'm a
little less green (rather starting to grey a little) and had a surprising amount of stuff to
discuss with various KDE collaborators. Boy, is there no end of interesting people and
discussion topics to be had at Akademy.&lt;/p&gt;
&lt;h2 id="oh-youre-the-powerdevil-guy"&gt;&amp;quot;Oh, you're the PowerDevil guy&amp;quot;&lt;/h2&gt;
&lt;p&gt;&lt;a href="https://blogs.kde.org/2024/04/23/powerdevil-in-plasma-6.0-and-beyond/"&gt;You're not wrong&lt;/a&gt;, I've
been &lt;a href="https://blogs.kde.org/2024/09/04/brightness-controls-for-all-your-displays/"&gt;contributing to that&lt;/a&gt;
for the past year. As such, one highlight for me was to meet KDE's hardware integration contractor
Natalie Clarius in person and sync up on all things power-related.&lt;/p&gt;
&lt;figure&gt;
 &lt;img class="img-fluid" alt="Akademy's no-photo badge makes its wearer disappear from selfies. AI magic, perhaps?" src="https://blogs.kde.org/images/2024-09-18.akademy-2024-nclarius-jpetso.jpg"
 style="max-width: 100%; height: auto"
 /&gt;
&lt;/figure&gt;
&lt;p&gt;Natalie presented a &lt;a href="https://conf.kde.org/event/6/contributions/212/"&gt;short talk&lt;/a&gt; and hosted a
BoF session (&amp;quot;Birds of a Feather&amp;quot;, a.k.a. workshop) about power management topics. We had a good
crowd of developers in attendance, clearing up the direction of several outstanding items.&lt;/p&gt;
&lt;p&gt;Power management in Plasma desktops is in decent shape overall. One of the bigger remaining topics
is (re)storing battery charge limits across reboots, for laptops whose firmware doesn't remember
those settings. There is a way forward that involves making use of the cross-desktop UPower service
and its new charge limit extensions. This will give us the restoring feature for free, but we
have to add some extra functionality to make sure that charge threshold customization remains
possible for Plasma users after switching over.&lt;/p&gt;
&lt;p&gt;We also looked at ways to put systems back to sleep that weren't supposed to wake up yet.
Unintended wake-ups can happen e.g. when the laptop in your backpack catches a key press from the
screen when it's squeezed against the keyboard. Or when one of those (conceptually neat)
&amp;quot;Modern Standby&amp;quot; implementations on recent laptops are buggy. This will need a little more
investigation, but we've got some ideas.&lt;/p&gt;
&lt;p&gt;I talked to Bhushan Shah about power saving optimizations in Plasma Mobile. He is investigating
a Linux kernel feature designed for mobile devices that saves power more aggressively, but needs
support from KDE's power management infrastructure to make sure the phone will indeed wake up
when it's meant to. If this can be integrated with KDE's power management service, we could improve
battery runtimes for mobile devices and perhaps even for some laptops.&lt;/p&gt;
&lt;p&gt;The friendly people from Slimbook dropped by to show off their range of Linux laptops, and unveiled
&lt;a href="https://slimbook.com/en/shop/product/kde-slimbook-vi-amd-ryzen-7-8845hs-1467?category=58"&gt;their new Slimbook VI with KDE neon&lt;/a&gt;
right there at the conference. Compared to some of their older laptops, build quality is improved
leaps and bounds. Natalie and I grilled their BIOS engineer on topics such as power profiles,
power consumption, and how to get each of their function keys show the corresponding OSD popup.&lt;/p&gt;
&lt;figure&gt;
 &lt;img class="img-fluid" alt="KDE Slimbook VI shortly after the big reveal" src="https://blogs.kde.org/images/2024-09-18.akademy-2024-slimbook.jpg"
 style="max-width: 100%; height: auto"
 /&gt;
&lt;/figure&gt;
&lt;h2 id="im-excited-that-your-input-goal-was-chosen"&gt;&amp;quot;I'm excited that your input goal was chosen&amp;quot;&lt;/h2&gt;
&lt;p&gt;Every two years, the KDE community picks three &amp;quot;Goals&amp;quot; to rally around until the next vote happens.
This time, contributors were asked to form teams of &amp;quot;goal champions&amp;quot; so that the work of educating
and rallying people does not fall on the shoulders of a single poor soul per goal.&lt;/p&gt;
&lt;p&gt;So now we have eight poor souls who pledge to advance a total of
&lt;a href="https://blogs.kde.org/2024/09/07/kde-goals-a-new-cycle-begins/"&gt;three focus areas over the next two years&lt;/a&gt;.
Supported by KDE e.V.'s new Goals Coordinator, Farid. There's a common thread around attracting
developers, with Nicolas Fella and Nate Graham pushing for a
&lt;a href="https://phabricator.kde.org/T17396"&gt;&amp;quot;Streamlined Application Development Experience&amp;quot;&lt;/a&gt; and
the KDE Promo team with a systematic recruitment initiative titled
&lt;a href="https://phabricator.kde.org/T17439"&gt;&amp;quot;KDE Needs You&amp;quot;&lt;/a&gt;. And then there's this other thing,
with a strict end user focus, briefly introduced on stage by guess who?&lt;/p&gt;
&lt;figure&gt;
 &lt;img class="img-fluid" alt="Yup. Hi! I'm the input guy now." src="https://blogs.kde.org/images/2024-09-18.akademy-2024-goal-announcement.jpg"
 style="max-width: 100%; height: auto"
 /&gt;
&lt;/figure&gt;
&lt;p&gt;Turns out a lot of people in KDE are passionate about support for input devices, virtual keyboards
and input methods. Gernot Schiller (a.k.a. duha) realized this and assembled a team consisting of
himself, Joshua Goins (a.k.a. &lt;a href="https://redstrate.com/"&gt;redstrate&lt;/a&gt;) as well as Yours Truly to
apply as champions. The goal proposed that
&lt;a href="https://phabricator.kde.org/T17433"&gt;&amp;quot;We care about your Input&amp;quot;&lt;/a&gt; and the community's response
is Yes, Yes We Do.&lt;/p&gt;
&lt;p&gt;As soon as the new goals were announced, Akademy 2024 turned into an Input Goal Akademy for me.
In addition to presenting the new goal on stage briefly, we also gathered in a BoF session
to discuss the current state, future plans and enthusiastic volunteering assignments related to
all things input. I also sat down with a number of input experts to learn more about everything.
There is still much more I need to learn.&lt;/p&gt;
&lt;p&gt;It's a sprawling topic with numerous tasks that we want to get done, ranging from multi-month
projects to fixing lots of low-hanging fruit. This calls for a series of dedicated blog posts,
so I'll go into more detail later.&lt;/p&gt;
&lt;p&gt;Join us at &lt;a href="https://matrix.to/#/%23kde-input:kde.org"&gt;#kde-input:kde.org on Matrix&lt;/a&gt;
or watch this space (and &lt;a href="https://planet.kde.org/"&gt;Planet KDE&lt;/a&gt; in general) for further posts
on what's going on with input handling in KDE.&lt;/p&gt;
&lt;h2 id="look-at-the-brightness-side"&gt;Look at the brightness side&lt;/h2&gt;
&lt;p&gt;KWin hacker extraordinaire Xaver Hugl (a.k.a. zamundaaa) demoed some
&lt;a href="https://conf.kde.org/event/6/contributions/221/"&gt;of his color magic&lt;/a&gt; on a
standard SDR laptop display. Future KWin can play bright HDR videos in front of regular SDR
desktop content. Accurate color transformations for both parts without special HDR hardware,
that's pretty impressive. I thought that HDR needs dedicated hardware support, turns out I'm wrong,
although better contrast and more brightness can still improve the experience.&lt;/p&gt;
&lt;p&gt;I also got to talk to Xaver about touchpad gestures, learned about stalled attempts to support
DDC/CI in the Linux kernel directly, and pestered him for a review to improve Plasma's D-Bus API
for the new per-monitor brightness features. Also the
&lt;a href="https://indico.freedesktop.org/event/6/page/29-attending-xdc-2024"&gt;XDC conference in Montreal&lt;/a&gt;,
is happening in less than a month, featuring more of Xaver as well as loads of low-level graphics
topics. Perhaps even input-related stuff. It's only a train ride from Toronto, maybe I'll drop by.
Maybe not. Here's a medieval German town selfie.&lt;/p&gt;
&lt;figure&gt;
 &lt;img class="img-fluid" alt="Towering over the rooftops of Rothenburg ob der Tauber with Xaver, Jonathan Riddell, and two suspect KWin developers in the back" src="https://blogs.kde.org/images/2024-09-18.akademy-2024-rothenburg-jpetso.jpg"
 style="max-width: 100%; height: auto"
 /&gt;
&lt;/figure&gt;
&lt;p&gt;Thanks to the entire KWin gang for letting me crash their late-night hacking session and only
throwing the last of us out at 2 AM after my D-Bus change got merged. Just in time for the
Plasma 6.2 beta. I was dead tired on Thursday, totally worth it though.&lt;/p&gt;
&lt;h2 id="atomic-kde-for-users--developers"&gt;Atomic KDE for users &amp;amp; developers&lt;/h2&gt;
&lt;p&gt;Plasma undoubtedly has some challenges ahead in order to bring all of its power and flexibility
to an image-based, atomic OS with sandboxed apps (i.e. Flatpak/Snap).
&lt;a href="https://conf.kde.org/event/6/contributions/205/"&gt;David Edmundson's talk&lt;/a&gt; emphasized that
traditional plugins are not compatible with this new reality. We'll need to look into other ways
of extending apps.&lt;/p&gt;
&lt;figure&gt;
 &lt;img class="img-fluid" alt="David Edmundson wildly speculating about the future" src="https://blogs.kde.org/images/2024-09-18.akademy-2024-davidedmundson-sandboxing-facts.jpg"
 style="max-width: 100%; height: auto"
 /&gt;
&lt;/figure&gt;
&lt;p&gt;The good news is that lots of work is indeed happening to prepare KDE for this future.
Baloo making use of thumbnailer binaries in addition to thumbnailer plugins. KRunner allowing D-Bus
plugins in addition to shared libraries.
&lt;a href="https://conf.kde.org/event/6/contributions/206/"&gt;Arjen Hiemstra's work-in-progress Union style&lt;/a&gt; being
customizable through configuration rather than code. Heck, we even learned about a project called
&lt;a href="https://conf.kde.org/event/6/contributions/220/"&gt;KDE Neon Core&lt;/a&gt; trying to make a Snap out of each
and every piece of KDE software.&lt;/p&gt;
&lt;p&gt;Going forward, it seems that there will be a more distinct line between Plasma as a desktop platform
and KDE apps, communicating with each other through standardized extension points.&lt;/p&gt;
&lt;p&gt;All of this infrastructure will come in handy if
&lt;a href="https://conf.kde.org/event/6/contributions/202/"&gt;Harald Sitter's experimental atomic OS&lt;/a&gt;,
KDE Linux (working title), is to become a success. Personally, I've long been hoping for a
KDE-based system that I can recommend to my less technical family members. KDE Linux could
eventually be that. Yes, Fedora Kinoite is also great.&lt;/p&gt;
&lt;figure&gt;
 &lt;img class="img-fluid" alt="KDE Linux: Useful to users, hardware partners, and... developers?" src="https://blogs.kde.org/images/2024-09-18.akademy-2024-sitter-kde-linux-goals.jpg"
 style="max-width: 100%; height: auto"
 /&gt;
&lt;/figure&gt;
&lt;p&gt;What took me by surprise about Harald's presentation was that it could be great even as a
development platform for contributing to the Plasma desktop itself.&lt;/p&gt;
&lt;p&gt;As a desktop developer, I simply can't run my Plasma development build in a container.
Many functions interact with actual hardware so it needs to run right on the metal. On my current
Arch system, I use a secondary user account with Plasma installed into that user's home directory.
That way the system packages aren't getting modified - one does not want to mess with system packages.&lt;/p&gt;
&lt;p&gt;But KDE Linux images contain the same system-wide build that I would make for myself.
I can build an exact replacement with standard KDE tooling, perhaps a slight bit newer,
and temporarily use it as system-wide replacement using systemd-sysext. I can revert whenever.
KDE Linux includes all the development header files too, making it possible to build and replace
just a single system component without building all the rest of KDE.&lt;/p&gt;
&lt;p&gt;Different editions make it suitable for users anywhere between tested/stable (for family members)
and bleeding edge (for myself as Plasma developer). Heck, perhaps we'll even be able to switch
back and forth between different editions with little effort.&lt;/p&gt;
&lt;p&gt;Needless to say, I'm really excited about the potential of KDE Linux. Even without considering
how much work it can save for distro maintainers that won't have to combine outdated Ubuntu LTS
packages with the latest KDE desktop.&lt;/p&gt;
&lt;h2 id="conclusion"&gt;Conclusion&lt;/h2&gt;
&lt;p&gt;There's so much else I've barely even touched on, like
&lt;a href="https://conf.kde.org/event/6/contributions/209/"&gt;NLnet funding opportunities&lt;/a&gt;, quizzing Neal Gompa
about KDE for Enterprise, &lt;a href="https://conf.kde.org/event/6/contributions/203/"&gt;Rust&lt;/a&gt; and
&lt;a href="https://conf.kde.org/event/6/contributions/208/"&gt;Python&lt;/a&gt; binding efforts, Nicolas Fella being
literally everywhere, Qt Contributor Summit, finding myself in a hostel room together with fellow
KDE devs Carl &amp;amp; Kåre. But this blog post is already long enough.
Read some of the &lt;a href="https://planet.kde.org/"&gt;other KDE blogs&lt;/a&gt; for more Akademy reports.&lt;/p&gt;
&lt;figure&gt;
 &lt;img class="img-fluid" alt="German bus stops have the nicest sunsets. Also rainbows!" src="https://blogs.kde.org/images/2024-09-18.akademy-2024-jpetso-goodbye.jpg"
 style="max-width: 100%; height: auto"
 /&gt;
&lt;/figure&gt;
&lt;p&gt;Getting home took all day and jet lag isn't fun, but I've reasonably recovered to give another shot
at bringing KDE software to the masses. You can too!
&lt;a href="https://community.kde.org/Get_Involved"&gt;Get involved&lt;/a&gt;, &lt;a href="https://kde.org/donate/"&gt;donate to KDE&lt;/a&gt;,
or simply enjoy the ride and discuss this post
&lt;a href="https://discuss.kde.org/t/power-input-people-at-akademy-2024/21496"&gt;on KDE Discuss&lt;/a&gt;.&lt;/p&gt;
&lt;p&gt;Or don't. It's all good :)&lt;/p&gt;</description></item><item><title>Brightness controls for all your displays</title><link>https://blogs.kde.org/2024/09/04/brightness-controls-for-all-your-displays/</link><pubDate>Wed, 04 Sep 2024 00:00:00 +0000</pubDate><author>Jakob Petsovits</author><guid>https://blogs.kde.org/2024/09/04/brightness-controls-for-all-your-displays/</guid><description>&lt;p&gt;Whoops, it's already been months &lt;a href="https://blogs.kde.org/2024/04/23/powerdevil-in-plasma-6.0-and-beyond/"&gt;since I last blogged&lt;/a&gt;. I've been actively involved with Plasma and especially its power management service PowerDevil for over a year now. I'm still learning about how everything fits together.&lt;/p&gt;
&lt;p&gt;Turns out though that a little bit of involvement imbues you with just enough knowledge and confidence to review other people's changes as well, so that they can get merged into the next release without sitting in limbo forever. Your favorite weekly blogger for example, &lt;a href="https://pointieststick.com/"&gt;Nate Graham&lt;/a&gt;, is a force of nature when it comes to responding to proposed changes and finding a way to get them accepted in one form or another. But it doesn't have to take many years of KDE development experience to provide helpful feedback.&lt;/p&gt;
&lt;p&gt;Otfen we simply need another pair of eyes trying to understand the inner workings of a proposed feature or fix. If two people think hard about an issue and agree on a solution, chances are good that things are indeed changing for the better. Three or more, even better. I do take pride in my own code, but just as much in pushing excellent improvements like these past the finish line:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Fabian Arndt's &lt;a href="https://invent.kde.org/plasma/powerdevil/-/merge_requests/248"&gt;support for Lenovo laptops' battery conservation mode&lt;/a&gt; (Plasma 6.1)&lt;/li&gt;
&lt;li&gt;Natalie Clarius's feature to &lt;a href="https://pointieststick.com/2024/08/30/this-week-in-plasma-inhibiting-inhibitions-and-more/"&gt;block apps from inhibiting sleep and screen locking&lt;/a&gt; (6.2)&lt;/li&gt;
&lt;li&gt;Christoph Wolk's &lt;a href="https://invent.kde.org/plasma/powerdevil/-/merge_requests/402"&gt;improvements to usability for the Power Management settings page&lt;/a&gt; (6.2, one among many of the sort)&lt;/li&gt;
&lt;li&gt;Nate's changes to &lt;a href="https://invent.kde.org/plasma/powerdevil/-/merge_requests/399"&gt;show the current power profile in addition to the battery charge&lt;/a&gt; (6.2)&lt;/li&gt;
&lt;li&gt;Xaver Hugl's push to allow &lt;a href="https://zamundaaa.github.io/wayland/2024/05/11/more-hdr-and-color.html"&gt;software brightness adjustments not just for HDR displays&lt;/a&gt; (6.1), but indeed for any display without hardware brightness controls (6.2)&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;In turn, responsible developers will review your own changes so we can merge them with confidence. Xaver, Natalie and Nate invested time into getting my big feature merged for Plasma 6.2, which &lt;a href="https://pointieststick.com/2024/08/23/this-week-in-kde-per-monitor-brightness-control-and-update-then-shut-down/"&gt;you've already read about&lt;/a&gt;:&lt;/p&gt;
&lt;h2 id="per-display-brightness-controls"&gt;Per-display Brightness Controls&lt;/h2&gt;
&lt;figure&gt;
 &lt;img class="img-fluid" alt="Nate's screenshot is nice and hi-res, I'll just reuse it here" src="https://pointieststick.com/wp-content/uploads/2024/08/image-18.png"
 style="max-width: 100%; height: auto"
 /&gt;
&lt;/figure&gt;
&lt;p&gt;This was really just a follow-up project to the &lt;a href="https://blogs.kde.org/2024/04/23/powerdevil-in-plasma-6.0-and-beyond/"&gt;display support developments mentioned in the last blog post&lt;/a&gt;. I felt it had to be done, and it lined up nicely with what KWin's been up to recently.&lt;/p&gt;
&lt;p&gt;So how hard could it be to add another slider to your applet? Turns out there are indeed a few challenges.&lt;/p&gt;
&lt;p&gt;In KDE, we like to include new features early on and tweak them over time. As opposed to, say, the GNOME community, which tends to discuss them for a loooong time in an attempt to merge the perfect solution on the first try. Both approaches have advantages and drawbacks. Our main drawback is harder to change imperfect code, because it's easy to break functionality for users that already rely on them.&lt;/p&gt;
&lt;p&gt;Every piece of code has a set of assumptions embedded into it. When those assumptions don't make sense for the next, improved, hopefully perfect solution (definitely perfect this time around!) then we have to find ways to change our thinking. The code is updated to reflect a more useful set of assumptions, ideally without breaking anyone's apps and desktop. This process is called &amp;quot;refactoring&amp;quot; in software development.&lt;/p&gt;
&lt;p&gt;But let's be specific: What assumptions am I actually talking about?&lt;/p&gt;
&lt;h4 id="there-is-one-brightness-slider-for-your-only-display"&gt;There is one brightness slider for your only display&lt;/h4&gt;
&lt;p&gt;This one's obvious. You can use more than just one display at a time. However, our previous code only used to let you read one brightness value, and set one brightness value. For which screen? Well... how about the code just picks something arbitrarily. If you have a laptop with an internal screen, we use that one. If you have no internal screen, but your external monitor supports DDC/CI for brightness controls, we use that one instead.&lt;/p&gt;
&lt;p&gt;What's that, you have multiple external monitors that all support DDC/CI? We'll set the same value for all of them! Even if the first one counts from 0 to 100 and the second one from 0 to 10.000! Surely that will work.&lt;/p&gt;
&lt;p&gt;No it won't. We only got lucky that most monitors count from 0 to 100.&lt;/p&gt;
&lt;p&gt;The solution here is to require all software to treat each display differently. We'll start watching for monitors being connected and disconnected. We tell all the related software about it. Instead of a single set-brightness and a single get-brightness operation, we have one of these per display. When the lower layers require this extra information, software higher up in the stack (for example, a brightness applet) is forced to make better choices about the user experience in each particular case. For example, presenting multiple brightness sliders in the UI.&lt;/p&gt;
&lt;h4 id="a-popup-indicator-shows-the-new-brightness-when-it-changes"&gt;A popup indicator shows the new brightness when it changes&lt;/h4&gt;
&lt;p&gt;So this raises new questions. With only one display, we can indicate any brightness change by showing you the new brightness on a percentage bar:&lt;/p&gt;
&lt;figure&gt;
 &lt;img class="img-fluid" alt="OSD indicator with percentage bar, but no display name" src="https://blogs.kde.org/images/2024-09-04.brightness-osd-no-text.png"
 style="max-width: 100%; height: auto"
 /&gt;
&lt;/figure&gt;
&lt;p&gt;Now you press the &amp;quot;Increase Brightness&amp;quot; key on your keyboard, and multiple monitors are connected. This OSD popup shows up on... your active screen? But did the brightness only change for your active screen, or for all of them? Which monitor is this one popup representing?&lt;/p&gt;
&lt;p&gt;Ideally, we'd show a different popup on each screen, with the name of the respective monitor:&lt;/p&gt;
&lt;figure&gt;
 &lt;img class="img-fluid" alt="OSD indicator with percentage bar plus display name. Early screenshot, the final version uses the same small icon as the original popup" src="https://blogs.kde.org/images/2024-09-04.brightness-osd-with-text.png"
 style="max-width: 100%; height: auto"
 /&gt;
&lt;/figure&gt;
&lt;p&gt;That's a good idea! But Plasma's OSD component doesn't have a notion of different popups being shown at the same time on different monitors. It may even take further changes to ask KWin, Plasma's compositor component, about that. What we did for Plasma 6.2 was to provide Plasma's OSD component with all the information it needs to do this eventually. But we haven't implemented our favorite UI yet, instead we hit the 6.2 deadline and pack multiple percentages into a single popup:&lt;/p&gt;
&lt;figure&gt;
 &lt;img class="img-fluid" alt="OSD indicator with display names and percentages both as text" src="https://blogs.kde.org/images/2024-09-04.brightness-osd-multi-text.png"
 style="max-width: 100%; height: auto"
 /&gt;
&lt;/figure&gt;
&lt;p&gt;That's good enough for now, not the prettiest but always clear. If you only use or adjust one screen, you'll get the original fancy percentage bar you know and love.&lt;/p&gt;
&lt;h4 id="the-applet-can-do-its-own-brightness-adjustment-calculations"&gt;The applet can do its own brightness adjustment calculations&lt;/h4&gt;
&lt;p&gt;You can increase or decrease brightness by scrolling on the icon of the &amp;quot;Brightness and Color&amp;quot; applet with your mouse wheel or touchpad. Sounds easy to implement: read the brightness for each display, add or subtract a certain percentage, set the brightness again for the same display.&lt;/p&gt;
&lt;p&gt;Nope, not that easy.&lt;/p&gt;
&lt;p&gt;For starters, we handle brightness key presses in the background service. You'd expect the &amp;quot;Increase Brightness&amp;quot; key to behave the same as scrolling up with your mouse wheel, right? So let's not implement the same thing in two different places. The applet has to say goodbye to its own calculations, and instead we add an interface to background service that the applet can use.&lt;/p&gt;
&lt;p&gt;Then again, the background service never had to deal with high-resolution touchpad scrolling. It's so high-resolution that each individual scroll event might be smaller than the number of brightness steps on your screen. The applet contained code to add up all of these tiny changes so that many scroll events taken together will at least make your screen change by one step.&lt;/p&gt;
&lt;p&gt;Now the service provides this functionality instead, but it adds up the tiny changes for each screen separately. Not only that, it allows you to keep scrolling even if one of your displays has already hit maximum brightness. When you scroll back afterwards, both displays don't just count down from 100% equally, but the original brightness difference between both screens is preserved. Scroll up and down to your heart's content without messing up your preferred setup.&lt;/p&gt;
&lt;h4 id="dimming-will-turn-down-the-brightness-then-restore-the-original-value-later"&gt;Dimming will turn down the brightness, then restore the original value later&lt;/h4&gt;
&lt;p&gt;Simple! Yes? No. As you may guess, we now need to store the original brightness for each display separately so we can restore it later.&lt;/p&gt;
&lt;p&gt;But that's not enough: What if you unplug your external screen while it's dimmed? And then you move your mouse pointer again, so the dimming goes away. Your monitor, however, was not there for getting its brightness restored to the original value. Next time you plug it in, it starts out with the dimmed lower brightness as a new baseline, Plasma will gladly dim even further next time.&lt;/p&gt;
&lt;p&gt;Full disclosure, this was already an issue in past releases of Plasma and is still an issue. Supporting multiple monitors just makes it more visible. &lt;a href="https://invent.kde.org/plasma/powerdevil/-/issues/38"&gt;More work is needed&lt;/a&gt; to make this scenario bullet-proof as well. We'll have to see if a small and safe enough fix can still be made for Plasma 6.2, or if we'll have to wait until later to address this more comprehensively.&lt;/p&gt;
&lt;p&gt;Anyway, these kind of assumptions are what eat up a good amount of development time, as opposed to just adding new functionality. Hopefully users will find the new brightness controls worthwhile.&lt;/p&gt;
&lt;h2 id="so-lets-get-to-the-good-news"&gt;So let's get to the good news&lt;/h2&gt;
&lt;p&gt;&lt;a href="https://kde.org/donate/"&gt;Your donations&lt;/a&gt; allowed KDE e.V. to approve a travel cost subsidy in order to meet other KDE contributors in person and scheme the next steps toward world domination. You know what's coming, I'm going to:&lt;/p&gt;
&lt;p&gt;&lt;a href="https://akademy.kde.org/2024/"&gt;&lt;figure&gt;
 &lt;img class="img-fluid" alt="Akademy 2024: 7th to 12th September 2024 in Würzburg, Germany" src="https://akademy.kde.org/media/2024/banners/akademy2024-banner-600x110.png"
 style="max-width: 100%; height: auto"
 /&gt;
&lt;/figure&gt;
&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;Akademy is starting in just about two days from now! Thank you all for allowing events like this to happen, I'll try to make it count. And while not everyone can get to Germany in person, keep in mind that it's a hybrid conference and especially the &lt;a href="https://akademy.kde.org/2024/program/"&gt;weekend talks&lt;/a&gt; are always worth watching online. You can still &lt;a href="https://akademy.kde.org/2024/"&gt;sign up&lt;/a&gt; and join the live chat, or take a last-minute weekend trip to Würzburg if you're in the area, or just watch the videos shortly afterwards (I assume they'll go up on &lt;a href="https://tube.kockatoo.org/c/akademy/videos"&gt;the PeerTube Akademy channel&lt;/a&gt;).&lt;/p&gt;
&lt;p&gt;I'm particularly curious about the outcome of the KDE Goals vote for the upcoming two years, given that I &lt;a href="https://phabricator.kde.org/T17433"&gt;co-drafted a goal proposal&lt;/a&gt; this time around. Whether or not it got elected, I haven't forgotten about my promise of working on mouse gesture support on Plasma/Wayland. Somewhat late due to the aforementioned display work taking longer. Other interesting things are starting to happen as well on my end. I'll have to be mindful not to stretch myself too thinly.&lt;/p&gt;
&lt;p&gt;Thanks everyone for being kind. I'll be keeping an eye out for &lt;a href="https://bugs.kde.org/"&gt;your bug reports&lt;/a&gt; when the Plasma 6.2 Beta gets released to adventurous testers in just over a week from today.&lt;/p&gt;
&lt;p&gt;Discuss this post &lt;a href="https://discuss.kde.org/t/brightness-controls-for-all-your-displays/20900"&gt;on KDE Discuss&lt;/a&gt;.&lt;/p&gt;</description></item><item><title>PowerDevil in Plasma 6.0 and beyond</title><link>https://blogs.kde.org/2024/04/23/powerdevil-in-plasma-6.0-and-beyond/</link><pubDate>Tue, 23 Apr 2024 00:00:00 +0000</pubDate><author>Jakob Petsovits</author><guid>https://blogs.kde.org/2024/04/23/powerdevil-in-plasma-6.0-and-beyond/</guid><description>&lt;p&gt;Hi, &lt;a href="https://invent.kde.org/jpetso"&gt;I'm Jakob&lt;/a&gt; and this is my new KDE blog. Let's see how this goes
as I haven't blogged for literally decades.&lt;/p&gt;
&lt;p&gt;I started working on Plasma code sometime last year and hope to play a tiny part in
&lt;del&gt;setting the stage for world domination&lt;/del&gt; improving user experiences like
&lt;a href="https://pointieststick.com/"&gt;so many other awesome and dedicated contributors do every week&lt;/a&gt;.
My Plasma contributions started out with a few rounds of build improvements and bug fixes
initially. Before long though, I decided to realize my lifelong dream of a friendly and usable
Energy Saving settings page. Thus started a journey into the code of Plasma's power management
service, internally known as PowerDevil.&lt;/p&gt;
&lt;p&gt;Quick recap: As a service, PowerDevil is mainly responsible for two rough areas.&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;It will suspend Plasma sessions when the time is right, and also,&lt;/li&gt;
&lt;li&gt;It adjusts backlight brightness levels of your display and monitors, including the ability to
turn them off altogether.&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;In terms of user interfaces, the Energy Saving module in System Settings allows you to set
different suspend/shutdown behaviors and brightness adjustments for different power states:
on AC power, on battery, and on &lt;em&gt;low&lt;/em&gt; battery. Ad-hoc adjustments to the same settings can also
be made with two applets in your system tray: Power and Battery, as well as Brightness and Color.&lt;/p&gt;
&lt;p&gt;Let's have a look at some of the work that went into Plasma 6.0 in this area. I'm about two months
late for a 6.0 news blog, but &lt;a href="https://fedoraproject.org/spins/kde/"&gt;Fedora 40 KDE Spin&lt;/a&gt; is just
out as the first major Linux distro on a semi-annual release cycle to feature Plasma 6. So maybe
not terrible timing. We'll also have a look at some of what's been brewing for 6.1 so far.
You may have seen some of this across a number of different &amp;quot;This Week in KDE&amp;quot; blog posts,
but then again maybe you haven't!&lt;/p&gt;
&lt;h2 id="system-settings--config-data"&gt;System Settings &amp;amp; Config Data&lt;/h2&gt;
&lt;figure&gt;
 &lt;img class="img-fluid" alt="Energy Saving settings, before and after the redesign. It'll be called Power Management starting in Plasma 6.1." src="https://blogs.kde.org/images/2024-04-23.powerdevil-kcm-comparison.png"
 style="max-width: 100%; height: auto"
 /&gt;
&lt;/figure&gt;
&lt;p&gt;I'm quite happy with the way the new settings worked out. It also took a while to get there.&lt;/p&gt;
&lt;p&gt;A year earlier, I posted &lt;a href="https://invent.kde.org/plasma/powerdevil/-/issues/10"&gt;an outlandish proposal&lt;/a&gt;
to radically change the Energy Saving page. It's too long and boring and unworkable to cover here.
However, it made me think long and hard about all the different ways that the settings page could
look like, what its controls must be able to represent. It also made me aware that
&lt;a href="https://invent.kde.org/plasma/powerdevil/-/merge_requests/66#note_342005"&gt;another UI rework&lt;/a&gt;
had already been in the works previously, which didn't get merged.&lt;/p&gt;
&lt;p&gt;Nothing is ever as easy as one hopes it to be. A substantial redesign of the settings page would
require rewriting the UI with modern Qt Quick / QML code, as opposed to the rather unwieldy
Qt Widgets that the old UI was using at the time. As I learned, a settings module based on
Qt Quick also wants more knowledge about its underlying configuration data. Things such as:
&amp;quot;what's the default value for this setting&amp;quot;, or &amp;quot;if you click this checkbox a second time
can we disable the Reset button again&amp;quot;.&lt;/p&gt;
&lt;p&gt;PowerDevil had lots of config data and was using old infrastructure in non-standard ways to access
it. The service would generate a new config file on first run, with all of its default values
written to &lt;code&gt;~/.config/powermanagementprofilesrc&lt;/code&gt;. After creating this config file, it had no clue
which of the values were defaults and which were your own customized settings. In Plasma 5.x,
pressing the &amp;quot;Defaults&amp;quot; button would open a dialog to warn you that all of your changes will be
thrown away immediately and can't be recovered if you proceed. Compare that to other modules,
which let you press &amp;quot;Defaults&amp;quot; and &amp;quot;Reset&amp;quot; as much as you want until you decide finally &amp;quot;Apply&amp;quot;.&lt;/p&gt;
&lt;p&gt;Before even attempting to improve the UI itself, a series of changes was necessary in the code
that reads and interprets config files. I got there by extracting and improving one small
bite after another from the extensive but ultimately unmerged earlier attempt. A steady stream of
small, easy-to-review patches will win the race eventually.&lt;/p&gt;
&lt;p&gt;The result is this. Power management settings are now only written if you change away from the
default values. If you checked the &amp;quot;Highlight Changed Settings&amp;quot; option, System Settings will be
able to show which of your Energy Saving settings have been modified compared to the defaults.
You can transfer your SSD from a laptop to a PC and the suspend/shutdown defaults will now reflect
the new system's capabilities. Extra config files for the various power states and activities have
been migrated to &lt;code&gt;~/.config/powerdevilrc&lt;/code&gt;.&lt;/p&gt;
&lt;p&gt;Building on these changes, the UI rework got merged just in time for Plasma 6.0. I think it's
significantly cleaner than it used to be, while at the same time there are still things I'd like
to change about it. Eventually I'd like to configure my &amp;quot;laptop lid closed&amp;quot; action only once,
instead of applying the same change across all three power states. The &amp;quot;custom script&amp;quot; controls
make more sense for laptops with different power states than for desktop PCs, where the current
design can be a little confusing. Screen and keyboard brightness should ideally move to the
Display Configuration and Keyboard settings modules. We'll get there eventually.&lt;/p&gt;
&lt;p&gt;Special thanks to &lt;a href="https://nicolasfella.de/"&gt;Nicolas Fella&lt;/a&gt; and &lt;a href="https://pointieststick.com/"&gt;Nate Graham&lt;/a&gt;
for their repeated, kind &amp;amp; thoughtful code reviews. Throughout this project and really everywhere
else in KDE. Getting (or giving!) that kind of feedback makes a huge difference.&lt;/p&gt;
&lt;h2 id="moved--removed-functionality"&gt;Moved &amp;amp; Removed Functionality&lt;/h2&gt;
&lt;p&gt;The UI rework would have been harder if Nicolas hadn't also simplified PowerDevil in other areas.
One is that WiFi, WWAN and Bluetooth are gone from Energy Saving, they were more confusing there
than they were helpful. Switching wireless devices on or off can still be done through the system
tray applets, or the WiFi/Bluetooth modules in System Settings.&lt;/p&gt;
&lt;p&gt;Plasma 5.27 and earlier allowed you to set a full power management settings profile if a given
Activity is currently active. It's still possible in Plasma 6.0 to block automatic sleep or
screen turn-off. Those settings have moved to the Activities settings module, where they can be
configured as part of each individual Activity. Entire pages of power management settings cannot be
controlled through Activities anymore in 6.0 though. If these capabilities ever end up returning,
it will be with a different code architecture and a different UI.&lt;/p&gt;
&lt;figure&gt;
 &lt;img class="img-fluid" alt="Inhibit sleep or screen turn-off in the settings for Activities" src="https://blogs.kde.org/images/2024-04-23.activities-kcm-edit.png"
 style="max-width: 100%; height: auto"
 /&gt;
&lt;/figure&gt;
&lt;p&gt;Natalie Clarius has invested lots of time into system tray applets. Instead of a single
&amp;quot;Battery and Brightness&amp;quot; applet and a separate &amp;quot;Night Light&amp;quot; applet, the brightness settings in
Plasma 6.0 are now colocated with Night Light as &amp;quot;Brightness and Color&amp;quot; applet. This leaves the
&amp;quot;Power and Battery&amp;quot; applet by itself, which displays battery status (including peripheral battery,
if your mouse or keyboard supports this) and can configure power profiles on the fly
(if power-profile-daemon is installed).&lt;/p&gt;
&lt;h2 id="new--improved-functionality"&gt;New &amp;amp; Improved Functionality&lt;/h2&gt;
&lt;p&gt;In Plasma 5.x, you were able to configure how long the system should be idle before the display
gets turned off. For Plasma 6.0, Jonathan Haney added a setting to configure a shorter turn-off
duration on the lock screen. You won't be reading long web pages and PDFs on the lock screen so
you might as well avoid distractions and save some power. This setting can be reduced all the way
to zero seconds so that the screen turns off immediately when locking the session.
I spent some time to make this work reliably on both Wayland and X11.&lt;/p&gt;
&lt;figure&gt;
 &lt;img class="img-fluid" alt="Turn off screen when locked in Energy Saving settings" src="https://blogs.kde.org/images/2024-04-23.powerdevil-profiles-dpms-when-locked.png"
 style="max-width: 100%; height: auto"
 /&gt;
&lt;/figure&gt;
&lt;p&gt;We still need to streamline the settings UI a bit, in line with the &amp;quot;simple by default, powerful
when needed&amp;quot; mantra.&lt;/p&gt;
&lt;p&gt;Brightness can be increased or decreased in 5% steps by pressing brightness up/down keys, which are
usually found on laptop keyboards. In Plasma 6.0, brightness steps can also be controlled in
1% steps by pressing Shift in addition to the brightness key.&lt;/p&gt;
&lt;p&gt;We merged a number of bug fixes to improve reliability of automatic brightness adjustments.
Restoring keyboard backlights works better now after waking up from system sleep, dimming after a
period of inactivity is less fragile, fading to black before the screen is turned off won't flicker
when a mouse move interrupts the fade at the wrong time. If (lib)ddcutil or PowerDevil's use of it
makes trouble with controlling external monitor brightness via DDC/CI, it can be disabled by
setting a &lt;code&gt;POWERDEVIL_NO_DDCUTIL=1&lt;/code&gt; environment variable for the PowerDevil service on startup.&lt;/p&gt;
&lt;figure&gt;
 &lt;img class="img-fluid" alt="On-screen display for switching power profiles" src="https://blogs.kde.org/images/2024-04-23.power-profiles-osd.png"
 style="max-width: 100%; height: auto"
 /&gt;
&lt;/figure&gt;
&lt;p&gt;There is now an OSD switcher for power profiles (i.e. Power Save, Balanced, Performance) that will
pop up when the battery function key on some laptop keyboards is pressed, or Meta+B.&lt;/p&gt;
&lt;p&gt;In Plasma 5.27, you could configure a custom script to run when entering or exiting a power state
(AC, battery, low battery) or after a period of inactivity in this current power state.
In Plasma 6.0, you can configure a custom script for each of these &amp;quot;run conditions&amp;quot; in each
power state. So you can run a script to activate something when you plug in the laptop, and disable
it again when removing the power plug.&lt;/p&gt;
&lt;figure&gt;
 &lt;img class="img-fluid" alt="New sleep mode drop-down in Energy Saving settings" src="https://blogs.kde.org/images/2024-04-23.powerdevil-profiles-sleep-mode.png"
 style="max-width: 100%; height: auto"
 /&gt;
&lt;/figure&gt;
&lt;p&gt;Auto-suspend after inactivity, laptop lid closure and power button presses now each allow you to
select &amp;quot;Sleep&amp;quot; vs. &amp;quot;Hibernate&amp;quot; as their respective suspend actions. The &amp;quot;Hybrid sleep&amp;quot; option and
the confusingly placed &amp;quot;Sleep, then hibernate after a period of inactivity&amp;quot; checkbox are now part
of a separate drop-down that lets you choose alternative sleep modes. Less confusing than before,
although there's more work needed now to make this updated categorization consistent across the
entire desktop, like on the logout screen.&lt;/p&gt;
&lt;h2 id="functionality-that-just-keeps-working"&gt;Functionality that just keeps working!&lt;/h2&gt;
&lt;p&gt;For years, the UPower daemon had marked its laptop lid detection functionality as deprecated, to be
removed in a future release. Plasma's power management service relies on UPower, and Plasma would have
soon lost the ability to react to lid closure events. UPower had already removed this code from
their unreleased development codebase, it was only a matter of time until the next official version
would be released to break lid handling everywhere. So I started working on a replacement,
but getting full coverage across different platforms (X11 vs. Wayland, systemd vs. not-systemd)
is quite a bit of effort and there were lots more kinks to figure out.&lt;/p&gt;
&lt;p&gt;So I am very happy that UPower has indeed
&lt;a href="https://gitlab.freedesktop.org/upower/upower/-/releases/v1.90.4"&gt;released a new version&lt;/a&gt;,
one that puts the lid detection code back in for the benefit of upstream users such as Plasma,
GNOME and various window managers that have also relied on their lid detection functionality.
Better yet, it's meant to stay this time around. Things will just keep working as they do now!
It's great to have this kind of system-level functionality available in common infrastructure
such as UPower so we don't each have to implement substandard knock-offs individually.&lt;/p&gt;
&lt;p&gt;On the monitor brightness front, recent versions of libddcutil have introduced a feature that
prevents two independent programs from talking to the same monitor simultaneously. Due to the way
that our background service has traditionally been using libddcutil, Plasma 6.0 sessions have been
hogging libddcutil's monitor handles. Users who like to perform other operations with DDC/CI,
for example through the &lt;code&gt;ddcutil&lt;/code&gt; command-line program, would find it non-functional. Starting with
Plasma 6.0.4, our DDC/CI code was restructured so that a monitor is only hogged for the short time
it takes to change the brightness. &lt;code&gt;ddcutil&lt;/code&gt; works again as intended in a Plasma session.&lt;/p&gt;
&lt;h2 id="beyond-60"&gt;Beyond 6.0&lt;/h2&gt;
&lt;p&gt;The System Settings module will be renamed from &amp;quot;Energy Saving&amp;quot; to &amp;quot;Power Management&amp;quot;. This used to
be the name of the entire category containing the &amp;quot;Energy Saving&amp;quot;, &amp;quot;Advanced Power Settings&amp;quot; and
&amp;quot;Activity Power Settings&amp;quot; modules. After the redesign, there is only one module left and it can be
called by the arguably more appropriate name.&lt;/p&gt;
&lt;p&gt;After the Plasma 6.0 feature freeze went into effect, Bogdan Onofriichuk significantly improved
the code for external monitor brightness handling via DDC/CI (using libddcutil).&lt;/p&gt;
&lt;p&gt;Starting with 6.1, the power management service will recognize at runtime when monitors are
connected or disconnected. Previously, only a single monitor detection was done on startup and
if you changed your monitor configuration afterwards, brightness controls in Plasma would have
no effect on newly plugged-in monitors.&lt;/p&gt;
&lt;p&gt;Brightness via DDC/CI will not be animated anymore in order to minimize the risk of shortened
monitor lifespans. The chance of this happening is hard to verify for someone not in the
monitor industry, but we'll follow the example of monitor manufacturers' own helper applets and
apply newly adjusted monitor brightness values only after a half-second delay.&lt;/p&gt;
&lt;p&gt;Brightness animations of internal laptop backlights, on the other hand, are going to get more
responsive when dragging the brightness slider in the applet or holding down the brightness key.&lt;/p&gt;
&lt;p&gt;We've done more work on cleaning up the display code, with the goal of allowing per-monitor
brightness controls as opposed to the single brightness slider of current Plasma releases.
After raising the minimum brightness value to &amp;quot;the lowest value that's higher than 0%&amp;quot; to stop
screens from inadvertently turning off, we'll lower it back down to an exact 0 where it's safe to
do so. We also want to move the core of screen brightness control into KWin, which will be able to
do more awesome things such as adjust brightness on OLED screens that don't even have a backlight
to control. No guarantees when any of this will be ready to ship, but it's a lot closer now than
just a few months ago.&lt;/p&gt;
&lt;h2 id="how-you-can-help"&gt;How You Can Help&lt;/h2&gt;
&lt;p&gt;There are a lot of edge cases and system configurations that could still be handled in a better way.&lt;/p&gt;
&lt;p&gt;Device interactions can be hairy, they will often differ from one system to another. What might
work well on my system can break on someone else's. You can use the power of having a
different setup to do things that a number of KDE developers cannot. If you're running into issues
with suspend, brightness and other things that PowerDevil may have a hand in, check out
&lt;a href="https://invent.kde.org/plasma/powerdevil/-/blob/master/README.md"&gt;the new README file&lt;/a&gt;.&lt;/p&gt;
&lt;p&gt;Consider helping with bug triage! PowerDevil on KDE's bug tracker has a &lt;a href="https://bugs.kde.org/buglist.cgi?bug_status=UNCONFIRMED&amp;amp;bug_status=CONFIRMED&amp;amp;bug_status=ASSIGNED&amp;amp;bug_status=REOPENED&amp;amp;bug_status=NEEDSINFO&amp;amp;component=general&amp;amp;list_id=2670705&amp;amp;order=changeddate%20DESC%2Cbug_status%2Cpriority%2Cassigned_to%2Cbug_id&amp;amp;product=Powerdevil&amp;amp;query_format=advanced"&gt;service component&lt;/a&gt;
with lots of reported bugs, as well as a &lt;a href="https://bugs.kde.org/buglist.cgi?bug_status=UNCONFIRMED&amp;amp;bug_status=CONFIRMED&amp;amp;bug_status=ASSIGNED&amp;amp;bug_status=REOPENED&amp;amp;bug_status=NEEDSINFO&amp;amp;component=kcm_powerdevil&amp;amp;list_id=2670714&amp;amp;order=changeddate%20DESC%2Cbug_status%2Cpriority%2Cassigned_to%2Cbug_id&amp;amp;product=systemsettings&amp;amp;query_format=advanced"&gt;component for the System Settings module&lt;/a&gt;
with fewer bugs and quite a few wishlist items. The service component includes some very old bug
reports which may or may not fully apply to Plasma 6.0 anymore.
&lt;a href="https://community.kde.org/Guidelines_and_HOWTOs/Bug_triaging"&gt;Read this&lt;/a&gt; if you're interested in
helping us determine the amount of developer love still required for different bug reports.
Also if you rock at figuring out how to reproduce issues reliably, when the original reporter
wasn't able to find a conclusive pattern by themselves.&lt;/p&gt;
&lt;p&gt;And of course, if you're a developer, feel free to fix a problem and submit a merge request.
Some issues aren't straightforward to resolve. We'll work through them eventually.
Probably. I'm a volunteer just like most of you, so no promises whatsoever.&lt;/p&gt;
&lt;p&gt;You can also &lt;a href="https://kde.org/community/donations/"&gt;donate to KDE&lt;/a&gt; so they can continue to do
helpful things like paying Natalie to work on hardware integration, or (if the approval gods
are kind) hopefully subsizing my travel costs to &lt;a href="https://akademy.kde.org/2024/"&gt;Akademy 2024&lt;/a&gt;.&lt;/p&gt;
&lt;p&gt;Discuss this post &lt;a href="https://discuss.kde.org/t/powerdevil-in-plasma-6-0-and-beyond/14548"&gt;on KDE Discuss&lt;/a&gt;.&lt;/p&gt;</description></item></channel></rss>