Skip to content

Tuesday, 7 October 2025

Open source communities are outstanding learning environments. By contributing, you learn actively, get real feedback, and grow faster than in most companies. If you want to take control of your career, start with open source.

In September, I spent over 12 hours in airplanes and trains getting to Berlin to attend my second Akademy conference. The experience once again made the long trip worthwhile. It was lovely to see some familiar faces, and to meet other folks for the first time. This was my second trip to Berlin, and it was nice to see different areas of the city than last year. Like last year, people were so approachable, friendly and easy to talk to. The welcome event was at the lovely Schleusenkrug Beer Garden, just a short walk from the venue, nestled in one of the many areas of greenery.

There were more talks and BoFs I attended than I'll mention, these are things that stood out to me. There were so many good talks and workshops, I recommend checking out the recordings.

A small tangent about travel comfort

Or - How to spend a week in a different timezone without feeling like a zombie.

The jet lag was a lot easier this year because I learned the wisdom of hydration and getting decent rest on long haul flights. I took some electrolyte drink powder with me, which I mixed into the little bottles of water on my long flights. This made a huge difference in my energy levels and how much I enjoyed my time in Berlin.

Saturday

Opening things up, the keynote "Open by Design: How Governments Can Lead the Shift to Digital Sovereignty" made excellent points about the importance for countries to enable independence, autonomy and security in the digital world.

My colleague David Edmundson gave an informative talk on "Plasma: Lessons Learned and Our Path Forward in 2026 and Beyond". He recounted, with honesty and humor, things Plasma has done well and not so well over the years. There were good points to keep in mind, as someone focused on testing and quality, while reviewing bug reports and merge requests.

There were a handful of talks and BoFs about KDE Linux and the growth of the obtsalat. This is an important project for KDE in terms of dogfooding and testing, so I like keeping up to date on things here.

The talk "From Misunderstood to CEO – Breaking Bias and Building Inclusion" was particularly interesting, as a woman in a male dominated industry. I heard echos of some of my experiences, as well as useful advice on dealing with bias.

Sunday

The keynote "The Politics of the Pull Request: How Open Standards Can Shift Power" was educational. It made me aware of the ways in which technology does more than enable us to get work done. It shapes the conversations we have and the world we live in, in a tangible way. It determines who can access things that are fundamental to living in society and who can't. Open source can be more than a way of collaborating, it can also help make things more equitable for more groups of people. I especially liked that the "myth of meritocracy" was highlighted and challenged. It's a topic I've seen debated online quite a bit over the years. Recently, especially, I've seen various claims that "technology shouldn't be political", and this described the many ways technology can't help but be political. This is one talk I'd really recommend watching because it exposes things people might not think about or realize - such as how current systems enable rich and powerful families to stay that way and exclude others - as well as highlight ways open source projects can change things for the better.

"Handling Negative Feedback" by my colleague Akseli Lahtinen was informative about types of negative responses we might get in our open source work, and practical ways of handling it. He had useful advice not just about responding in productive ways, but also about taking care of ourselves to avoid burnout. There was also useful information about mentoring people, as well as encouraging community and maintainers. Related, David Edmunson had a talk specifically about "Maintainers Don't Grow on Trees".

"Getting Hired to Work on FOSS" had useful advice on working on FOSS for a paycheck and how it's different than when it's your hobby. It's useful for anyone thinking about making their FOSS work their living. There's information especially good for people who don't have experience working for a more traditional company.

In "Mass Migration from Windows", I could very much relate to the challenges of getting open source accepted in a business. Reluctant IT departments, nervous managers asking about who will support things; I'm sure I'm not alone in having met those points of friction when trying to use an open source operating system at the office. There was practical information of addressing those points and ways the sitation is improving.

Nate Graham, another colleague, spoke about "Minding the Big Picture: Opportunity from Chaos". This spoke to some of the surprising advantages of these "abnormal times" that KDE can take advantage of. There are some areas where KDE can do practical work to be a real leader in bringing the Linux desktop experience to more end users and enterprises.

The Social Event

After all those talks, it was nice to just hang out. We were at a bar and hacker space Sunday evening called c-base, which reconstructs a fictional, crashed space station. Neat! The company and the beer were nicely refreshing and it was a pretty chill place.

The Wednesday Day Trip

The day trip on Wednesday had two parts. The first was a scavenger hunt, which I skipped out on. Akseli, his wife and I went to Alexanderplatz and had bubble tea near the TV Tower before joining the others. The group then went to the Computerspielemuseum (Computer History Museum), which was a treat. In addition to information about historical computer advancements, and interactive exhibits, there is a small arcade, and some mini-room setups. There was a student desk that reminded me of one I had (mine had the Commodore 128 my brother and I shared). There were also models of historical computers on display. One of these was a TRS-80, the first model I had at home and where I learned word processing.

BoFs

End of 10 Campaign - discussion of the next steps and how folks can help out.

Automatic QA / Recoverability - in which I refreshed my familiarity with the tools currently being used.

KWallet Secret Service: problems and roadmap - this is something I keep up to date on in relation to development and QA.

KDE Out of Box Experience - you might be familiar with this as KISS. It's a setup UX for the first boot of a newly purchased / installed system. This is going to make life easier for people getting a pre-built system as well as for enterprise installation fleets.

