Skip to content

Monday, 29 April 2024

I'm happy to have been able to attend my first in-person KDE event, the Automation & Systematization Sprint in Berlin. Previously, my contributions to KDE have consisted of submitting and triaging bug reports. During this weekend, I was able to meet some of the KDE team in person, and become more involved. I've started working with the Bugzilla Bot code, and plan to start digging into the automated test code.

The Bugzilla product list had fallen out of date, so first I updated that (yay, my first accepted MR!). I also started working on using the GitLab API to automate these updates. In the near future, I'll be tackling some requested improvements to the Bugzilla Bot. This will lessen the amount of boring manual bug chores and free people up to do more valuable work.

Thanks to the KDE team for being so friendly and willing to help me learn the development environment. I'm happy to have found more ways to contribute that I enjoy, and will be valuable to the project.

The Amarok Development Squad is happy to announce the immediate availability of Amarok 3.0 "Castaway"!

Amarok 3.0 screenshot

The new 3.0 is the first stable Qt5/KDE Frameworks 5 based version of Amarok, and first stable release since 2018, when the final Qt4 based version 2.9.0 was released.

The road to 3.0 has not been a short one. Much of the Qt5/KF5 porting was done in 2015 already, but finishing and polishing everything up has been a slow, sometimes ongoing and sometimes stalled process ever since. 3.0 Alpha was released in February 2021 and has been since used by many people, as have been nightly builds of git master available for various distributions. Now in the past few months, an effort was made to get everything ready for a proper 3.0 release.

Common usecases should work quite well, and in addition to fixing KF5 port related regressions reported in pre-releases, 3.0 features many bugfixes and implemented features for longstanding issues, the oldest such documented being from 2009. However, with more than 20 years of development history, it is likely that not every feature Amarok has been tested thoroughly in the new release, and specifically some Internet services that have changed their API in recent years are not available, at least for now. It might well be that getting them in better state wouldn't require huge effort, however, so if you know your way with Qt and KDE Frameworks and your favourite Internet music service does not work with Amarok 3.0, you are extremely welcome to join in and help!

In the following months, minor releases containing small fixes and additions, based on both newly reported and longer-standing bug reports and feature requests, are to be expected. Work on porting to Amarok to Qt6/KDE Frameworks 6 should start in the following months, the goal being to have a usable Qt6/KF6 based beta version in 2024 still.

One should observe that due to scripting framework port from QtScript to QJSEngine still being a work in progress, previous Amarok 2.x scripts are often not compatible. The script API documentation at community wiki is also partially out of date. Additionally, due to incompatibilities and other issues, KNewStuff downloading of scripts is disabled for the time being. Having script support in more polished shape is something to work on after an initial Qt6/KF6 version starts to be usable. It is also evident that the web site and community wiki pages largely originate from more than ten years ago, and contain partially outdated information. Some work on refreshing them and pruning the documentation to make it more maintainable is likely to happen during the following months.

Now it's time to Rediscover Your Music in the 2020's!

Changes since 3.0 Beta (2.9.82)

FEATURES:
  • Added a visual hint that context view applets can be resized in edit mode.
  • Display missing metadata errors in Wikipedia applet UI.
  • Add a button to stop automatic Wikipedia page updating. (BR 485813)
CHANGES:
  • Replace defunct lyricwiki with lyrics.ovh as lyrics provider for now. (BR 455937)
  • Show only relevant items in wikipedia applet right click menu (BR 323941), use monobook skin for opened links and silently ignore non-wikipedia links.
  • Don't show non-functional play mode controls in dynamic mode (BR 287055)
BUGFIXES:
  • Fix loading of some Flickr photos in the photos context view applet and show more relevant photos. (BR 317108)
  • Fix playlist inline play control slider knob & draw playlist delegate icons with higher DPI.
  • Fix searching for composer and album info for local files in Wikipedia applet.
  • Don't remove wrong songs from collection when contents of a folder, whose name is a substring of another collection folder, are changed (BR 475528)
  • Prefer symbolic systray icon to fix colours in Plasma6 systray (BR 485748)

