Skip to content

Saturday, 19 October 2024

At this point we’ve addressed most of the nasty regressions people found in Plasma 6.2. Thankfully most were not widespread, and were instead related to people’s diverse hardware setups. Most seem to have had smooth upgrades, but those whose hardware setups misbehaved with changes made in 6.2 were a focus for rapid response. These kinds of hardware-specific issues are really difficult to test for ahead of time, which is why we’re always asking for more beta testers! For folks whose hardware encountered problems, I expect things to be pretty good with Plasma 6.2.2, which’ll be released in a few days.

In the meantime, the floodgates have been opened for those not working on bug fixes to start landing their feature work for Plasma 6.3! Check it all out below:

Notable New Features

It’s now possible to customize the pressure curve for drawing tablet pens! (Joshua Goins, Plasma 6.3.0. Link):

Added a new page to Info Center that shows technical data extracted from your screens’ EDID blocks (Harald Sitter, Plasma 6.3.0. Link)

In Plasma’s Weather Report widget, added support for nighttime forecasts when using a weather station from the Deutscher Wetterdienst source (Wolfgang Müller, Plasma 6.3.0. Link)

Notable UI Improvements

If you manage to mess up your tablet calibration badly enough that it becomes impossible to use it to re-calibrate, System Settings’ drawing Tablet page will now reset the calibration when you click the “Default” button (Joshua Goins, Plasma 6.2.1. Link)

Plasma’s digital Clock widget now displays all events on days with more than five events, making it actually useful for that use case (Tino Lorenz, Plasma 6.3.0. Link)

Improved the way pop-ups using the “Sliding Popups” effect slide out of floating Plasma panels (Niccolò Venerandi, Plasma 6.3.0. Link):

Plasma’s Power and Battery widget now shows better placeholder text when you’re managing power using tlp instead of power-profiles-daemon, or when power-profiles-daemon is installed but not supported by the device’s firmware (Natalie Clarius, Plasma 6.3.0. Link)

It’s no longer possible to accidentally resize a Plasma widget’s pop-up from one of its edges that touches the edge of a screen or Plasma panel (Niccolò Venerandi, Plasma 6.3.0. Link)

The upload and download arrows in Plasma’s Networks widget now uses a different character that’s substantially more readable with many fonts (Tem PQD, Plasma 6.3.0. Link)

Notable Bug Fixes

Fixed a regression that could sometimes cause graphical corruption on external screens attached to certain NVIDIA GPUs (Xaver Hugl, Plasma 6.2.1. Link 1 and link 2)

Fixed a regression that caused Kickoff to unexpectedly open after you hold down the Shift key and press Alt, which may seem like it’s an unusual thing to do, but it can be common in certain video games and it’s quite disruptive in that context (Yifan Zhu, Plasma 6.2.1. Link)

Fixed a case where System Settings’ Wallpaper page could crash when previously configured in a way that’s now invalid (Fushan Wen, Plasma 6.2.1. Link)

Fixed a case where the tablet calibration overlay could appear on a monitor where it doesn’t make any sense (Joshua Goins, Plasma 6.2.1. Link)

Fixed three regressions accidentally introduced in Plasma 6.2.1 while fixing other bugs: one causing crashes on multi-GPU systems, the second making the splash screen take too long, and the final one making the cursor not change shape properly when hovering over links in certain apps (Xaver Hugl and David Edmundson, Plasma 6.2.1.1. Link 1, link 2, and link 2)

Fixed a performance regression affecting people using NVIDIA GPUs and the Night Light feature (Xaver Hugl, Plasma 6.2.1.1. Link)

Fixed a regression that caused HDR to stop working properly in games that request absurd brightness levels, like a billion nits of brightness (Xaver Hugl, Plasma 6.2.2. Link)

Fixed a regression that could cause the cursor to misbehave in certain video games (Xaver Hugl, Plasma 6.2.2. Link)

Fixed an issue that caused visual distortion in the clipboard widget’s config window when interacting with it in a very specific way (David Edmundson, Plasma 6.2.2. Link)