That's a Wrap

After a week in Berlin, I was sad to leave but was at the same time looking forward to getting back home. As announced on 27-Sept - Rewatch the Highlights - Akademy 2025 Talks & Sessions Now Available Online. Time to check out recordings of things I wasn't able to attend. K'm looking forward to next year. The Call for Hosts is live, and it will be Akademy's 30th birthday!

Monday, 6 October 2025

Better late than never! After quite a few requests, here’s the second part of my backpacking adventure through the Balkans from back in July. If you missed the first part, you can check it out here.

After leaving Croatia, I traveled to the central Balkan countries: Bosnia and Herzegovina and Serbia.

Mostar

Since there were no trains from Split to Mostar, I took the bus instead.

Stop on the middle of the road
Stop on the middle of the road
Landscape from the bus
Landscape from the bus

In Mostar, I stayed at another Hostel called Taso’s House. It was a small hostel but the host made us discover the whole Herzegovina region and explained us a lot of things about his country, the complex political situation there and how it was to grow up in Mostar during the war.

The old bridge of Mostar
The old bridge of Mostar
View from the old bridge
View from the old bridge
Bunker for airplanes build during the Yugoslavia time
Bunker for airplanes build during the Yugoslavia time
Town next to Mostar called Blagaj
Town next to Mostar called Blagaj
Another view of Blagaj
Another view of Blagaj
Two rivers merging together and creating some waterfalls
Two rivers merging together and creating some waterfalls
The same two rivers
The same two rivers
Old Bosnian village
Old Bosnian village
The Kravice Falls
The Kravice Falls
The group of people I spent my time in Mostar
The group of people I spent my time in Mostar
View from Mostar in the evening
View from Mostar in the evening
Close view from the old bridge
Close view from the old bridge

I only stayed there for two nights, and I regret not staying a bit longer or visiting the genocide museum, which I’d heard great things about.

Sarajevo

The next stop on my trip was Sarajevo, the capital of Bosnia and Herzegovina. I booked a train ticket online, and this is what I got. It was slightly tricky to import into KDE Itinerary, but the train ride itself was very enjoyable. Interestingly, although the train has both first- and second-class coaches, all tickets are sold as second class, and passengers are free to sit in the first-class coaches — which I did. 😉

train ticket printed

Sarajevo itself was beautiful, and I took the cable car up into the mountains to visit the old Winter Olympics park. I even ended up appearing on the city’s television YouTube channel as a sort of side quest, along with three Australians.

River in Sarajevo
River in Sarajevo
Taking the cable car
Taking the cable car
Old Bobsleigh
Old Bobsleigh
Old destroyed building by the war
Old destroyed building by the war
View from the old destroyed building
View from the old destroyed building
View of Sarajevo
View of Sarajevo
A copper shop (there was a lot of them in Bosnia)
A copper shop (there was a lot of them in Bosnia)

Belgrade

Afterward, I went to Serbia — more precisely, to the capital, Belgrade. I took a night bus, which turned out to be a bit stressful. I almost missed it because I didn’t have one euro in cash to pay a surprising platform fee to enter the bus station. Then, at the border around 2 a.m., I was the only one who had to go through a full luggage check.

In Belgrade itself, I didn’t do much. I spent a lot of time at the hostel talking with other travelers and petting the hostel cat. I was a bit shocked by the amount of military propaganda I saw everywhere in the city.

Me before taking the bus
Me before taking the bus
Cool place in Belgrade full of bars
Cool place in Belgrade full of bars
The citadel. There was a massive amount of old war machines next to it.
The citadel. There was a massive amount of old war machines next to it.
Ice tea
Ice tea
Matcha <3
Matcha <3
A orthodox church
A orthodox church
The crypt of orthodox church
The crypt of orthodox church
Soviet style monument about the second world war
Soviet style monument about the second world war
The cutest cat ever <3
The cutest cat ever <3

Niš

On my way to Bulgaria, I made a short stop in Niš, in southern Serbia. It’s one of the largest cities in the country and has a strong Turkish influence.

Entrance of the old Turkish fortrest in Nis
Entrance of the old Turkish fortrest in Nis
The other side of the entrance of this fortrest
The other side of the entrance of this fortrest
Selfie of me :)
Selfie of me :)

Sofia

My next stop was Sofia, the capital of Bulgaria. Since there are no longer any passenger trains running between Niš and Sofia, I took an old bus from Niš across the Serbian and Bulgarian countryside, but the ride was confortable.

I only stayed one day in Sofia and scrolled the city with some people I meet in my hostel.

I visited the ‘Red Flat’, which was a time capsule of how a flat looked during the end of the comunism time. This was quite a retro experience. I also ended up visiting more orthodox churches.

A train
A train
Morning Matcha <3
Morning Matcha <3
The living room of the 'Red Flat'
The living room of the 'Red Flat'
The bedroom room of the 'Red Flat'
The bedroom room of the 'Red Flat'
Another gigantic orthodox church
Another gigantic orthodox church

Istanbul

The last stop on my trip was Istanbul. I took the night train there, which turned out to be a bad experience — we ended up waiting four hours at the border, and the whole process was quite inefficient.