The complete ChangeLog, which includes the pre-releases, is available in the git repository.

To provide some insight on the road from 2.9.0 to 3.0.0, statistics collected from git repository are presented:

Commits and added/removed lines of code between 2.9.0 and 3.0 alpha (2.9.71)

l10n daemon script: 117 commits, +898, -192
Heiko Becker: 72 commits, +5641, -2112
Laurent Montel: 69 commits, +9478, -9697
Aroonav Mishra: 65 commits, +15474, -6808
Pino Toscano: 31 commits, +6892, -1637
Malte Veerman: 30 commits, +19466, -29990
Olivier CHURLAUD: 27 commits, +1106, -474
Yuri Chornoivan: 19 commits, +966, -806
Pedro de Carvalho Gomes: 8 commits, +145, -407
Pedro Gomes: 7 commits, +7222, -805
Luigi Toscano: 7 commits, +15, -14
Mark Kretschmann: 6 commits, +27, -17
Wolfgang Bauer: 5 commits, +31, -7
Tuomas Nurmi: 4 commits, +39, -23
Stefan Derkits: 4 commits, +20, -19
Andreas Sturmlechner: 3 commits, +189, -75
Aditya Dev Sharma: 3 commits, +47, -46
Stephan Wezel: 2 commits, +12, -7
Andreas Sturmlechner: 2 commits, +8, -6
Andreas Hartmetz: 2 commits, +2, -2
Victor Mataré: 1 commits, +7, -3
Tobias C. Berner: 1 commits, +5, -1
Thiago Sueto: 1 commits, +1, -1
Sven Eckelmann: 1 commits, +5, -3
Somsubhra Bairi: 1 commits, +1, -1
Simon Depiets: 1 commits, +2, -2
Rishabh Gupta: 1 commits, +1, -4
Nicolas Lécureuil: 1 commits, +4, -2
Nate Graham: 1 commits, +7, -7
Johnny Jazeix: 1 commits, +2, -2
Elbin Pallimalil: 1 commits, +11, -5
Christophe Giboudeaux: 1 commits, +1, -2
Antonio Rojas: 1 commits, +1, -0
Alexandr Akulich: 1 commits, +1, -1
Albert Astals Cid: 1 commits, +1, -0

Commits and added/removed lines of code between 3.0 alpha 2.9.71 and 3.0.0

l10n daemon script: 317 commits, +1597783, -75585
Tuomas Nurmi: 147 commits, +3813, -1550
Friedrich W. H. Kossebau: 9 commits, +1075, -1044
Jürgen Thomann: 8 commits, +130, -101
Heiko Becker: 8 commits, +187, -19
Pino Toscano: 6 commits, +3361, -24
Toni Asensi Esteve: 4 commits, +100, -13
Pedro de Carvalho Gomes: 4 commits, +51, -9
Mihkel Tõnnov: 4 commits, +4486, -800
Zixing Liu: 2 commits, +140, -8
Fabian Vogt: 2 commits, +9, -0
David Faure: 2 commits, +4047, -15
Damir Islamov: 2 commits, +401, -420
Yuri Chornoivan: 1 commits, +1, -1
Sebastian Engel: 1 commits, +21, -21
Nicolas Fella: 1 commits, +1, -1
Nicolás Alvarez: 1 commits, +7, -7
Nate Graham: 1 commits, +1, -0
Matthias Mailänder: 1 commits, +5, -0
Jonathan Esk-Riddell: 1 commits, +2, -6
Jakob Meng: 1 commits, +1, -1
Heiko Becker: 1 commits, +17, -17
Christophe Giboudeaux: 1 commits, +3, -4
Carl Schwan: 1 commits, +7, -2
Boris Pek: 1 commits, +1, -1
Andreas Sturmlechner: 1 commits, +2, -0