Fixed two visual issues in Breeze’s GTK 4 theming (Łukasz Patron, Plasma 6.3.0. Link 1 and link 2)

Fixed a minor issue with widgets on the Plasma desktop that would cause the cursor to inappropriately use the hand shape after dragging them and then later hovering over an edge (Niccolò Venerandi, Plasma 6.3.0. Link)

Some third-party apps handle files in a buggy way, and overwrite your file associations such that certain file types get configured to always open with the kde-open or xdg-open command-line tools. When they do this, the system no longer consumes all CPU and memory resources and crashes; instead opening the file simply doesn’t work (Akseli Lahtinen, Frameworks 6.8. Link)

Opening a “Get New [stuff]” dialog on any System Settings pages no longer sometimes causes the app to secretly stay open after you close it, which would prevent it from being re-opened again and make you want to throw the computer out the window (Harald Sitter, Frameworks 6.8. Link)

Category icons in Kickoff are now symbolic as intended when using the Breeze Dark icon theme. Also put in place some other changes to prevent this happening again in the future (David Redondo, Frameworks 6.8. Link 1 and link 2)

Other bug information of note:

Performance & Technical

Refined the tablet calibration feature so that it produces more accurate calibrations (Joshua Goins, Plasma 6.2.1. Link)

How You Can Help

If you’re a developer, keep on working to fix Plasma 6.2 regressions! We’ve got ’em on the run, and this is our chance to finish them off!

Otherwise, visit https://community.kde.org/Get_Involved to discover additional ways to be part of a project that really matters. Each contributor makes a huge difference in KDE; you are not a number or a cog in a machine! You don’t have to already be a programmer, either. I wasn’t when I got started. Try it, you’ll like it! We don’t bite! Or consider donating instead! That helps too.

KUnifiedPush provides push notifications for KDE applications. Push notifications are a mechanism to support applications that occasionally need to receive some kind of information from their server-side part, and where receiving in a timely manner matters. Chat applications or weather and emergency alerts would be examples for that. More technical details about KUnifiedPush are available on Volker's introduction post about KUnifiedPush.

KUnifiedPush provides three possible provider backends for push notifications:

The default provider of KUnifiedPush is Ntfy with unifiedpush.kde.org but you can change it to your own server in the System Settings.

Screenshot of the settings showing the default settings

Currently both NeoChat and Tokodon integrates with KUnifiedPush as both Matrix and Mastodon support UnifiedPush. There is also ongoing work for weather and emergency alerts.

Packager Section

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

Friday, 18 October 2024

This is the release schedule the release team agreed on

https://community.kde.org/Schedules/KDE_Gear_24.12_Schedule

Dependency freeze is in around 3 weeks (November 7) and feature freeze one
after that. Get your stuff ready!

Update 1

Great news, everyone! We now have all the necessary components to start creating our 16px icon collection. I believe that we can work on the design and creation of these icons simultaneously.

Here are some general guidelines to consider when designing the 16px icons:

  • Our objective is to correlate the designs from the 24px collection to the 16px as closely as possible.
  • When in doubt, create an icon that resembles or simplifies the 24px shape.
  • Use 1px lines for the icons.
  • Utilize the IconGrid16 component to guide your design.
  • Once the icon is complete, change the icon color to the “ColorScheme-Text” color.
  • To export the icon, use the Icon Jetpack plugin.

I am excited to begin working on this project and would be grateful for any designer assistance that is available. If you need help learning Figma, please don’t hesitate to reach out, and we will gladly provide our support.

If you require edit access to the Figma file for the 16px icon collection, please let me know. I believe that collaboration and teamwork will lead to the creation of an amazing set of 16px icons.

Update 2

Additionally, I wanted to let you all know that I have made some edits to the color scheme of the graphic. I would appreciate any feedback you may have on the changes, and whether I might have missed anything. Let’s work together to create a cohesive and visually stunning icon collection!

Once our colors are aligned to what we need in the system, we will update the issue recently created for this purpose. This issue is under heavy development and things are changing rapidly. Read with caution and expect updates.