Istanbul itself was amazing. I had originally planned to stay only three days before heading back to Bucharest, but I found a cheap flight (€50 with luggage) back to Berlin, so I ended up staying a total of six days. I stayed at a hostel called Second Home Hostel, which turned out to be a really fun place. The staff were extremely friendly, I met a lot of amazing people there, and we went out partying almost every night.

I also meet Jon Worth who was working on his #CrossBorderRail project and was at the same time in Istanbul.

The night train I took
The night train I took
Me at 2 in the morning waiting for border check
Me at 2 in the morning waiting for border check
Me in front the Hagia Sophia
Me in front the Hagia Sophia
One more hostel cat :)
One more hostel cat :)
Small cute street
Small cute street
Lot of olives
Lot of olives
Nice food but I can't remember what was inside, just that it was vegetarian and with some rice
Nice food but I can't remember what was inside, just that it was vegetarian and with some rice
More cute street
More cute street
Interior of a mosque
Interior of a mosque
The spice market
The spice market
I drank some chai so many times a day
I drank some chai so many times a day
And there was cats everywhere
And there was cats everywhere
Famous umbrella street
Famous umbrella street
Beach during a day trip
Beach during a day trip
Istanbul by night
Istanbul by night
View from a ferry to the other side of Istanbul
View from a ferry to the other side of Istanbul
The group of people I hanged with during this trip
The group of people I hanged with during this trip
Prince island
Prince island
One of the biggest wood structure of the world: Büyükada Greek Orphanage
One of the biggest wood structure of the world: Büyükada Greek Orphanage
The Blue Mosque
The Blue Mosque
The Blue Mosque inside
The Blue Mosque inside
Sunset
Sunset
Selfie on a ferry
Selfie on a ferry
Selfie after going to a hammam/turkish bath
Selfie after going to a hammam/turkish bath

And now back to the reality but I am already looking forward to my next backpacking trip.

A script element has been removed to ensure Planet works properly. Please find it in the original post. A script element has been removed to ensure Planet works properly. Please find it in the original post.

One of the key problems we identified with previous KDE neon releases was that only user edition was receiving any meaningful testing. This often lead to a situation where problems were identified only when user edition was being readied for public release and bug squashing was hurried and therefore less than ideal.

To try and fix this problem, a dev archive named stable was created (this happened in Novemeber 24) and the daily builds for the neon testing are now uploaded there. Various automated and manual tests are run and when we are happy (usually at least on a weekly basis), the archive is snapshot out to the public facing testing archive. This is the same process that is utilised for KDE neon user edition which is snapshot from the dev based release archive.

So hopefully users of KDE neon testing and user editions have seen improved stability and less critical bugs over the last year. Live ISO’s are available to try at https://neon.kde.org/download

Sunday, 5 October 2025

We are back!

"This Week in KDE Apps" is back! It's been a long time since the last issue, but every week, we cover as much as possible of what's happening in the world of KDE apps.

Getting back to all that's new in the KDE App scene, let's dig in!

KDE PIM

Merkuro Mail Read and write emails

Yuki Joou improved the handling of sender information in the mail viewer header (25.12.0 - link). She also fixed the mail composer not showing the right sender address (25.12.0 - link).

Merkuro Calendar Manage your tasks and events with speed and ease

Yuki also worked on Merkuro Calendar and fixed adding sub-items to tasks (25.12.0 - link), added a menu button to show/hide all calendars from an account (25.12.0 - link), and made sure we are only showing one refresh button in the account context menu (25.12.0 - link)

Supporting PIM libraries

Volker Krause made some more parts of the KMime API const correct and adapted various parts of the PIM codebase to that.

Allen Winter made Akonadi prefer MariaDB to MySQL when both are available (25.12.0 - link).

Multimedia Applications

Okular View and annotate documents

Volker Krause added some of the missing icons on Android (25.12.0 - link).

Photos Image Gallery

Marco Martin optimized starting Photos when opening it with a specific image (25.12.0 - link).

Games Applications

KRetro Libretro emulation frontend for Plasma

Seshan Ravikumar released a first alpha release for KRetro, a new game emulator based on libretro. You can read his announcement here

Chat Applications

NeoChat Chat on Matrix

Joshua Goins fixed room succession not actually working (25.08.4 - link).

Arno Rehn fixed the handling of encrypted polls and pinned messages (25.12.0 - link).

Browsers

Falkon Web Browser

Juraj Oravec added a "Dis/Enable Adblock" button to the adblock context menu (25.12.0 - link).

Konqueror KDE File Manager & Web Browser

Stefano Crocco fixed some issues with the searchbar (25.12.0 - link)

System Applications

Dolphin Manage your files

Kostiantyn Korchuhanov added the ability to hide files and folders from the Dolphin content menu. (25.12.0 - link)

Akseli Lahtinen added a separator to the navigator when it's used outside of the menubar. (25.12.0 - link)

Jean-Baptiste Mardelle fixed a bug where the video preview panel was crashing Dolphin when a video file was selected in some cases. (25.08.3 - link)

Journald Browser Browser for journald databases

Andreas Cord-Landwehr fixed case-sensitive search not being applied when navigating between highlighted matches. (link)

Help Center Browse and search documentation

Carl Schwan (me) changed the name used in Discover and apps.kde.org to Help Center instead of the old internal name: KHelpCenter. (25.12.0 - link)

Travel Applications

KDE Itinerary Digital travel assistant