Packager section

You can find the package on download.kde.org and it has been signed with Tuomas Nurmi's GPG key.

The goal of KDE neon is to build all KDE’s software on a stable Ubuntu LTS base, we do it in an automated way and for the User edition have automated QA to deploy rapidly but safely. For the KDE 6 Megarelease there was a lot of updates and the system didn’t work as well as it ought, not all the update issues could be tested and this broke some the operating system on some people’s computer which is a horrible experience that should not happen.

What happened?

We were testing KF6, Plasma 6 and KDE Gear 24.04 in our unstable and testing repos for some time before the release. A week ahead of release we were building it in our User repo and testing upgrades. Jonathan, as release manager for both the MegaRelease and neon, travelled to Malaga to do an in person joint release with Paul from promo, this helped the coordinated release but lost some testing time. Some package transitions happened during the pre-release week which made the updates more complex than they had to be and meant extra work (for better end result in theory). Once the MegaRelease sources were published on Thursday the testing of Neon was ongoing and many later fixes were made to make for a successful upgrade on the tests. Neon’s KF6/Plasma6/KDE Gear 24.02 packages were published later on Thursday and Jonathan drove home, alas due to bad weather there was no internet available on the ferry limiting later fixes.

Although the semi automated upgrade tests passed this didn’t cover all cases and some people had incomplete upgrades due to packaging transitions being incomplete. This was fixed over the next day or two and also an update to the installer Calamares was brought in which turned out to have a bug with the final install setup so although upgrades now worked the ISO installs were broken. Quite horrible.

On the Monday Jonathan fixed some more upgrade issues and Calamares so the neon end of things was fixed but there remain other problems with KF6 and Plasma 6 which affect all distros and many of these have since been fixed and some are ongoing, many caused by the switch to Wayland or Akonadi switching to sqlite.

Issues?

There wasn’t one big problem that caught everyone. There was lots of small but significant problems which caught many people.

  • KMyMoney package issues – needed a rebuild which we did after release
  • Ocean sound theme not installed – new package which was added after release
  • Palapeli packages in wrong location – an incomplete change that was made during the transition
  • Video and pdf thumbnailers broken – these packages needed added to the main install
  • KOrganizer had invalid dependency – that needed removed
  • xwaylandvideobridge error on shared library – needed a rebuild
  • libzxing needs soname bump – that transition needed completed
  • akonadi not working on upgrade – for some reason some users had to manually reinstall the mysql akonadi backend
  • Calamares install fails to happen – a bug from Calamares that was initially avoided but later included in our ISO
  • OEM mode no longer worked – this affects Slimbook systems and some parts just needed ported to Plasma 6, ideally it would be code which was in Calamares and not in Neon

NVidia users had a number of issues often caused by the switch to Wayland. Most users can switch back to X11 to get it working but that is hardly a user friendly setup.

This is just a small sample, there were more similar issues.

Review

Neon is a small team, Jonathan working on it (alongside release duties for Plasma and Frameworks) from Blue Systems and top volunteer helper Carlos with occasionally Harald and others helping out.

We had a review with KDE’s QA star Nate of what happened and why and mitigations and we also had two open calls with neon community members where they gave their feedback.

Ponderings

The Plasma 6 and KF6 upgrades in neon were too fragile and caused too much pain for many of our users.

There wasn’t one single problem and many people had a perfectly good experience doing the upgrade but too many people were caught with problems which will be painful when you are just wanting to have a useful Linux system.

Conclusions

Our constantly rolling release model and small team means we can’t guarantee total stability so we will stop using terms like “rock solid base” on our website and emphasise the new-ness factor.

When doing big updates test and if travelling bring in other people to do testing and fixes.

We can’t support NVidia hardware as we don’t have the skills, time, hardware or access to source to fix it.