https://invent.kde.org/teams/vdg/issues/-/issues/82

Colors in the design system have changed. I need to correlate the colors to the color labels below. It will look a little off for some time. However, the color variables in Figma are updated to the latest feedback. Just this graphic needs the updates as well. Only the color box is correct, not the color names

Update 3

This week we took previously-created Ocean window shadows created by Manuel de la Fuente and integrated them in the design system. The shadow variables in Figma now use Ocean-inspired shadow levels to make them more visible. This is to address feedback on shadows previously being too faint. Hopefully these make a difference.

For some reason that I don't know, the XL shadow looks fainter than the LG shadow, but it seems to be a visual bug in Figma. If you apply the XL shadow, it should appear correctly in your graphics.

Update 4

Transition to PenPot is on hold for now until we have the community instance created and path manipulation updates are applied. This would impede us from recreating icons the same way we have them right now.

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


You Can’t Make Friends With The Rockstars

Tags: tech, capitalism, marketing, politics, criticism

People have to realize that tycoons like the ones from big tech companies can both be rich and mediocre. They were smart enough to seize opportunities at the right time but they are not exceptional. In fact, they’re even boring and spineless.

The best quote in this paper I think is: “There is nothing special about Elon Musk, Sam Altman, or Mark Zuckerberg. Accepting that requires you to also accept that the world itself is not one that rewards the remarkable, or the brilliant, or the truly incredible, but those who are able to take advantage of opportunities, which in turn leads to the horrible truth that those who often have the most opportunities are some of the most boring and privileged people alive.”

The real problem is that lots of journalists can’t come to term with the fairy tale and so fall prey to all their publicity stunts as if it had any hidden meaning. This is dangerous because of all the political power they try to seize for their own gains.

Meanwhile, “the most powerful companies enjoy a level of impunity, with their founders asked only the most superficial, softball of questions — and deflecting anything tougher by throwing out dead cats when the situation demands.”

Now you can go and read this long piece.

https://www.wheresyoured.at/rockstars/


What’s With All the Trumpy VCs?

Tags: tech, politics

It’s actually unsurprising, all those tech and crypto bros have assets in jeopardy if some regulation is applied to their industry. No wonder they’d support the one with the most libertarian agenda after the current administration which did look into antitrust cases and increased regulation (even though marginally).

https://www.theatlantic.com/technology/archive/2024/10/silicon-valley-venture-capitalists-trump/680225/


Employees Describe an Environment of Paranoia and Fear Inside Automattic Over WordPress Chaos

Tags: tech, blog, wordpress

Wow, the atmosphere looks fairly toxic at Automattic right now. It felt like it was just about the trademark dispute but clearly the craziness is running much deeper. This is concerning for WordPress future I think.

https://www.404media.co/automattic-buyout-offer-wordpress-matt-mullenweg/


You should be using an RSS reader

Tags: tech, social-media, rss

Want to put an end to the social media platforms weight on our lives? For once there’s an individual solution which might work. This is a chance because as he rightfully points out individual solutions are generally too complicated to bring systemic change. Here this is actually doable.

https://pluralistic.net/2024/10/16/keep-it-really-simple-stupid/#read-receipts-are-you-kidding-me-seriously-fuck-that-noise


Using Cloudflare on your website could be blocking RSS users

Tags: tech, cloudflare, rss

Cloudflare indeed needs to do better to accommodate RSS readers. They’re not malicious bots and shouldn’t be flagged as such.

https://openrss.org/blog/using-cloudflare-on-your-website-could-be-blocking-rss-users


Stop using Brave Browser

Tags: tech, web, browser, google, privacy, politics

A good reminder that this is not the Google Chrome alternative you’re looking for. It’s the same privacy invading mindset with some bigotry on top.

https://www.spacebar.news/stop-using-brave-browser/


The Internet Archive and its 916 billion saved web pages are back online

Tags: tech, web, archive, security

It’s a very important project, it’s really concerning that this attack went through. The service is still partly disrupted but they’re showing signs of recovery. Let’s wish them luck and good health. This archival service is essential for knowledge and history preservation on the web.