Jonah Brüchert fixed some performance issues when showing the search results for a train/bus connection. (link 1, link 2 and link 3)

Carl Schwan (me) moved the licensing information about the components used in Itinerary to use standard KAboutComponent infrastructure. (link)

A Pixel 3a with postmarketOS running KRetro on Plasma Mobile
A Pixel 3a with postmarketOS running KRetro on Plasma Mobile

KRetro is a libretro frontend from KDE written in Qt with Kirigami! That means when given both a libretro core, and a game cartridge/disk ROM, it plays your favourite games. It is designed to be convergent, usable across all Plasma Platforms: Desktop, Mobile and Bigscreen.

What is Libretro?

You may have heard of RetroArch, a popular and famously portable retro game emulator frontend with a console-style UI. One of the important innovations from RetroArch is libretro, a standard API that can adapt the many numbers of independent game console emulators to a single program. This is what allows RetroArch to support a vast number of systems without needing to build support for each bespoke emulator into the frontend itself.

A libretro “core” is simply a .so/.dylib/.dll dynamic library file that packages an emulator (or an independent game), and can be loaded into any application that can consume it using the libretro.h C API specification.

Through the libretro API, cores are adapted to the native Qt interface of KRetro (for example, pixels are drawn onto a QImage, audio is rendered out using Qt Multimedia, and reading keyboard events is handled by the QML engine).

The Road to KRetro

KRetro screenshots – Desktop game view and player view, and the mobile player view.

KRetro’s development started in 2023 with a desire to help build more apps for Plasma Mobile (shout out to Devin for the idea and help along the way). I worked on it for a while, but unfortunately got busy with school and other things. In addition, the Qt 6 transition came and went, which left KRetro effectively abandoned.

Thankfully, in 2024, Dexter Reed came through with an MR to port the KRetro codebase to Qt6. And finally, in 2025 with more time on my hands, I finally picked the project back up, bringing us to today!

The name? The K-prefix naming has mostly been phased out these days in KDE for new apps… you could say it is a retro naming scheme 😉

What KRetro Can Do Today

As you probably guessed, this is an Alpha quality release, and while I did my best to have the experience be polished, you should expect bugs and missing features.

The Game Library view on KRetro – a list of game ROMs

More importantly, KRetro is not feature complete. This release is intentionally limited – I wanted to make sure the scope was not too large so meaningful progress can be made towards a release.

As of this first alpha release, KRetro can play games from the following fixed list of consoles:

  • Nintendo Entertainment System/Famicom
  • Super Nintendo Entertainment System/Super Famicom
  • Game Boy Advance
  • Sega Master System
  • Sega Genesis/Mega Drive
  • libretro 2048 (a built-in demo game)
A screenshot of the KRetro Controller Settings Page. A list view with each button (A,B, etc) and what it is currently bound to.
KRetro Controller Settings Page

KRetro also supports fully mappable controls for both keyboard and controller inputs, though only 1 port is available for now (so no multiplayer). Controller support is provided by SDL3 (and keyboard input is handled directly from the QML engine).

Per-game save states menu in KRetro

KRetro has a system for managing save states for each of your games, including a default save slot that automatically saves and restores your game progress when you quit and launch KRetro.

The Road Ahead: What’s Left to Do?

Lots! In fact, too many things to list here in detail. There are a number of big ticket items though, like enabling OpenGL/Vulkan support for cores (this will allow supporting most 3D consoles, like the N64, Wii, or Playstation), or allowing arbitrary core+rom combinations (allowing users to select any of the 200+ libretro cores they want, instead of having a fixed list of consoles as it is currently).

There are also lots of smaller quality of life features, for example:

  • Supporting more than 1 controller
  • Improve the touch controller layout on tablets
  • A better game/ROM list with extended metadata
  • Save state screenshots
  • And many more…

The Mobile platform also needs some more love specifically, like having transparent and customizable touch controller layouts.

Plasma Bigscreen support is generally pretty rough (given that Bigscreen itself isn’t released yet either), there is only basic remote navigation support for selecting games, and all other parts of the UI require a mouse to reach (such as the settings page).

KRetro has also at one point in the past run on Android (which is to say – it should be able to run on Android, but this hasn’t been tested in quite a while, and is probably broken), and iOS builds have never been attempted (however it has been run on macOS).

Does any of these features interest you, and you want to help out? Do you have more ideas? Come and contribute on the KDE Invent page!

Trying out KRetro

Sonic the Hedgehog on KRetro

Given that this is the first release, and an alpha quality release, KRetro is not packaged on any distros yet. The easiest way to experience KRetro if you are on x86_64 is to use the nightly flatpak:

flatpak install https://cdn.kde.org/flatpak/kretro-nightly/org.kde.kretro.flatpakref

Otherwise, you’ll need to grab the source and compile it, either the release tarball or even more bleeding edge, from the git repo.

Download the tarball: https://download.kde.org/unstable/kretro/0.0.1/

$ wget https://download.kde.org/unstable/kretro/0.0.1/kretro-0.0.1.tar.xz
$ tar xvf kretro-0.0.1.tar.xz && cd kretro-0.0.1/

$ mkdir build && cd build
$ cmake .. # install required dependencies if needed
$ make -j${nproc}
$ ./bin/kretro # or sudo make install