Switching to Wayland was a choice of Plasma and after a decade in development a necessary choice but we should be aware of issues there and communicate those.

Get more QA on ISO images, currently we don’t have any prior to release which is going to lead to problems.

Consider if we can to upgrade QA on older snapshots as well as the current one.

Consider how to do more QA on KDE PIM apps.

Thanks to all our lovely users for staying with us, sorry to those who we let down and those who have left us. Thanks to our community for staying supporting of each other and us as developers. Of course there’s plenty of alternatives if you want a slower release cycle (Kubuntu have just made a new LTS with Plasma 5) but if you want the freshest software from KDE then neon continues to be a great place to get it.

Sunday, 28 April 2024

Fedora 40 has been released! 🎉 So let’s see what comes in this new release for the Fedora Atomic Desktops variants (Silverblue, Kinoite, Sway Atomic and Budgie Atomic).

Note: You can also read this post on the Fedora Magazine.

Introducing Fedora Atomic Desktops

As you might have guessed from the title, we are now called Fedora Atomic Desktops! See the Introducing Fedora Atomic Desktops Fedora Magazine article for all the details.

The summary is that the Fedora Atomic Desktops are made up of four atomic spins:

  • Fedora Silverblue
  • Fedora Kinoite
  • Fedora Sway Atomic (was Fedora Sericea)
  • Fedora Budgie Atomic (was Fedora Onyx)

And we have a landing page on fedoraproject.org.

Status update on bootloader updates (bootupd integration)

Unfortunately, we could not land bootupd support in this release due to an issue found late in Anaconda’s handling of bootupd installations which relied on incomplete functionality in bootupd.

We will attempt to add bootupd again after the release, via an update.

If you encounter Secure Boot errors or need to update your bootloader in the meantime, you can try the instructions from fedora-silverblue#543. Make sure to have a Live USB ready in case you encounter an issue. Please make backups beforehand.

We are hoping to land improvements to bootupd that should simplify this process.

See: atomic-desktops-sig#1.

What’s new in Silverblue

GNOME 46

Fedora Silverblue comes with the latest GNOME 46 release.

For more details about the changes that comes with GNOME 46, see What’s new in Fedora Workstation 40 on the Fedora Magazine and Fedora Workstation 40 – what are we working on from Christian F.K. Schaller.

No longer overlay language packages (langpacks) by default

GNOME Software will no longer overlay the langpack packages for your locale on the first update. This should make updates much faster as they won’t need to overlay packages anymore (unless you explicitly decide to overlay some packages).

If you are updating from a previous release, you will have to remove this overlayed package manually. For example:

  1. Find the overlayed package using rpm-ostree status:
$ rpm-ostree status
State: idle
Deployments:
● fedora:fedora/40/x86_64/silverblue
                Version: 40.20240410.1 (2024-04-10T03:43:23Z)
                 Commit: 2428fdbec13787633b3bcd79d4f002ab48582bae8c6a473ca357a1ad43573a94
           GPGSignature: Valid signature by E8F23996F23218640CB44CBE75CF5AC418B8E74C
        LayeredPackages: langpacks-fr

fedora:fedora/40/x86_64/silverblue
                Version: 40.20240402.0 (2024-04-02T00:39:43Z)
                 Commit: 634c8097165e6aab2baeaca6ae6d1ea2a7f11fba9f4955297bcf0fc2507047be
           GPGSignature: Valid signature by E8F23996F23218640CB44CBE75CF5AC418B8E74C
        LayeredPackages: langpacks-fr
  1. Remove the overlayed package and reboot:
$ rpm-ostree uninstall langpacks-fr
...

Note that this will remove the dictionaries for the corresponding language from your system and thus for applications included in the image.

For Flatpaks, the dictionaries are downloaded according to the languages set in the Flatpak config. If you have set your preferred languages in GNOME Settings, this configuration should have been set already. For example:

# Get the current config
$ flatpak config --list
languages: en;fr;de (default: en)
extra-languages: *unset*

# Set the languages to use
$ flatpak config --set languages "en;fr"

See the flatpak-config documentation for more details.

This will also remove the translated man pages for system commands. To get the man pages back, you can install them in a container using toolbox for example:

$ toolbox create
$ toolbox enter
$ sudo dnf install man-pages-fr

See: atomic-desktops-sig#14.

What’s new in Kinoite

KDE Plasma 6

Fedora Kinoite ships with Plasma 6, Frameworks 6 and Gear 24.02 (Fedora Change). See also What’s New in Fedora KDE 40? on the Fedora Magazine.

Wayland only

Fedora Kinoite is now Wayland only. Legacy X11 applications will run using XWayland. See Fedora 40: X11 is now unsupported.

If you have a NVIDIA GPU and encounter issues, I recommend looking at Universal Blue images, waiting for an upcoming NVIDIA driver update that will hopefully improve Wayland support or trying out the updated Nouveau / NVK stack for supported cards.

KDE Apps as Fedora Flatpaks

A subset of KDE Apps are now installed by default as Fedora Flatpaks by Ananconda for new installations. The Flatpaks are not installed on updates but you can install them from the Fedora Flatpak remote or from Flathub.

KDE Flatpak on Flathub

Most KDE Apps are directly published and maintained on Flathub by the KDE community and we have mostly completed the transition to the Qt 6.6 / KDE Framework 6 Runtime.

You can track the progress for the remaining apps in kde/teams/flathub#26.

What’s new in Sway Atomic

Fedora Sway Atomic comes with the latest 1.9 Sway release.

What’s new in Budgie Atomic

Fedora Budgie Atomic ships with the latest release of the Budgie Desktop 10.9 “release series”. Budgie 10.9 features some initial porting work to libxfce4windowing as it progresses towards its move to Wayland and redesigns its Bluetooth applet with new direct (dis-)connect functionality.

Additionally, Fedora Budgie Atomic ships with the latest Budgie Control Center and takes into use budgie-session. As Buddies of Budgie officially supports Fedora, Budgie Desktop has also received numerous backported bug fixes to provide Fedora users an even better experience.

You can learn more about the latest happenings in Budgie on the Buddies of Budgie blog.

What’s next

Unfortunately, this section will be short this time, as there has not been much progress on our future plans since the last time.

We will provide an updated article when more information becomes available.

Teaser for improved update support in Discover for Kinoite

Plasma Discover's main application window, on the update tab, showing a
pending operating system update, which is highlighted in green. For this
update, the size is also available and highlighted in
blue.

Universal Blue, Bluefin, Bazzite and Aurora

Our friends in the Universal Blue, Bluefin and Bazzite projects also released updates for their images.

Universal Blue is now considered Generally Available alongside Bluefin.

For all your gaming needs, Bazzite reached version 3.0, rebasing on our fresh Fedora 40 images.

They are also introducing Aurora, a KDE Plasma and Kinoite based alternative to Bluefin. See the Introduction to Aurora post for all the details.

Where to reach us

We are looking for contributors to help us make the Fedora Atomic Desktops the best experience for Fedora users.

Saturday, 27 April 2024

This year’s foss-north was the tenth incarnation. I’ve been organizing foss-gbg since 2013, and foss-north since 2016 (two events in 2020 makes it ten in total). It’s been quite a journey – moving between three venues, working with amazing speakers and sponsors, finding a way through the pandemic, while getting to know so many people.

The conference continued when fscons moved from town. Henrik, who helped start fscons has been invaluable during the foss-north years.

Over the years, there has been multiple people helping out with things like announcing speakers, manning the registration booth, finding speakers and creating a program. One of the people who has been around the whole time is Tobias, who is ran a large portion of the show this year and is taking over the lead organizer role.