https://arstechnica.com/tech-policy/2024/10/the-internet-archive-and-its-916-billion-saved-webpages-are-back-online/


Large language models reduce public knowledge sharing on online Q&A platforms

Tags: tech, ai, machine-learning, gpt, knowledge, criticism, research

Now the impact seems clear and this is mostly bad news. This reduces the production of public knowledge so everyone looses. Ironically it also means less public knowledge available to train new models. At some point their only venue to fine tune their models will be user profiling which will be private… I’ve a hard time seeing how we won’t end up stuck with another surveillance apparatus providing access to models running on outdated knowledge. This will lock so many behaviors and decisions in place.

https://academic.oup.com/pnasnexus/article/3/9/pgae400/7754871#483096365


LLMs don’t do formal reasoning - and that is a HUGE problem

Tags: tech, ai, machine-learning, neural-networks, gpt, logic, mathematics, research

Of course I recommend reading the actual research paper. This article is a good summary of the consequences though. LLMs definitely can’t be trusted with formal reasoning including basic maths. This is a flaw in the way they are built, the bath forward is likely merging symbolic and sub-symbolic approaches.

https://garymarcus.substack.com/p/llms-dont-do-formal-reasoning-and


Should you use uv’s managed Python in production?

Tags: tech, python, security, supply-chain, developer-experience

It’s tempting to use uv. It’s probably fine on the developer workstation at this point. It looks a bit early to use it in production though, it’s a bit young for that and carries questions regarding supply chain security still.

https://pythonspeed.com/articles/uv-python-production/


Use an External GPU on Raspberry Pi 5 for 4K Gaming

Tags: tech, raspberry-pi, gpu, gaming

Definitely a funny hack. Not usable for compute workloads though.

https://www.jeffgeerling.com/blog/2024/use-external-gpu-on-raspberry-pi-5-4k-gaming


Master Embedded Development with Rust and no_std

Tags: tech, rust, embedded

Nice article showing the steps to port Rust code to run on deeply embedded systems. It highlights the difficulties and caveats of such a task.

https://towardsdatascience.com/nine-rules-for-running-rust-on-embedded-systems-b0c247ee877e


Table lookups are efficient

Tags: tech, programming, optimization

This is too often overlooked, but table lookups can help with performance if done well.

https://lemire.me/blog/2024/10/14/table-lookups-are-efficient/


Graphics Tricks from Boomers

Tags: tech, graphics, 2d, hardware

Nice graphic tricks when the hardware was harder to work with. It’s amazing how much we could fit back then out of sheer motivation.

https://arnaud-carre.github.io/2024-09-08-4ktribute/


Why is everybody talking about sync engines?

Tags: tech, web, collaborative, crdt

Excellent introduction to sync engines and how they work. The concept is indeed coming from the gaming industry and we see it more in web applications nowadays due to the user demands for working offline and real time collaboration.

https://fika.bar/blogs/paoramen/why-is-everybody-talking-about-syncing-engines-01JAAEZTCMZA28DSESAJR3J30J


Can Logic Programming Be Liberated from Predicates and Backtracking?

Tags: tech, programming, logic, ai, prolog

Finally a path forward for logic programming? An opportunity to evolve beyond Prolog and its variants? Good food for thought.

https://www-ps.informatik.uni-kiel.de/~mh/papers/WLP24.pdf


Be Suspicious of Success

Tags: tech, reliability, tests, debugging

This is an important trait to have for a developer. If you’re content of things working without knowing why and how they work, you’re looking for a world of pain later.

https://buttondown.com/hillelwayne/archive/be-suspicious-of-success/


Boring Tech Is Stifling Improvement

Tags: tech, architecture, complexity, developer-experience, vendor-lockin

I tend to side on the “boring tech” side, but indeed this is a good reminder that what we want is finding the right balance.

https://yonkeltron.com/posts/boring-tech-is-stifling-improvement/


Cognitive load is what matters

Tags: tech, complexity, cognition, design, architecture