Update 2025-10-06: There is also now a kretro package on the AUR for Arch Linux users! https://aur.archlinux.org/packages/kretro

Besides installing KRetro, you will also need some libretro cores. On the nightly flatpak, these are already bundled in for you, and you’re ready to play games! If you install KRetro manually, the recommended/tested cores are as follows:

  • Nestopia for NES
  • snes9x for SNES
  • mGBA for GBA
  • Gearsystem for SMS
  • BlastEm for Genesis/MD

Some distros (like Arch and Alpine) already package these, so you can install them from their package managers (ex. pacman -S libretro-snes9x). Once installed, you can select them for use in the KRetro settings.

Games are detected and matched to their respective console type by their file extension, so all you need to do is place your game ROMs in “~/Documents/Games” (or another folder of your choosing).

Reporting Bugs and Getting Involved

Since this is an alpha release, you’ll probably run into bugs and crashes, the best way to report those is to the KDE Bugzilla: https://bugs.kde.org/enter_bug.cgi?product=kretro

For general discussion (especially if you want to contribute), I recommend you join the KDE Games Matrix room.

And last but not least, if you would like to develop and hack on KRetro, you can find everything you need at: https://invent.kde.org/games/kretro

Thank you!

Thank you for reading this far! I hope you will try out KRetro and enjoy it, and I hope the KRetro community will grow too!

I would like to give a special thanks to Devin Lin for his invaluable help, without him KRetro would never have gotten this far. I’d like to also give thanks to Carl Schwan for helping me along the KDE development process, his contributions to KRetro, and for being my sponsor for getting KDE developer status.

Konqi loves playing games on KRetro!

Saturday, 4 October 2025

In 2016, after being a Mac guy for 23 years, I took the plunge and made a full-time switch to Linux. I did my research, and over and over again encountered the idea that GNOME was good for MacOS refugees like myself. So I gave it a try!

But my experience didn’t support the meme. I think a lot of people make this assertion without really having a deep understanding of the MacOS user experience, or the actual positive qualities of the software, because I don’t think GNOME offers a particularly Mac-like experience at all.

Don’t get me wrong, I think GNOME shell is pretty good, and largely succeeds at doing what it sets out to do. But that thing does not appear to be “offer an experience that’s a lot like MacOS.”

I still see this mentioned on forums and YouTube videos today. I don’t think it’s helpful, and today I want to provide a bit of context from my perspective.

So let’s compare MacOS and GNOME! Right away we see some obvious differences:

MacOS image from https://betawiki.net/wiki/File:25A354-Desktop.png; GNOME 49 image screenshotted by me

Dock

One of the the two major anchoring user interface (UI) elements on MacOS is the dock. It’s an app launcher and switcher, an unread count notifier, a place for minimized windows to go, a quick shortcut to the trash, downloads folder, and any other files or folders you put on it.

GNOME doesn’t have this. Its anchoring UI element is the Activities Overview screen, which contains a small program launcher, but the whole thing is hidden by default, meaning it can’t be easily used for monitoring unread counts or switching between apps. It’s also not customizable at all, while the MacOS dock is extensively customizable. It’s just a very different experience.

Global menubar and app functionality

The other major anchoring UI element is the global menu. Every Mac app exports a global menu structure, including the desktop itself. This allows Mac apps to be visually simple, because all the powerful features are hidden away in the menu structure.

GNOME has a top bar, but there’s no global menu on it. And while GNOME apps do generally have a level of visual simplicity that’s similar to Mac apps, they’re usually more limited in functionality, and they don’t export menu structures full of extra features.

Desktop icons

On MacOS, you can put files and folders on the desktop, and use it for managing frequently or recently used files. Internal and removable drives appear there, too.

GNOME doesn’t have this. The desktop is just a picture; you can’t use it for anything functional.

Window minimize/maximize buttons

On MacOS, if you need to get a window out of your way, you minimize it, just like you do on Windows, Plasma, etc. It flies into the dock and it’s clear how you get it back. You can also maximize a window from another button on the titlebar, and it goes into another.

GNOME apps have neither of these buttons. As a result, it’s not clear how to get a window out of the way or make it bigger without a lot of manual work. You can add those buttons later using the separate Tweaks app, but it’s clear that the system was not designed for it.

At-a-glance app status monitoring

MacOS includes a classic “System Tray” style UI on the top bar holding the global menu. Here apps can put little icons that communicate their state while running but without any visible windows. The MacOS dock also displays unread counts and progress information for running apps.

GNOME doesn’t have these features, either at all, or in a way that’s always visible. Instead, it relies on apps sending notifications about changes to their status.

Configurability

Contrary to popular belief, MacOS is surprisingly rich in personalization options. You can customize the widgets on the desktop or notification center, the text size, highlight colors, sidebar icon sizes, places panel items, screensaver, scrollbar appearance and behavior, lock screen message, menubar positioning, UI alert sound, almost everything about the dock, and so on.

GNOME’s approach to configuration is much more minimal, and the officially-supported options are pretty sparse. Instead, mostly the way you personalize the system is by using Extensions, which can do much more than you can in MacOS, but also offer no long-term compatibility guarantee, so there’s a chance any of the extensions will break with every new release.

So where does the bridge from MacOS lead?