Private life has been rough over the past two years, so the decision to step back from foss-north has been more or less inevitable. So it’s a great feeling to be able to sit down and enjoy the show and know that the event is in good hands with Tobias.

Thank you all for speaking, visiting, helping out at, and sponsoring foss-north. See you at next year’s event. I’ll have more time to mingle than ever before! ;-)

Friday, 26 April 2024

Let’s go for my web review for the week 2024-17.


AI isn’t useless. But is it worth it?

Tags: tech, ai, gpt, copilot, criticism, work

It is an interesting essay. It leans on the side of “assistants are useful for simple coding tasks” and it’s a bit more critical when it’s about writing. The stance is original I find, yes it can help with some writing tasks, but if you look at the writing tasks you can expedite this way… if you wish to expedite them isn’t it a sign that they were providing little value in the first place? Is the solution the assistant or changing the way you work? Indeed this might hide some busy work otherwise.

https://www.citationneeded.news/ai-isnt-useless/


Magic Numbers | blarg

Tags: tech, networking, history

Interesting facts about how the ethernet frame MTU came to be 1500 bytes.

https://exple.tive.org/blarg/2024/04/24/magic-numbers/


Guiding users away from cd and ls :: Terminal Click — Bringing Dead Text to Life

Tags: tech, command-line, terminal

Interesting ideas for terminal emulators and shells. Maybe will make their way in other software.

https://terminal.click/posts/2024/04/guiding-users-away-from-cd-and-ls/


Tips on Adding JSON Output to Your CLI App - Brazil’s Blog

Tags: tech, json, command-line

Nice set of advices. There are interesting things to do on the command line with more JSON output. It needs to be easy to work with though.

https://blog.kellybrazil.com/2021/12/03/tips-on-adding-json-output-to-your-cli-app/


Modern Linux mounts a lot of different types of virtual filesystems

Tags: tech, linux, filesystem

There is indeed a jungle of virtual filesystems nowadays. That doesn’t make it easy to filter only for the “real” ones.

https://utcc.utoronto.ca/~cks/space/blog/linux/LinuxManyVirtualFilesystems


Shared libs, rpath and the runtime linker

Tags: tech, system, linux, linking, debugging

This can sometimes be confusing. Here are a couple of tips about debugging rpath and linker errors.

https://carlosrdrz.dev/shared-libs-rpath-and-the-runtime-linker


Coverage Guided Fuzzing - Extending Instrumentation to Hunt Down Bugs Faster! - Include Security Research Blog

Tags: tech, tests, security, fuzzing

Maybe a bit dry, but gives a good idea of how a fuzz testing harness works. And also how it can be tweaked.

https://blog.includesecurity.com/2024/04/coverage-guided-fuzzing-extending-instrumentation/


HTML attributes vs DOM properties - JakeArchibald.com

Tags: tech, html, web, frontend

There are differences between attributes on the HTML side and properties on the DOM side. This can quickly get confusing, here is a good reference for it.

https://jakearchibald.com/2024/attributes-vs-properties/


3 important things I overlooked during code reviews | Piglei

Tags: tech, codereview, programming

Indeed, naming, comments and communication styles are three aspects often overlooked during reviews. They are very important though and shouldn’t be neglected.

https://www.piglei.com/articles/3-important-things-I-overlooked-during-cr/


First Come First Served: The Impact of File Position on Code Review

Tags: tech, codereview, cognition

I guess we kind of suspected it, this studies tends to prove it. Defects are more easily found in the first files of a code review rather than in the last ones.

https://arxiv.org/abs/2208.04259


Random musings on the Agile Manifesto – NeoPragma LLC

Tags: tech, agile, criticism

Interesting musings indeed. That’s lesser heard opinions about the manifesto and its origins. Good food for thought.

https://neopragma.com/2024/04/random-musings-on-the-agile-manifesto/


Calculus Made Easy

Tags: mathematics, learning