Definitely this. Our cognitive capacity is limited, we’d better not deplete it due to complexity before we even reach the core of the problem at hand.

https://minds.md/zakirullin/cognitive#full


Why make software?

Tags: tech, philosophy

Our craft is based on shifting sands. This brings interesting philosophical questions, like why do it at all? I think the answer proposed in this short article is spot on. It can help bring new ideas on how to be in the world. This is more important than the code itself.

https://sean.voisen.org/blog/why-make-software


Germany’s 49-euro ticket resulted in significant modal shift from road to rail

Tags: train, ecology, politics

This is definitely a good idea, I wish we had the same in France. This is too bad that they plan to raise the price, it’s going to limit the impact of the measure.

https://www.mcc-berlin.net/en/news/information/information-detail/article/49-euro-ticket-resulted-in-significant-modal-shift-from-road-to-rail.html



Bye for now!

We are happy to announce the release of Qt Creator 15 Beta!

I saw this question on KDE forum about how to limit memory usage of a specific application in KDE, using systemd specifically. I did some research on that.

Resource control in systemd

man systemd.resource-control lists plenty of options that we can set to a cgroup. E.g., to limit the memory usage of a service, we can add:

MemoryAccounting=yes
MemoryHigh=2G

under the [Service] section of its .service file.

The difference between this and ulimit is that ulimit is per process, while systemd resource control is per cgroup. I.e., the MemoryHigh is accounted to the sum of both the service process, and all sub-processes it spawns, and even detached processes, i.e., daemons.

(That's actually the main point of cgroup: a process tree that a process can't escape via double-forking / daemonizing.)

Apps as systemd services

KDE Plasma launches apps as systemd services. (See this doc and this blog for more details.)

We can find the name of the systemd service of an app like this:

$ systemd-cgls|grep konsole
│ │ │ ├─app-org.kde.konsole@0d82cb37fcd64fe4a8b7cf925d86842f.service
│ │ │ │ ├─35275 /usr/bin/konsole
│ │ │ │ └─35471 grep --color=auto konsole

But the problem is:

  1. The part of the name after @ is a random string, changes every time the app is launched.
  2. The service is generated dynamically:
$ systemctl --user cat app-org.kde.konsole@0d82cb37fcd64fe4a8b7cf925d86842f.service

# /run/user/1000/systemd/transient/app-org.kde.konsole@0d82cb37fcd64fe4a8b7cf925d86842f.service
# This is a transient unit file, created programmatically via the systemd API. Do not edit.
[Service]
Type=simple
...

So if we want to limit the memory usage of Konsole, there's no persistent .service file on disk that we can edit.

Luckily, systemd allows us to create drop-in files to partially modify a service. Also, systemd considers app-org.kde.konsole@0d82cb37fcd64fe4a8b7cf925d86842f.service to be instances of a template named app-org.kde.konsole@.service. (This is how things like getty@tty3.service work.) So we can create a drop-in file named ~/.config/systemd/user/app-org.kde.konsole@.service.d/override.conf with the content:

[Service]
MemoryAccounting=yes
MemoryHigh=2G

and it will apply to all instances of app-org.kde.konsole@.service, even if there's no service file with that name.