Again, I think GNOME is pretty good… it just doesn’t offer a MacOS-like experience. What it does offer is a near-zero distraction experience. That’s the design goal, and it succeeds. But it’s not MacOS’s design goal.

So if not GNOME, where’s the more MacOS-like experience for refugees? Honestly, KDE Plasma is what I would recommend. It’s where this MacOS refugee ended up, at least. Let’s compare again, but this time with KDE Plasma:

MacOS image from https://betawiki.net/wiki/File:25A354-Desktop.png; Plasma 6.4 image screenshotted by me

Like MacOS, Plasma has a dock-style panel. Despite a few visual differences, it handles the same things: launching apps, switching between apps, seeing apps’ unread counts, and holding minimized windows. This panel also contains the System Tray UI. It’s here rather than on a top panel, but it’s a small difference.

Though neither screenshot shows files on the desktop, both support it. Similarly, both support desktop widgets for building highly personalized workflows.

You can also minimize and maximize windows in Plasma just like you can on MacOS.

And finally, you can personalize a Plasma system in a wide variety of ways — as much or more than you can can on MacOS, in most cases — and all in a 1st-party supported way. There are also GNOME-style extensions available for people who want even more, but these make use of a stable API that only changes about once every 10 years, so compatibility issues are much rarer.

There are still differences, of course: major ones are Plasma’s Windows-start-menu-style Kickoff Application Launcher and the lack of a global menu. But Kickoff can be swapped out for something else or removed, and the Global Menu is actually a fully-supported 1st-party feature, simply being off by default. If this is a part of MacOS that you really like, turning it on is very easy:

Other smaller differences include disks not appearing on the desktop, and maximized windows not going into new virtual desktops.

But in my opinion and experience, these differences are relatively minor, and I don’t think it’s worth chasing the dream of a 100% pixel-for-pixel clone of MacOS on Linux. Rather, I think it’s best to take the most successful parts and ditch the sources of awkwardness. And in my opinion, KDE Plasma fits the bill.

So if you’re leaving MacOS because you found it too distracting, then I think GNOME may be a good option. But if you’re leaving for other reasons, give Plasma a try!

A few months ago, we announced that LabPlot had received funding from the NGI Zero Core fund. This was to help us focus on three features we’ve wanted to add for a while: Analysis of Live Data, Python scripting, and more statistical analysis functions.

We’re pleased to announce that we have now completed the main goals for this project. As part of the new statistical functions, we’ve added a comprehensive suite of statistical hypothesis tests:

  • One-Sample t-Test
  • Independent Two-Sample t-Test
  • Paired Two-Sample t-Test
  • Welch t-Test
  • One-Way ANOVA Test
  • One-Way ANOVA with Repeated Measures Test
  • Mann-Whitney U Test
  • Wilcoxon Signed Rank Test
  • Kruskal-Wallis Test
  • Friedman Test
  • Log-Rank Test
  • Chi-Square Independence Test
  • Chi-Square Goodness of Fit Test

These new features have been implemented and will be ready for you to use soon. We hope they will be a valuable addition for our users. This work was made possible by the financial support from the NLnet Foundation and the European Commission through the Next Generation Internet Program, and we are grateful for their contribution.

The work on LabPlot continues, and our team is already busy on the next set of improvements and functions. As always, your feedback is important in guiding our next steps. We look forward to sharing more updates with you in the future.

In the past two months since the last update KDE Itinerary got the ability to use the current location as a starting point for journey searches, a currency converter and the ability to store hotel room details, among many other improvements.

New Features

Journey searches starting at the current location

The current device location can now be used as a starting point for journey searches.

Itinerary's departure location search page with a new option to use the current location.
Current location option in departure location search.

For more details, see Kai’s blog post on this.

Currency converter

The same blog post also covers the newly added currency converter. While Itinerary was able to show currency conversion rates since some time already it now also allows to enter arbitrary values and get those converted in either direction.

Itinerary's trip page, with the currently converter shown on top.
Currency converter.

Hotel room details

Another addition is a new field in hotel reservations to record room numbers or room access codes, which is particularly useful in hotels where you are presented with all that just on a display during (automated) check-in, rather than a physical key or paper card.

Itinerary's hotel reservation page showing a new free-form description section.
Hotel room details.

Kai covered this in another blog post.

Events

In about two weeks there’s the first edition of the Open Transport Community Conference in Vienna, Austria. That covers many topics highly relevant for Itinerary, from public transport routing over liberating public transport schedule data to ticket barcodes, to just name a few. Excited to see what will come out of this.

There’ll also be two more OSM Hack Weekends, one in Berlin and one in Karlsruhe.

Infrastructure Work

Served transit modes at stops

For public transport data backends supporting this, KPublicTransport can now also list the served modes of transportation or even the served public transport lines for stops in geocoding queries.

This allows for a more detailed display of location search results. The current location search UI doesn’t make use of this to the fullest extent yet though, only generic mode icons are shown based on this so far.

Itinerary's location search results showing different icons for airports, major railway stations and metro stops.
Transit modes in location search results.

This is currently available with OpenTripPlanner and Hafas-based backends, and will also benefit KTrip.

Matrix trip synchronization