I didn’t know this book. It is written in a surprising style, but it’s very much down to earth and to the point. For sure a good way to learn calculus.

https://calculusmadeeasy.org/


You Are What You Read, Even If You Don’t Always Remember It - Jim Nielsen’s Blog

Tags: reading, knowledge

Very good point. You might not remember the content, but if it impacted the way you think it did its job.

https://blog.jim-nielsen.com/2024/you-are-what-you-read/



Bye for now!

From last Friday to Wednesday I was in Berlin to attend the combined 2024 KDE Goals sprint that was graciously hosted by MBition. Compared to previous goals sprints where there were separate sprints Goal this year was different as all three happened at once in the same area. This allowed attendees to freely switch around the different topics and enables more collaboration opportunities. Lets see how that worked out for me.

Most of my time I actually spent in the context of the accessibility goal. I became part of a discussion of how QML comboboxes in general and the Kirigami Add-ons date picker is lacking in the accessibility departement. As the discussion went to how the default representation of a standard combobox could be improved, the question was raised if it would still be possible to do something special for customized comboboxes. This lead to prototyping on the date picker with the first approach being to forego the built in support in QtQuick and implement the relevant interfaces manually like one would do for QtWidgets. This was a lot of boring boilerplate code but it proved that this option is available for very specialized use cases. The solution we came up with in the end for our use cases was to provide the required properties and roles in a proxy Item that exposes the actual controls to the accessibility tools.

On the automatization front I was involved in creating two new CI checks. The first one is a reuse lint check that only checks new files for compliance which enables older projects to enforce coverage at least for new files. The second was an idea that came up during sprint that we could detect untranslated strings in QML files as these are usually to text properties. While it will never catch all cases during testing we found already some problematic cases in Plasma repositories. We discussed also some other points from the idea list such as a cherry-pick bot like the Qt Project uses and automatic updating the fix version field on bugzilla but these innocuous looking problems have some corner cases which require some more thought.

To the Sustainable Software goal I contributed the least. But together with Aleix and Joseph we debugged why the VNC setup of the KDE Eco Lab machine did not work anymore and fixed it. So in the end I interacted with all three goals.

The combined sprint was a nice experience and facilitated many discussion about the Goals but as always also about other KDE topics as is unavoidable when KDE community members are put together in a room. However I feel while it enabled people to jump around the different goals I am wary that in my opinion this setup removes a bit of focus from each goal compared to dedicated sprints.

Thanks to Mbition for hosting us and as a reminder your donations to KDE e.V make sprints such as these possible.

How To Use Modern QML Tooling in Practice

Qt 5.15 introduced “Automatic Type Registration”. With it, a C++ class can be marked as “QML_ELEMENT” to be automatically registered to the QML engine. Qt 6 takes this to the next level and builds all of its tooling around the so-called QML Modules. Let’s talk about what this new infrastructure means to your application in practice and how to benefit from it in an existing project.

Continue reading How To Use Modern QML Tooling in Practice at basysKom GmbH.

Thursday, 25 April 2024

The Kubuntu Team is happy to announce that Kubuntu 24.04 has been released, featuring the ‘beautiful’ KDE Plasma 5.27 simple by default, powerful when needed.

Codenamed “Noble Numbat”, Kubuntu 24.04 continues our tradition of giving you Friendly Computing by integrating the latest and greatest open source technologies into a high-quality, easy-to-use Linux distribution.

Under the hood, there have been updates to many core packages, including a new 6.8-based kernel, KDE Frameworks 5.115, KDE Plasma 5.27 and KDE Gear 23.08.

Kubuntu 24.04 with Plasma 5.27.11

Kubuntu has seen many updates for other applications, both in our default install, and installable from the Ubuntu archive.

Haruna, Krita, Kdevelop, Yakuake, and many many more applications are updated.

Applications for core day-to-day usage are included and updated, such as Firefox, and LibreOffice.

For a list of other application updates, and known bugs be sure to read our release notes.