(The file doesn't have to be named "override.conf". Any name with .conf works.)

Then we need to reload the systemd user manager: systemctl --user daemon-reload.

Now we can launch Konsole, and check if the memory limit works:

$ systemctl --user show 'app-org.kde.konsole@*.service'|grep MemoryHigh=
EffectiveMemoryHigh=2147483648
MemoryHigh=2147483648
StartupMemoryHigh=infinity

Note: as explained above, the limit applies to the sum of Konsole and all processes it spawns. E.g., if we run kwrite in Konsole, the memory usage of kwrite will be accounted to the limit of Konsole, and the limit we set to KWrite won't apply.

Set defaults for all apps

We can put defaults in ~/.config/systemd/user/app-.service.d/override.conf, and it will match all services whose name starts with app-.

Alternatively, if we run systemd-cgls, we can see that all apps are under a node named app.slice. So we can also put defaults in ~/.config/systemd/user/app.slice.d/override.conf, and all apps will inherit the settings. However, this is different from the previous method, as user services are also under app.slice by default, so they will also inherit the settings.

Being able to build our libraries and applications statically has been on the wishlist since a long time, and recently we made some progress in that direction again. Similar to the the recent Android integration improvements this is also a direct result of Akademy.

Reviving the CI

We had CI for static builds during the 5 era, but we lost quite a bit of coverage there during the transition to 6. However, what we had were only static builds of KDE libraries against a shared build of Qt. That finds some but by far not all issues related to static builds.

The new setup now actually has a static Qt6 to build against, which forces us to also sort out plugin integration correctly. While it is a bit more work to get back to the desired level of CI coverage that way, we will get to a much better result.

Static initialization and CMake

A common problem in static builds is initialization code that is run on shared library loading, as that simply doesn’t exist in static builds, and unless you know what you are doing that will usually be silently dropped from the final executable.

This has previously resulted in various workarounds, such as explicit initialization API (e.g. Q_INIT_RESOURCE), which is easy to miss. With Qt 6 having switched to CMake there’s a new option now though, so-called object libraries. Those are used as implementation details to inject the initialization code from static libraries into the final executable.

From a consumer point of view you get the same behavior as with shared libraries: you link against it and initialization just works. Behind the scenes this adds quite a bit of complexity to the build system though, which then sometimes leaks through into our build system code as well.

The probably most common case is qt6_add_resources. Qt resources need initialization code, so the target they are added to gets another dependency attached to it, an object library containing the initialization.

If that target is a library the additional object libraries need to be installed and exported via CMake as well, to make those available to consumer code (ECM support for this).

add_library(MyLib)
qt6_add_resources(MyLib OUTPUT_TARGETS _out_targets ...)
install(TARGETS MyLib ${_out_targets} EXPORT MyLibTargets ...)

The OUTPUT_TARGETS part is the new thing to add here (example). Another such case are custom shaders (via qt6_add_shaders), and of course QML modules (more on those below).

Installing QML modules

QML modules created with ecm_add_qml_module also produce object library targets, but since that macro works on a higher level we can handle more of that automatically (ECM MR).

ecm_add_qml_module(mymodule URI "org.kde.mymodule" ... INSTALLED_PLUGIN_TARGET KF6::mymodule)
...
ecm_finalize_qml_module(mymodule EXPORT KF6MyModuleTargets)

The EXPORT argument to ecm_finalize_qml_module is the new part here. This takes care both of installing object libraries as well as exporting the QML module itself in the installed CMake configuration file. The latter is needed for statically linking QML modules into the application (see below).

When using ALIAS targets (common in KDE Frameworks, much less common outside of that) we also might need the INSTALLED_PLUGIN_TARGET argument for ecm_add_qml_module(), to make sure the module target name matches the installed alias. That’s not new, but has little practical impact outside of static linking so we have been a bit sloppy there (simple example, complex example).

Importing QML modules

Linking QML modules into the final application binary got a lot easier with Qt 6, thanks to qmlimportscanner.

add_executable(myapp)
ecm_add_qml_module(myapp ...)
...
if (NOT QT6_IS_SHARED_LIBS_BUILD)
    qt6_import_qml_plugins(myapp)
endif()

That’s it, no more Q_IMPORT_PLUGIN macros or manually listing modules to link. There’s less tolerance for mistakes in the CMake and QML module metadata now though, anything incomplete or missing there will give you linker failures or module loading errors at runtime (see also ECM support for additional import search paths).

Outlook

Since Akademy almost 50 merge requests have been submitted related to this, most of which have already been integrated. With all that it’s possible now to build and run Alligator against a static Qt. Alligator was the first milestone we had picked for this during Akademy, due to being sufficiently complex to prove the viability of all this while not having dependencies that could be adding significant additional challenges on their own (such as the multimedia stack).

However, this work has been mostly done on desktop Linux, and while that allowed for rapid progress it’s the platform this is least interesting for. We yet have to reproduce this on Android, where it probably should bring the most immediate benefit, and of course this removes a big obstacle for potential support of iOS (as Qt can only be linked statically there).

Wednesday, 16 October 2024

A new Craft cache has just been published. The update is already available for KDE's CD, CI (Windows/Android) will follow in the next days.

Please note that this only applies to the Qt6 cache. The Qt5 cache is in LTS mode since April 2024 and does not recieve major updates anymore.

Changes (highlights)

Craft Core

  • Drop Python2 support
  • Require at least Python 3.9

Blueprints

  • Qt 6.8.0
  • FFmpeg 7.1
  • Kirigami Addons 1.5.0
  • KDE Frameworks 6.7.0
  • KDE Plasma 6.2.0
  • Removed snoregrowl
  • Removed ctemplate

About KDE Craft

KDE Craft is an open source meta-build system and package manager. It manages dependencies and builds libraries and applications from source on Windows, macOS, Linux, FreeBSD and Android.

Learn more on https://community.kde.org/Craft or join the Matrix room #kde-craft:kde.org

Monday, 14 October 2024

Happy 28th birthday KDE!
Happy 28th Birthday KDE!

Sorry my blog updates have been MIA. Let me tell you a story…

As some of you know, 3 months ago I was in a no fault car accident. Thankfully, the only injury was I ended up with a broken arm. ER sends me home in a sling and tells me it was a clean break and it will mend itself in no time. After a week of excruciating pain I went to my follow up doctor appointment, and with my x-rays in hand, the doc tells me it was far from a clean break and needs surgery. So after a week of my shattered bone scraping my nerves and causing pain I have never felt before, I finally go in for surgery! They put in a metal plate with screws to hold the bone in place so it can properly heal. The nerve pain was gone, so I thought I was on the mend. Some time goes by and the swelling still has not subsided, the doctors are not as concerned about this as I am, so I carry on until it becomes really inflamed and developed fever blisters. After no success in reaching the doctors office my husband borrows the neighbors car and rushes me to the ER. Good thing too, I had an infection. So after a 5 day stay in the hospital, they sent us home loaded with antibiotics and trained my husband in wound packing. We did everything right, kept the place immaculate, followed orders with the wound care, took my antibiotics, yet when they ran out there was still no sign of relief, or healing. Went to doctors and they gave me another month supply of antibiotics. Two days after my final dose my arm becomes inflamed again and with extra spectacular levels of pain to go with it. I call the doctor office… They said to come in on my appointment day ( 4 days away ). I asked, “You aren’t concerned with this inflammation?”, to which they replied, “No.”. Ok, maybe I am over reacting and it’s all in my head, I can power through 4 more days. The following morning my husband observed fever blisters and the wound site was clearly not right, so once again off we go to the ER. Well… thankfully we did. I was in Sepsis and could have died… After deliberating with the doctor on the course of action for treatment, the doctor accepted our plea to remove the plate, rather than tighten screws and have me drive 100 miles to hospital everyday for iv antibiotics (Umm I don’t have a car!?) So after another 4 day stay I am released into the world, alive and well. I am happy to report, the swelling is almost gone, the pain is minimal, and I am finally healing nicely. I am still in a sling and I have to be super careful and my arm was not fully knitted. So with that I am bummed to say, no traveling for me, no Ubuntu Summit 🙁

I still need help with that car, if it weren’t for our neighbor, this story would have ended much differently.

https://gofund.me/00942f47

Despite my tragic few months for my right arm, my left arm has been quite busy. Thankfully I am a lefty! On to my work progress report.

Kubuntu:

With Plasma 6! A big thank you to the Debian KDE/QT team and Rik Mills, could not have done it without you!

KDE Snaps:

All release service snaps are done! Save a few problematic ones still WIP.. I have released 24.08.2 which you can find here:

https://snapcraft.io/publisher/kde

I completed the qt6 and KDE frameworks 6 content packs for core24

Snapcraft:

I have a PR in for kde-neon-6 extension core24 support.

That’s all for now. Thanks for stopping by!