There has been some progress on the long-promised Matrix-based trip synchronization between different instances of Itinerary. In particular, the synchronization code can now properly handle the Matrix event size limit and transparently place larger elements into encrypted files. It also covers all of Itinerary’s internal data types (reservations, transfers, live data, Wallet passes and documents) meanwhile.

There’s still issues to work out around the edges, especially the first moments of syncing a new trip and the very last ones when deleting a trip.

Android SDK 35 support

Itinerary together with all other KDE applications for Android and their underlying stack had to be adapted to work correctly with the now mandatory edge-to-edge mode of Android SDK 35. If this works correctly you wont notice a difference, apart from a few places with fullscreen content. Without it things would have either looked very broken or we would not have been allowed to update via the Google Play store anymore.

Itinerary's favorite location picker map expanding below the Android navigation bar until the screen rounded edge.
Fullscreen content expanding to the screen edge.

There’s a separate post with more details on this topic.

MOTIS update for Transitous

A particularly significant MOTIS update deployed on Transitous was v2.2 which brought the ability to modify schedule data with Lua scripts applied during data import.

This allows to fix issues in the input data that we so far failed to get fixed upstream, and to normalize conventions between different datasets.

Prominent examples include the German long distance trains now being named in the expected way (using the trip number rather than the much less commonly used line number), and Flixbus busses in Europe actually being classified as long-distance bus services (which is important for filtering to work).

There’s more to fix still, the French long distance trains for example have a similar problem as the German ones, this probably deserves its own post eventually.

Fixes & Improvements

Travel document extractor

  • Added or improved travel document extractors for AirAsia, B&B Hotels, Booking.com, Center Parcs, Colosseum, Cvent, Ethiad, Eurostar, Eventbrite, FCB, Finnair, LTG Link, Northlink Ferries, Odoo, pathe.fr, Pretix, RegioJet, Ryanair, SNCF, Tito, tixly, United Airlines and ZSSK.
  • Fixed parsing of Apple Wallet passes with an UTF-8 BOM in their message catalogs.
  • Added support for Apple Wallet pass bundles (.pkpasses files).
  • Use Aztec barcodes for MÁV domestic tickets, even when given as PDF417 barcode. This hopefully fixes issues with getting PDF417 MAV tickets scanned correctly.
  • Give extractor scripts the ability to explicitly request rotated text.
  • Consider dividing trains when determining whether two reservations refer to the same trip.

All of this has been made possible thanks to your travel document donations!

Public transport data

  • Handle additional transit modes added in MOTIS v2.0.76 (aerial lift, cable cars, funiculars).
  • Make use of timezone information from MOTIS v2.3.
  • Support variable polyline encoding resolutions for MOTIS.
  • Parse vehicle features and operator information in legacy Hafas journeys.
  • Fix parsing of intermediate stops in legacy Hafas journeys.
  • Fix parsing of SNCF onboard data with missing carrier information (bug 506874).
  • Support result paging for LTG Link and Srbija voz.
  • Add support for two new EFA transit modes (on-demand services and long distance busses).
  • Sort the location search history locale-aware.
  • Improved automatic backend selection for location searches without any context information.

All of this also directly benefits KTrip.

Itinerary app

  • Also show ticket barcodes for hotels when available. While somewhat rare this is quite relevant when used.
  • Initially position the journey result view at the end for searches by arrival time (bug 507149).
  • Prefer 2D barcodes in Apple Wallet passes when available, those are more reliable to scan on a mobile phone display.
  • Remove duplicated entries from seat number displays.
  • Include location search history and downloaded public transport assets in the exported data as well, allowing for a more complete migration to another device.
  • Use a more appropriate time format in delay notifications.
  • Fix rendering of some rich text Apple Wallet fields.
  • Also show event names on the trip map view.
  • Show the maximum occupancy of any stop if we have no occupancy information at the departure stop.
  • Improved the performance of displaying journey search results.
  • Downloading public transport logos now also follows the setting for using Wikimedia online content.
  • Fixed scaling issues in public transport SVG icons.
  • Put action groups consistently into the overflow menu of they don’t fit into the toolbar.
  • Fixed transfer time calculation to events without end time.
  • Allow adding another transfers if an adjacent transfer is far enough away.
  • Fixed handling of elements without an explicit end time in automatic trip grouping.
  • Prefer the current trip when determining the default import target.
  • Fix applying flight journey query results to flight reservations, and create entries for aerial lifts.

How you can help

Feedback and travel document samples are very much welcome, as are all other forms of contributions. Feel free to join us in the KDE Itinerary Matrix channel.

Welcome to a new issue of This Week in Plasma!

This week we released the second beta of Plasma 6.5, and there are a lot of fixes in it! This week also sees some great bug fixes, as well as a number of UI improvements related to language and time.

Notable UI Improvements

Plasma 6.5.0

When you’re using your system in a language that’s not English, you can now find Emojis in the Emoji Selector window by searching for their English names, in addition to the names in your primary language. (Kai Uwe Broulik, link)

English search for “Cherries” resutning the right Emoji when the system language is set to German

Week numbers shown in Plasma’s various calendars have now been italicized to distinguish them from day numbers. (Akseli Lahtinen, link)

Plasma 6.6.0

Made multiple UI improvements to the time zone chooser map that’s visible in a few places: you can now zoom in and out farther, the map zooms in a more predictible way, there’s no more blurry text, and the borders of the clickable areas now perfectly map the borders drawn on the map. (Niccolò Venerandi, link 1, link 2, and link 3)