Download Kubuntu 24.04, or learn how to upgrade from 23.10 or 22.04 LTS.

Note: For upgrades from 23.10, there may a delay of a few hours to days between the official release announcements and the Ubuntu Release Team enabling upgrades.

Tuesday, 23 April 2024

Hi, I'm Jakob and this is my new KDE blog. Let's see how this goes as I haven't blogged for literally decades.

I started working on Plasma code sometime last year and hope to play a tiny part in setting the stage for world domination improving user experiences like so many other awesome and dedicated contributors do every week. 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.

Quick recap: As a service, PowerDevil is mainly responsible for two rough areas.

  • It will suspend Plasma sessions when the time is right, and also,
  • It adjusts backlight brightness levels of your display and monitors, including the ability to turn them off altogether.

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 low 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.

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 Fedora 40 KDE Spin 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 "This Week in KDE" blog posts, but then again maybe you haven't!

System Settings & Config Data

Energy Saving settings, before and after the redesign. It'll be called Power Management starting in Plasma 6.1.

I'm quite happy with the way the new settings worked out. It also took a while to get there.

A year earlier, I posted an outlandish proposal 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 another UI rework had already been in the works previously, which didn't get merged.

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: "what's the default value for this setting", or "if you click this checkbox a second time can we disable the Reset button again".

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 ~/.config/powermanagementprofilesrc. 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 "Defaults" 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 "Defaults" and "Reset" as much as you want until you decide finally "Apply".

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.

The result is this. Power management settings are now only written if you change away from the default values. If you checked the "Highlight Changed Settings" 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 ~/.config/powerdevilrc.

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 "laptop lid closed" action only once, instead of applying the same change across all three power states. The "custom script" 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.

Special thanks to Nicolas Fella and Nate Graham for their repeated, kind & thoughtful code reviews. Throughout this project and really everywhere else in KDE. Getting (or giving!) that kind of feedback makes a huge difference.

Moved & Removed Functionality

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.

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.

Inhibit sleep or screen turn-off in the settings for Activities

Natalie Clarius has invested lots of time into system tray applets. Instead of a single "Battery and Brightness" applet and a separate "Night Light" applet, the brightness settings in Plasma 6.0 are now colocated with Night Light as "Brightness and Color" applet. This leaves the "Power and Battery" 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).

New & Improved Functionality

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.

Turn off screen when locked in Energy Saving settings

We still need to streamline the settings UI a bit, in line with the "simple by default, powerful when needed" mantra.

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.

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 POWERDEVIL_NO_DDCUTIL=1 environment variable for the PowerDevil service on startup.

On-screen display for switching power profiles

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.

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 "run conditions" 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.

New sleep mode drop-down in Energy Saving settings

Auto-suspend after inactivity, laptop lid closure and power button presses now each allow you to select "Sleep" vs. "Hibernate" as their respective suspend actions. The "Hybrid sleep" option and the confusingly placed "Sleep, then hibernate after a period of inactivity" 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.

Functionality that just keeps working!

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.

So I am very happy that UPower has indeed released a new version, 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.

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 ddcutil 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. ddcutil works again as intended in a Plasma session.

Beyond 6.0

The System Settings module will be renamed from "Energy Saving" to "Power Management". This used to be the name of the entire category containing the "Energy Saving", "Advanced Power Settings" and "Activity Power Settings" modules. After the redesign, there is only one module left and it can be called by the arguably more appropriate name.

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).

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.

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.

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.

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 "the lowest value that's higher than 0%" 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.

How You Can Help

There are a lot of edge cases and system configurations that could still be handled in a better way.

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 the new README file.

Consider helping with bug triage! PowerDevil on KDE's bug tracker has a service component with lots of reported bugs, as well as a component for the System Settings module 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. Read this 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.

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.

You can also donate to KDE 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 Akademy 2024.

Discuss this post on KDE Discuss.