Nicer map zoomed in on Austria

When using a right-to-left language like Arabic or Hebrew, Plasma will now show reversed versions of the audio icons in various places when the icon theme contains them — and the Breeze icon theme now does. (Farid Abdelnour and Nate Graham, link 1, link 2, link 3, link 4, and link 5)

Audio icons pointing in the right direction when the system language is set to Arabic

Notable Bug Fixes

Plasma 6.4.6

Discover’s automatic shutdown/restart feature now allows apps with unsaved changes to prompt you to save first, preventing potential data loss. (Nate Graham and Aleix Pol Gonzalez, link)

Fixed an issue preventing the message about other users being logged in when you try to restart or shut down from appearing. (Nate Graham, link)

Fixed an issue preventing Flatpak apps from being able to create launchers using the Dynamic Launcher portal. (Nicolas Fella, link)

Fixed an issue that made the Applications table on System Monitor’s main page blurry with certain scale factors. (Arjen Hiemstra, link)

Removing the background of widgets in System Monitor now visually adjusts them to the color scheme properly. (Arjen Hiemstra, link)

Timestamps are now shown as expected for print jobs in the print queue. (Mike Noe, link)

The numbers in Plasma’s Timer widget now visually adjust to the color scheme properly. (Marco Martin, link)

When you’ve got Discover set up to prioritize apps from distro repos over Flatpak and/or Snap, searching for apps no longer inappropriately prioritizes the Flatpak or Snap versions. (Akseli Lahtinen, link)

Ampersands now appear correctly in text that shows up in the context menus of Task Manager tasks. (Marco Martin, link)

Fixed an issue that made the Media Player widget display filenames containing certain characters incorrectly. (Conor Smith, link)

Dragging a desktop widget partially off of a screen edge no longer makes the visualization of its position disappear. (Akseli Lahtinen, link)

Plasma 6.5.0

Fixed a case where DIscover could crash while quitting. (Aleix Pol Gonzales, link)

Fixed an issue in Discover that made it sometimes fail to display reviews properly for certain apps. (Akseli Lahtinen, link)

Fixed several issues with the Application Dashboard launcher: now it closes on focus loss like other launchers, doesn’t resize itself inappropriately if it’s open when the screen resolution, scale, or geometry changes, and no longer fails to pre-select items for many types of search results. (Niccolò Venerandi, link 1, link 2, and link 3)

Fixed an issue with the desktop grid view of KWin’s Overview effect that made it not show windows on inactive virtual desktops when using an unrelated non-default option. (Marco Martin, link)

Fixed a few sources of visual glitches when dragging items on the desktop when using a fractional scale factor. (Akseli Lahtinen, link)

If you’ve got a misbehaving screen that connects and disconnects multiple times when plugged in (screens suck), you’ll no longer see multiple system notifications about this. (Kai Uwe Broulik, link)

Using a font with a very tall baseline (for example, with many Arabic fonts) no longer makes text overflow out of the grid items on the Add Widgets sidebar. (Niccolò Venerandi, link)

The Reset button on System Settings’ Date & Time page now resets the current time zone too, if it’s been changed at all. (Niccolò Venerandi, link)

Removed Spectacle’s “Show capture instructions” option, because it didn’t do anything anymore after we removed the giant text field in the rectangular region UI in Plasma 6.4. (Nate Graham, link)

Frameworks 6.19

Fixed a case where Plasma would crash when asked to display certain malformed themes. (Marco Martin, link)

Fixed the “Delete oldest files from the trash” option for how to handle a full trash. (Pan Zhang, link)

Fixed an issue that made it impossible to paste text containing “file:///” into a Sticky Note widget. (Akseli Lahtinen, link)

Other bug information of note:

Notable in Performance & Technical

Plasma 6.4.6

Fixed an issue that made Plasma consume CPU time for no reason while the Networks widget is visible in the active part of the System Tray, until the first time the System Tray popup is opened. (Fabian Vogt, link)

Plasma 6.5.0

The time that Discover last notified you about updates is now stored in the state config file, not the settings config file. This is part of the meta-project to move rapidly-changing information out of config files so you can version-control them more easily. (Nicolas Fella, link)

Plasma 6.6.0

Old stale config data about ancient panels no longer clutters up your Plasma config file; it’s now deleted as intended. (Nicolas Fella, link)

Slightly improved the speed and memory efficiency of opening the Sticky Note widget’s context menu. (Kai Uwe Broulik, link)

Frameworks 6.19

Fixed an issue that made System Monitor render graphs when not visible, wasting resources. (Arjen Hiemstra, link)

How You Can Help

KDE has become important in the world, and your time and contributions have helped us get there. As we grow, we need your support to keep KDE sustainable.

You can help KDE by becoming an active community member and getting involved somehow. Each contributor makes a huge difference in KDE — you are not a number or a cog in a machine! You don’t have to be a programmer, either; many other opportunities exist, too.

You can also help us by making a donation! A monetary contribution of any size will help us cover operational costs, salaries, travel expenses for contributors, and in general just keep KDE bringing Free Software to the world.

To get a new Plasma feature or a bugfix mentioned here, feel free to push a commit to the relevant merge request on invent.kde.org.