Planet KDE
Introducing the Enhanced KubuQA: Revolutionising ISO Testing Across Ubuntu Flavors
The Kubuntu Team are thrilled to announce significant updates to KubuQA, our streamlined ISO testing tool that has now expanded its capabilities beyond Kubuntu to support Ubuntu and all its other flavors. With these enhancements, KubuQA becomes a versatile resource that ensures a smoother, more intuitive testing process for upcoming releases, including the 24.04 Noble Numbat and the 24.10 Oracular Oriole.
What is KubuQA?KubuQA is a specialized tool developed by the Kubuntu Team to simplify the process of ISO testing. Utilizing the power of Kdialog for user-friendly graphical interfaces and VirtualBox for creating and managing virtual environments, KubuQA allows testers to efficiently evaluate ISO images. Its design focuses on accessibility, making it easy for testers of all skill levels to participate in the development process by providing clear, guided steps for testing ISOs.
New Features and ExtensionsThe latest update to KubuQA marks a significant expansion in its utility:
- Broader Coverage: Initially tailored for Kubuntu, KubuQA now supports testing ISO images for Ubuntu and all other Ubuntu flavors. This broadened coverage ensures that any Ubuntu-based community can benefit from the robust testing framework that KubuQA offers.
- Support for Latest Releases: KubuQA has been updated to include support for the newest Ubuntu release cycles, including the 24.04 Noble Numbat and the upcoming 24.10 Oracular Oriole. This ensures that communities can start testing early and often, leading to more stable and polished releases.
- Enhanced User Experience: With improvements to the Kdialog interactions, testers will find the interface more intuitive and responsive, which enhances the overall testing experience.
The Kubuntu Team is keen to collaborate closely with leaders and testers from all Ubuntu flavors to adopt and adapt KubuQA for their testing needs. We believe that by sharing this tool, we can foster a stronger, more cohesive testing community across the Ubuntu ecosystem.
We encourage flavor leads to try out KubuQA, integrate it into their testing processes, and share feedback with us. This collaboration will not only improve the tool but also ensure that all Ubuntu flavors can achieve higher quality and stability in their releases.
Getting InvolvedFor those interested in getting involved with ISO testing using KubuQA:
- Download the Tool: You can find KubuQA on the Kubuntu Team Github.
- Join the Community: Engage with the Kubuntu community for support and to connect with other testers. Your contributions and feedback are invaluable to the continuous improvement of KubuQA.
The enhancements to KubuQA signify our commitment to improving the quality and reliability of Ubuntu and its derivatives. By extending its coverage and simplifying the testing process, we aim to empower more contributors to participate in the development cycle. Whether you’re a seasoned tester or new to the community, your efforts are crucial to the success of Ubuntu.
We look forward to seeing how different communities will utilise KubuQA to enhance their testing practices. And by the way, have you thought about becoming a member of the Kubuntu Community? Join us today to make a difference in the world of open-source software!
KDE Applications & Icons
In this rather lengthy post I talk a bit about the current issues with icons for the KDE applications I work on or use.
Let’s start with looking at what I mean with KDE applications and what the current state is, up to KDE Frameworks 6.2 and current KDE Gear 24.02. Then let’s see what will be improved in future releases.
What do I mean with ‘KDE Applications’ #If I speak about ‘KDE Applications’ here I talk about applications like Kate, Dolphin, Okular and others like that.
This means applications developed with Qt and KDE Frameworks that integrate well with the KDE Plasma desktop but are not restricted to it.
Many of this applications not just aim to work well on Linux & BSD or other open source operating systems but are ported and working well on the rather different Windows and macOS desktop. Some even are successful since years in the official Windows Store.
The above applications are part of the KDE Gear releases, but the described issues and solutions naturally are not restricted to stuff released with that.
What most of these applications have in common is that they rely on rather large parts of our Frameworks. With that they depend at least indirectly on an icon set that covers large parts of what our default icon set Breeze provides. Even if you use no icons from that icon set yourself in your application, just using the standard actions or many widgets/dialogs from Frameworks will rely on some subset of Breeze.
Current State of Icons per Desktop or Platform #When talking about the current situation of icons that depends largely on the desktop or platform you are running the KDE application on.
Let’s take a look at some (I for sure miss some that are common or loved, that doesn’t mean I disregard them, I just want to limit the scope).
KDE Plasma on Linux/BSD with Wayland/X11 #If you just aim to run on the KDE Plasma desktop with your Qt and KDE Frameworks based application, all is fine with icons, there is no problem.
The KDE project did their job, at least for Kate I never did have any issues with icons on Plasma.
Below a screenshot of Kate 24.02 running on Plasma 6. All icons are there, they are properly re-colored for the dark theme, too, including not just the used Breeze icons but for example the small Git icons in the left sidebar that Kate has bundled.
This is the vanilla state each user will get if Kate is installed on Plasma (and the dark theme is used). There are no patches done during building to achieve that nor is there any extra user configuration necessary.
Microsoft Windows #If you run Kate on Windows, the icon situation is good, too, if you use our Windows Store variant or get at build done via Craft.
See below what the current nightly of Kate looks like in some Windows 11 VM (I just started it from the unpacked ZIP, no setup needed).
In the Craft build descriptions we do some patches to ensure the Breeze icons are bundled as library and the application links with that. In addition we ensure with some more patching that our own icon engine is used to allow for the proper recoloring.
If you don’t do that patching you will end up with close to no icons or for dark theme black on black icons.
Apple’s macOS #The situation on macOS is the same as on Windows.
If you go with a Craft build of Kate, you will end up with something like below.
All icons are there and even application provided icons like our Git one are properly recolored.
Without the Craft patches Kate has more or less no icons like on Windows.
Haiku #After covering Plasma and the two large closed-source desktop operating systems, as a small excursion, look how Kate (the KF5 based version) looks if installed on Haiku with the package they provide.
Kate looks ok, system icons intermixed with Breeze as fallback icons.
GNOME #For testing this, I installed the latest Fedora Workstation in a VM. I have done no user configuration beside what the installer and initial setup wizard asked and then just installed the Kate package. The shell was even helpful to ask to do that after you just tried to start the not installed Kate.
Most icons not there, not that nice. For details about that read this post, we don’t need to re-iterate this again.
If you think: that is just Kate, let us just try Okular.
One thing that can be at least solved easily is that the icons are gone, we just install the Breeze icon set as package.
Looks ok, system icons intermixed with Breeze as fallback icons just like on Haiku. Not stylish but usable.
I was unable to trigger Kate or Okular to adjust to the dark mode GNOME provides, therefore I can not test if we end up with black on black icons there, but it is likely, as the fallback is just Breeze.
MATE #Kate and Dolphin 24.02 on MATE with dark mode on NixOS, normal system packages, Breeze icons is installed.
System icons intermixed with Breeze as fallback icons, looks not that nice. Breeze icons not readable, as recoloring is not working.
Xfce #Kate and Dolphin 24.02 on Xfce with dark mode on NixOS, normal system packages, Breeze icons is installed.
Same mix and unreadable state as on MATE.
Enlightenment #Kate 24.02 on Enlightenment with dark mode on NixOS, normal system packages, Breeze icons is installed.
Just unreadable icons, beside out own Git icon and the few colored ones.
Summary: What’s up with Icons today #The icons in KDE applications do look perfect on KDE Plasma. That should be no real surprise as many people working on these applications will test them there and KDE Frameworks and Qt are well tested on Plasma, too.
The icons look fine on Windows and macOS, too, at least for applications that got properly ported, but only thanks to patches we do in Craft. If you just grab e.g. Kate’s and the needed frameworks sources from our normal repositories, you don’t get that.
If the maintainers of the port for some OS do care, like the Haiku people, KDE applications can look fine there.
On other desktop environments it doesn’t look that great out of the box.
Unlike for the other operating systems, there the same packages without extra patches are running.
Whereas that works perfect on Plasma, we rely too much that the desktop environment running provides an icon set that has a similar coverage and naming as Breeze. As we don’t hard depend on the Breeze icons for our applications, it can even happen that just no fitting icons are there per default.
Even if that can be solved with some better package dependencies, you still end up with a patchwork look and without a Qt platform theme plugin that handles the needed recoloring to make dark mode feasible.
Getting it fixed #Fortunately, just because the status quo is not that nice, it must not stay that way.
We have more or less all needed parts to fix the situation, we did already fix it during the porting to Windows and macOS.
We just never pushed to get this stuff done on Linux and Co.
How did we solve it there?
- We have the Breeze icon set as Qt resource inside a library and link with that. That makes them a hard build and runtime dependency and easy to deploy.
- We ensure the icon engine we have in our KIconThemes framework is there and used.
- We enforce the Breeze Qt style. (this is not really icon related, but ensures an usable look’n’feel, too)
The first and the last thing are easy to do on Linux and Co., too, even with still allowing the user to override the icon set and style, but still defaulting to Breeze.
The second point is harder, as that requires at the moment a few hacks and is not 100% as good as going the Qt platform theme plugin route we use inside Plasma.
For KDE Frameworks 6.3 we worked to get that done.
See our meta issue on our GitLab instance covering that topic.
All is not perfect, we will need to get some Qt API to fully do that, but the current state is already usable.
Here a comparison with the state as we have it now in our released software compared to with the state in the current master branch on an Cinnamon desktop.
The left side is the current Kate 24.02, the right side the current master build of Kate with master Frameworks.
The hard dependency to the Breeze icon library is done in KIconThemes, if you link to that, you are guaranteed that you have Breeze icons. You can naturally just link to only the Breeze icon library on your own.
The ensuring that the proper icon engine is done with some new API in KIconThemes that application developers must opt-in for. The same for the Qt style setup, there we have API in KConfigWidgets.
For Kate the concrete changes can be found here. They are minimal and even remove some platform specific code for the style setup.
Including fallback code for pre 6.3 Frameworks compatibility of the style setting, the basic idea is:
In the long run, once 6.3 is the minimal version the application depends on, this is just:
At the moment KIconTheme::initTheme() is still a bit hacky until we have proper Qt API, but that is not visible for the API user.
If we get this properly done in our applications, that will not just solve the current issue for running them in other desktop environments.
With that API in use and the now already upstreamed patches, one can build vanilla Frameworks and Kate on Windows and macOS and the icons will just work in the resulting application bundles and you get an usable style out of the box if Breeze is there.
Help Wanted! #We have now some API to help our applications to be more usable on non-Plasma installations and Windows and macOS.
We still need to make use of it and we need to improve the implementation and upstream to Qt the needed extra API to make it a real 100% replacement to what we do with the Plasma integration plugin.
If you have time to help us, show up on our meta issue.
Not just coding is needed, we for example have still a few icons that don’t recolor well, help to fix that is wanted, too.
This week in KDE: our cup overfloweth with cool stuff for you
This week a lot of work that has been in progress for weeks got merged! So check out the free goodies! And isn’t that amazing? Free stuff day after day, week after week. No price tag, no ads, no spying, no activation, no subscription, no nonsense. Just good work donated to the public. And not only from KDE, but the software stack we rely on, the distributions that make our software available, and on and on! We really live in an amazing time, folks.
New FeaturesBy default, Dolphin now selects everything in a folder when you double-click on its view background, and also lets you configure it to do other things instead–up to and including running custom terminal commands! (George Florea Bănuș, Dolphin 24.08. Link)
Elisa now lets you shuffle the playlist contents by album, not just by track (Bart De Vries, Elisa 24.08. Link)
System Settings now features a page where you can turn on and configure remote login based on the Remote Desktop Protocol (Akseli Lahtinen and me: Nate Graham, Plasma 6.1. Link 1 and link 2)
On Wayland, KWin can now be configured to pull color profile information from the monitor’s EDID metadata where present. Note that color profile information in EDID metadata is often wrong, so use this setting with caution. The feature includes inline help text to make you aware of this, too. (Xaver Hugl, Plasma 6.2. Link 1, link 2, link 3, and link 4)
UI ImprovementsIt’s now more obvious how you end a screen recording in Spectacle: the “currently recording” icon it shows in the System Tray now animates to get your attention a bit more, and Spectacle also sends a system notification to tell you about it (Noah Davis, Spectacle 24.08. Link)
When the clock disappears on Plasma’s lock screen, the cursor does too, which makes it possible to use the screen locker as a true screensaver if you give it a wallpaper plugin that has some kind of animated effect (Someone amazing, Plasma 6.0.4. Link)
It’s now obvious how you close Plasma 6’s fancy new panel configuration dialog: it has a “Done” button in the corner! (Taro Tanaka and Me: Nate Graham, Plasma 6.1. Link):
When you disconnect from a network while it’s showing the speed graph view, it now automatically switches over to the info view (Eugene Popov, Plasma 6.1. Link)
Smooth scrolling in KDE’s QML-based apps is now optional (though still on by default). It’s also possible that 3rd-party apps will eventually read and respect this setting, as I recently noticed Firefox does for our global animation speed setting (Nathan Misner, Plasma 6.2. Link 1 and link 2)
Small in-window dialogs in QtQuick-based software have gotten a visual overhaul to remove everything not visually necessary, which gives the text and buttons more focus (Carl Schwan, Frameworks 6.3. Link 1 and link 2)
Command bars in QtWidgets-based apps have also gotten a visual overhaul to match this more minimalistic style (Eugene Popov, Frameworks 6.3. Link):
Elisa no longer freezes when you open Party Mode while music is playing and the headerbar is collapsed or sized in certain ways (Pedro Nishiyama, Elisa 24.05. Link)
Fixed two longstanding issues that could cause Plasma to crash when it didn’t find all the screens it expected to find when waking up or booting the system (Marco Martin, Plasma 6.0.4 and 6.0.5. Link 1 and link 2)
Discover no longer misleadingly and incorrectly claims that apps with no licenses listed are proprietary (Harald Sitter, Plasma 6.0.5. Link)
Fixed a Plasma 6 regression that caused Discover to show annoying and ignorable error messages when viewing pages for content from store.kde.org (Harald Sitter, Plasma 6.0.5. Link)
The search/filter field in Plasma’s Printers widget now works (Mike Noe, Plasma 6.0.5. Link)
Fixed a Plasma 6 regression that caused panel widgets to overlap when you have an Activity Pager widget somewhere on a horizontal panel (Edo Friedman, Plasma 6.0.5. Link)
KWin is now more reliable about turning off screens in response to hardware and driver quirks that previously made this less than reliable with certain setups (Arsen Arsenović, Plasma 6.0.5. Link)
Config windows for Plasma’s System Monitor and System Tray widgets and the power profiles OSD no longer have mismatched colors for some UI controls and icons when using a mixed light/dark global theme such as Breeze Twilight (Akseli Lahtinen, Evgeniy Harchenko, and Nicolas Fella, Plasma 6.0.5. Link 1, link 2, and link 3)
Searching for something in Plasma’s Clipboard widget now returns a message with the correct text (“No matches”) when your search didn’t match anything (Thomas Duckworth, Plasma 6.0.5. Link)
Plasma’s Task Manager widget was internally refactored to simplify some old crusty code, which fixes two prominent layout glitches, including a Plasma 6 regression where tasks would overlap with adjacent widgets when in multi-row mode (Marco Martin, Plasma 6.1. Link 1 and link 2)
Other bug information of note:
- 3 Very high priority Plasma bugs (same as last week). Current list of bugs
- 38 15-minute Plasma bugs (up from 35 last week). Current list of bugs
- 133 KDE bugs of all kinds fixed over the last week Full list of bugs
The plasma-workspace git repo has adopted a merge request template to guide people towards writing good commit messages, testing their changes, and including before-and-after screenshots. If this works out well, we’ll expend it elsewhere too (me: Nate Graham, link)
We now have a bug announcement bot that yells at us about the number of high and very high priority Plasma bugs, as well as the number of current known regressions (Ben Bonacci, link):
This blog only covers the tip of the iceberg! If you’re hungry for more, check out https://planet.kde.org, where you can find more news from other KDE contributors.
How You Can HelpThe KDE organization has become important in the world, and your time and labor have helped to bring it there! But as we grow, it’s going to be equally important that this stream of labor be made sustainable, which primarily means paying for it. Right now the vast majority of KDE runs on labor not paid for by KDE e.V. (the nonprofit foundation behind KDE, of which I am a board member), and that’s a problem. We’ve taken steps to change this with paid technical contractors—but those steps are small due to growing but still limited financial resources. If you’d like to help change that, consider donating today!
Otherwise, visit https://community.kde.org/Get_Involved to discover other 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!
HDR and color management in KWin, part 3
Since the last two posts about this topic (part one, part two) there has been some more progress, so let’s take a look.
Brightness ControlIn Plasma 6.0, when HDR is enabled, you get to choose the brightness of SDR content in the display settings:
This is however not convenient to change quickly and doesn’t apply to HDR content, which so far is always presented at 100% brightness. In Plasma 6.1, you’ll be able to use the same ways to control brightness as on laptops or with displays that support DDC/CI in SDR mode: Just drag the brightness slider, press keyboard shortcuts or scroll on the brightness icon in the system tray, and it’ll dim the whole screen like you’d expect.
Powerdevil unfortunately only supports controlling the brightness of a single screen right now, and that limitation also applies here. The API it uses to communicate with KWin is per display though, so once powerdevil supports multiple screens, it’ll work for HDR displays too.
More accurate colors without a ColorimeterMany new displays have a color gamut much wider than sRGB, and assume that their input signal is fitting for their color gamut - which means that, unless you use an ICC profile, colors will be much more saturated than they should be. There’s a few ways to correct this:
- find an sRGB option in your monitor’s OSD. This is usually pretty accurate if it’s available, but also limits all apps to sRGB
- buy a Colorimeter and profile your display. That costs money though, and the display profiling situation on Linux isn’t in great shape at the moment (DisplayCAL on Flathub is 4 years old, my last attempt at building it on Fedora didn’t work, and it only works correctly on Xorg atm)
- find an ICC profile for your display on the Internet and use that, hoping the display doesn’t deviate too much from the one that was profiled
There is a fourth option though: Use the color information from the display’s EDID. In Plasma 6.1, you can simply select this in the display settings.
Note that it comes with some caveats too:
- the EDID only describes colors with the default display settings, so if you change the “picture mode” or similar things in the display settings, the values may not be correct anymore
- the manufacturer may not measure every panel and just put generic values for the display model into the EDID
- the manufacturer may put completely wrong values in there (which is why this is disabled by default)
- even when correct values are provided, ICC profiles have much more detailed information on the display’s behavior than the EDID can contain
So if you care about color accuracy, this is not a way out of getting a Colorimeter and profiling your display… but if you just have two screens and you’re annoyed that one of them has much more intense colors than the other, this option is an easy and fast way to fix it.
GamescopeJoshua Ashton implemented a new backend in gamescope, that uses Wayland subsurfaces to forward content to the host compositor instead of compositing it all into one image, and includes direct support for the frog_color_management_v1 protocol. The result of this is that with a new enough gamescope you don’t have to use any Vulkan layers to have gamescope pass HDR content to KWin, and you don’t have to use the --hdr-debug-force-output option anymore. If you want to play a game in HDR, you can now just put
into its launch options in Steam (with width and height adjusted to your screen ofc) and you’re done.
The backend also reduces the image copies made in comparison to the previously default SDL backend; the game’s buffers are directly passed to the host compositor, in most cases even while overlays are visible.
GPU DriversThe driver situation is something I’ve been kind of ignoring in previous posts, but it’s obviously pretty important. First, let’s talk about the KMS API for setting a display into HDR mode. It consists of two parts:
- the HDR_OUTPUT_METADATA property, which compositors use to set mostly brightness related metadata about the image, like which transfer function is used and which brightness and color values the content roughly contains
- the Colorspace property, which compositors use to set the colorspace of the image, so that the display interprets the colors correctly
When you enable HDR in the system settings in Plasma, KWin will set HDR_OUTPUT_METADATA to the Perceptual Quantizer transfer function, and the brightness and mastering display properties to almost exactly what the display’s EDID says is optimal. This is done independently of the actual image content or what apps on the screen tell the compositor, to prevent the display from doing dumb things like dimming down just because an HDR video you opened claims it wants to display a supernova in your living room.
The one exception to that is the max_cll value - the maximum brightness of any pixel on the screen. It’s set to the maximum average brightness the display can show, because my Samsung C49RG94SSR monitor reduces the backlight brightness below SDR levels if you set the max_cll value it claims is ideal… With that one exception, this strategy has worked without issues so far.
On the Colorspace front, KWin sets the property to Default in SDR mode, and to BT2020_RGB when HDR is enabled. Sounds simple enough, but it’s of course actually more complicated.
Like any API that didn’t actually get used in practice for a very long time (if ever), both the API and the implementations were and are quite broken. The biggest issues I’ve seen so far are:
- AMD’s implementation of the Colorspace property for DisplayPort was broken, which caused colors to be washed out in HDR mode (fixed in Linux 6.8)
- the NVidia driver doesn’t force a modeset when HDR_OUTPUT_METADATA changes the transfer function or Colorspace changes its value, which causes temporary glitches when enabling HDR on some displays
- the Intel driver claims to support both properties for HDR laptop displays, but the implementation is missing entirely (this is being worked on)
- the Colorspace property implementations from Intel and NVidia cause washed out colors on many displays, because the API requires the compositor to change the property value depending on whether or not communication with the display uses RGB or YUV encoding… which the compositor doesn’t actually know anything about. The AMD implementation works around this by translating the property to the correct value in the kernel
- multiple laptop- or display specific issues that you can look up in the bug trackers if you want to
To summarize, if you want to use HDR, it’s best to use an AMD GPU with either kernel 6.8, or if you really must use an older kernel, HDMI. Even then, you might still see issues in some cases though - if you do, please make bug reports about it! Neither driver nor compositor developers can fix what they don’t know is broken.
What’s next?As always, for every bit of progress made or feature implemented, there’s ten more upcoming exciting things that could be talked about or worked on… but the big next topic is offloading of color management tasks to the GPU’s scanout hardware, to save power and improve performance. Next week I’ll be attending the 2024 Linux Display Next hackfest, which will focus on exactly that, so stay tuned!
Using the QML Language Server for KDE Development (update)
In a previous post I talked about using the QML Language Server for KDE development. Since writing that post a few things happened, so it’s time for an update.
I mentioned that when using Kate qmlls should work out of the box when opening a QML file. That’s mostly true, there is one problem though. Depending on your distribution the binary for qmlls has a different name. Sometimes it’s qmlls, sometimes qmlls6 or qmlls-qt6. You may need to adjust the LSP Server settings in Kate to match the name on your system.
In order for qmlls to find types that are defined in your application’s C++ code those must not only be declaratively registered, qmlls also needs to be told where to find the type information. Fortunately Qt 6.7 comes with a handy way to do that. By passing -DQT_QML_GENERATE_QMLLS_INI=ON to CMake you get an appropriate config file generated. This will be placed into the project’s source directory but is specific to your setup, so add that to your gitignore file (PS: You can set up a global gitignore file for your system, so you don’t need to add this to all your projects). Unfortunately the initial implementation produced wrong configurations for some modules, but this is fixed in Qt 6.7.2.
A problem I mentioned is that qmlls doesn’t find modules that are not installed into the same path as Qt. With Qt 6.8 there will be two new options. The -I parameter allows to add custom import paths to qmlls’ search paths. The -E parameter makes qmlls consider the value of the QML_IMPORT_PATH environment variable for its search paths.
In order for qmlls to work properly modules need to be created using the CMake API and use declarative type registration. Since writing the last post some KDE modules have been converted to those, but there’s still more to do.
Thanks to the QML team for those swift improvements!
Web Review, Week 2024-19
Let’s go for my web review for the week 2024-19.
Heat Death of the Internet - takahēTags: tech, internet, web, satire, criticism
Obviously a satire, some of it feels eerily real though.
https://www.takahe.org.nz/heat-death-of-the-internet/
Tags: tech, ai, machine-learning, gpt, research, benchmarking, criticism
Nice article. It’s a good reminder that the benchmarks used to evaluate generative AI systems have many caveats.
https://aiguide.substack.com/p/ai-now-beats-humans-at-basic-tasks
Tags: tech, ai, copilot, productivity
Interesting data point. This is a very specialized experience but the fact that those systems are kind of random and slow clearly play a good part in limiting the productivity you could get from them.
https://trace.yshui.dev/2024-05-copilot.html
Tags: tech, ai, copilot, ethics, programming, teaching, learning
Well, maybe our profession will make a leap forward. If instead of drinking the generative AI cool aid, if we really get a whole cohort of programmers better at critical skills (ethical issues, being skeptical of their tools, testing, software design and debugging) it’ll clearly be some progress. Let’s hope we don’t fall in the obvious pitfalls.
https://spectrum.ieee.org/ai-coding
Tags: tech, ai, machine-learning, gpt, copyright, gdpr
Interesting questions and state of the art around model “unlearning”. This became important due to the opacity of data sets used to train some models. It’ll also be important in any case for managing models over time.
https://ai.stanford.edu/~kzliu/blog/unlearning
Tags: tech, linux, systemd
Indeed the next systemd release feels feature packed. Definitely to keep an eye on.
https://lwn.net/SubscriberLink/971866/f244aee59d4d6a66/
Tags: tech, bios, uefi, hardware
Confused? Well, not surprising we mostly use those terms with very lax definitions.
https://utcc.utoronto.ca/~cks/space/blog/tech/UEFIAndBIOSAndOtherPCTerms
Tags: tech, tcp, networking
Getting network protocols right is definitely difficult.
https://brooker.co.za/blog/2024/05/09/nagle.html
Tags: tech, language, search
If you wonder why information retrieval from natural language texts is a tough domain, here is a short article listing the important things to keep in mind.
https://transactional.blog/blog/2023-why-full-text-search-is-hard
Tags: tech, failure, ux
Not a reason to make no effort into having as proper error messages as possible. Still there’s some truth there that trying to have a really useful error message is a fool’s errand.
https://www.haskellforall.com/2024/05/all-error-messages-are-necessarily-bad.html?m=1
Tags: tech, python, qt, spreadsheets, tools
Looks like a fun spreadsheet tool where you can use Python in any cell.
Tags: tech, uuid, encodings
Interesting set of tricks around UUIDs to make them easier to manipulate.
https://www.unkey.com/blog/uuid-ux
Tags: tech, web, frontend, htmx
Excellent exercise in understanding how HTMX works under the hood.
https://joshi.monster/posts/build-your-own-htmx/
Tags: tech, web, email
Good exploration of the many ways contact forms fail us regularly. Also shows a few cases where you might still want to us them… in most cases you shouldn’t.
https://adamjones.me/blog/dont-use-contact-forms/
Tags: tech, web, frontend, css
Looks like a good reference about everything which can be done with the latest CSS evolutions.
https://frontendmasters.com/blog/what-you-need-to-know-about-modern-css-spring-2024-edition/
Tags: tech, tests
Good advice indeed. Having asserts using appropriate matchers can go a long way understanding what went wrong.
https://testing.googleblog.com/2024/05/test-failures-should-be-actionable.html?m=1
Tags: tech, complexity
Definitely this. We tend to like complexity too much as a profession and field. It’s also a good reminder that the complexity of the problem and the complexity of the solution shouldn’t be conflated.
https://eugeneyan.com/writing/simplicity/
Tags: tech, programming, culture, craftsmanship
Interesting take about the mantras often used in our profession. They shouldn’t be treated as laws, but as proverbs carrying a piece of contextual wisdom. It’s thus unsurprising that they tend to contradict each other. This contradiction should make us pause and think.
https://lukeplant.me.uk/blog/posts/programming-mantras-are-proverbs/
Tags: tech, programming, refactoring
Since there’s a clear tendency in the developers I meet to “extract at all costs”, this is a good reminder that sometimes you need to inline the code first. This very often brings better clarity in the context of use. In turns this leads to a better final extraction.
https://xp123.com/refactor-inline-adjust-extract/
Bye for now!
KDE Ships Frameworks 6.2.0
Friday, 10 May 2024
KDE today announces the release of KDE Frameworks 6.2.0.
KDE Frameworks are 72 addon libraries to Qt which provide a wide variety of commonly needed functionality in mature, peer reviewed and well tested libraries with friendly licensing terms. For an introduction see the KDE Frameworks release announcement.
This release is part of a series of planned monthly releases making improvements available to developers in a quick and predictable manner.
New in this version Attica- Modernize: don't else after return. Commit.
- Provider: document default ctor. Commit.
- Providermanager: remove unused function with typo. Commit.
- Postfiledata: simplify private. Commit.
- Modernize: use unique_ptr for privates. Commit.
- Basejob: don't leave dangly pointers. Commit.
- Platformdependent: v3. Commit.
- Fixed min_bitpool and max_bitpool from capabilities where ignored. Commit.
- Port QML module to declarative type registration. Commit.
- Add support for media-playlist-no-shuffle icon name. Commit.
- Add audio/ogg and audio/x-vorbis+ogg icons. Commit.
- Add audio/vnd.wave MIME type. Commit.
- Remove generic non-symbolic audio and video icons. Commit.
- Add 16 and 22px symbolic versions of some Places icons that were missing. Commit. Fixes bug #486316
- Add zoom-in-map and zoom-out-map icons along with -symbolic versions. Commit.
- Longer description for the ICONS_LIBRARY option. Commit.
- Add symbolic versions for more USB device style icons. Commit.
- Fix some scale errors. Commit. Fixes bug #485479
- Fixed input-combo-on.svg colour issue. Commit.
- Add -symbolic symlinks for notification-* icons. Commit.
- Use new dev.suyu_emu.suyu id, add symlink for old id. Commit.
- Add accessories-screenshot-tool icon/symlink. Commit.
- [webfont] enable ligatures. Commit.
- Gitignore: add VS Code dir. Commit.
- Add input-keyboard-color 22px, 32 px. Commit.
- API dox: KDEInstallDirs6: refer to qtpaths now as source of Qt paths. Commit.
- API dox: KDEInstallDirs6: drop outdated note about being in ALPHA state. Commit.
- Test: Increase minimum cmake version so that it works with Qt 6.7. Commit.
- ECMQmlModule6: group qml and resource file calls. Commit.
- Modules/ECMAddTests.cmake - handle unset or empty QT_PLUGIN_PATH. Commit.
- Gitignore: add VS Code dir. Commit.
- KQuickConfigModule: Don't crash on null object. Commit.
- SimpleKCM: Remove remnants of footerParent. Commit.
- Use ellipsis character instead of three dots. Commit.
- GridDelegate: Port to ComponentBehavior: Bound. Commit.
- GridDelegate: Consolidate code paths for opening a menu. Commit.
- GridDelegate: Don't use qualified property access as appropriate. Commit.
- GridDelegate: Use concrete type for the popup menu. Commit.
- GridDelegate: Use somewhat more consistent ToolTip bindings, remove timeout. Commit.
- Components: Drop QML import versions, unify import aliases. Commit.
- Components: Guard nullable property access. Commit.
- Components: Explicitly specify signal handler arguments. Commit.
- KCModuleQml: Provide a fallback in case a pushed page is not one of magical KCMUtils types. Commit.
- Add API to make header and footer paddings optional. Commit.
- Round all the things consistently. Commit.
- Pluginselector: cache delegates. Commit.
- Gitignore: add VS Code dir. Commit.
- Gitignore: add VS Code dir. Commit.
- Avoid allocations while parsing int/float lists. Commit.
- Adapt kdesktopfiletest to QTemporaryFile behavior change. Commit.
- Guard header with an ifndef and include moc generates sources in the cpp file. Commit.
- Autotests: Don't use a timeout in testLocalDeletion. Commit.
- Adjust kconfig_compiler autotests to include a version without kcfgc. Commit.
- Add a CMake function to add a kcfg file without kcfgc. Commit.
- Gitignore: add VS Code dir. Commit.
- KRecentFilesAction: Load mimeType and action lazily. Commit.
- Remove forward declaration of KToggleAction. Commit.
- Test that an invalid language gives the empty string. Commit.
- Gitignore: add VS Code dir. Commit.
- Restore country detection tests on FreeBSD. Commit.
- Disable FreeBSD tests that recently started to fail in the CI. Commit.
- Gitignore: add VS Code dir. Commit.
- Gitignore: add VS Code dir. Commit.
- API dox: use "MIME type" and "URL" spellings consistently. Commit.
- API dox: add some minimal info to undocumented classes. Commit.
- API dox: add empty line between @brief (ends by first period) and rest. Commit.
- API dox: add some dummy info to namespaces for doxygen to cover them also. Commit.
- API dox: escape space after e.g. to work-around doxygen sentence end magic. Commit.
- UserMetadata: return errors when xattr ops fails. Commit.
- Value is already default timeout value in QT6 framework. Commit.
- [XmlExtractor] Add support for compressed SVGs. Commit.
- [XmlExtractorTest] Move Test class declaration to source file. Commit.
- [Office2007Extractor] Reuse DublinCoreExtractor, fix namespace handling. Commit.
- [DublinCoreExtractor] Add CreationDate (dc::created) support. Commit.
- [DublinCoreExtractor] Skip properties from empty elements, cleanup. Commit.
- Move date parser helper out of ExtractorPlugin, clean it up. Commit.
- [TaglibExtractor] Include vnd.audible.aaxc audio books in supported types. Commit.
- [Test] Include vnd.audible.aax audio books in coverage tests. Commit.
- [TaglibWriterTest] Move test class declaration to source file, cleanup. Commit.
- [TaglibExtractor|Writer] Fix mimetypes. Commit.
- Port q->connect to QObject::connect. Commit.
- Fix connection lifetime issue. Commit. See bug #454854. See bug #485386
- Recorder/kkeysequencerecorder: conform to KKeyServer changes. Commit.
- Gitignore: add VS Code dir. Commit.
- Update holiday_bd_en. Commit.
- Gitignore: add VS Code dir. Commit.
- Allow to configure if we register our icon plugin for SVGs. Commit.
- Port QML module to declarative type registration. Commit.
- Fix typo in BreezeIcons::initIcons loading. Commit.
- Gitignore: add VS Code dir. Commit.
- Fix build with Qt 6.7 on 32 bits. Commit.
- [kfilefilter] Consider mime globs valid. Commit.
- Kfileitemtest: add basic tests for dir. Commit.
- File_unix: don't call QMimeDatabase::mimeTypeForFile for directories. Commit.
- Widgetsaskuseractionhandler prevent crash when job had no parent widget. Commit.
- PreviewJob: Add file extension to thumbnail temp files. Commit. Fixes bug #463989
- KFileItem: handle the case parent url path is empty. Commit.
- KFileItemActions: Add logic to order actions between separators. Commit. Fixes bug #466115
- KFileItem: fix getStatusBarInfo() displaying symlink target as "http:". Commit. Fixes bug #475422
- ScopedProcessRunner: support waitForStarted. Commit.
- ScopedProcessRunner: fix use of undeclared identifier 'close'. Commit.
- [ftp] Always use default timeout values. Commit.
- [http] Set error string for ERR_DOES_NOT_EXIST. Commit.
- Force test language to en. Commit.
- Knewfilemenu: Add @since 6.2 to the new signals and methods. Commit.
- Kfilefilter.h: update API docs. Commit.
- Kencodingfiledialog dox: rewrite API dox that refer to removed functions. Commit.
- Kfilewidget dox: replace references to setFilter() with setFilters(). Commit.
- Fix a few warnings. Commit.
- Add EnableRemoteFolderThumbnail option checking. Commit.
- PreviewJob: Display preview for locally mounted remote directories. Commit.
- Knewfilemenu: add isNewDirNameJobRunning. Commit.
- KFilePlacesItem: Show teardown busy indicator during optical media eject. Commit.
- KDirModelTest.testDeleteFiles: lower debug output. Commit.
- KUrlNavigator: allow adding a badge widget after the breadcrumb. Commit.
- Set ideal case for TwoVectors. Commit.
- Udsentry_api_comparison_benchmark: update. Commit.
- Kurlnavigatorbutton: prevent. Commit.
- Add more explicit moc includes to sources for moc-covered headers. Commit.
- Connection: don't queue tasks until OOM. Commit.
- Http: Fix parsing DAV:getlastmodified. Commit. Fixes bug #484671
- Kfileitem: Linux, use statx to refresh files. Commit. Fixes bug #446858
- Fixed wrong navigation and dialog header button colors. Commit. Fixes bug #486163
- Card: Remove the unnecessary "reality check" binding on footer, add test. Commit.
- Card: Restrict actions type from arbitrary QObject to T.Action. Commit.
- Card: Shuffle things around a bit to make them look nicer. Commit.
- Remove linkActivated/linkHovered from Delegate types. Commit.
- InlineMessage: Improve examples in documentation, clean up QML. Commit.
- OverlayDrawer: Rework separator's code, animate transitions. Commit.
- OverlayDrawer: Hide segmented separator when the drawer is collapsed. Commit.
- OverlayDrawer: Rewrite visibility condition for segmented separator. Commit.
- OverlayDrawer: Rewrite segmented separator positioning expression. Commit.
- OverlayDrawer: Bind segmented separator's width to the real separator's width. Commit.
- GlobalDrawer: Set spacing on the default header. Commit.
- Fix null deref in OverlaySheet. Commit.
- OverlaySheet: Port layout hacks to a simple Padding with its contentItem. Commit.
- Tst_pagepool: Port testing code from verify(==) to compare. Commit.
- Tst_pagepool: Fix test properly. Commit.
- Revert "tst_pagepool: Fix test". Commit.
- CardsGridView and CheckableListItem are not a thing anymore. Commit.
- Actions.main is not a thing anymore. Commit.
- Tst_pagepool: Fix test. Commit.
- Revert "PageRow: Fix parent of Component-based pages". Commit.
- PageRow: Fix parent of Component-based pages. Commit. Fixes bug #482753
- MnemonicAttached: Fix logic when pressing Alt. Commit.
- Dialog: Always use an overlay as visual parent. Commit.
- Link Activation TitleSubtitle. Commit.
- ContextualHelpButton: remove excess space from tooltip. Commit. Fixes bug #481817
- Fix crash on teardown when QML engine is already unset. Commit.
- ListSectionHeader: Deprecate label property. Commit.
- PageRow: Remove superfluous trailing semicolon from a property alias. Commit.
- PromptDialog: Create default contentItem dynamically on demand. Commit.
- Padding: Remove old overridden contentItem from the visual hierarchy. Commit.
- Gitignore: add VS Code dir. Commit.
- Add a explicit page type check in AbstractApplictionHeader. Commit.
- Add radius unit for rounded rectangles. Commit.
- Add more explicit moc includes to sources for moc-covered headers. Commit.
- Show header warning message framelessly. Commit. Fixes bug #485464
- DownloadItemsSheet: use alternating background colors for legibility. Commit. Fixes bug #483724
- Document ContentWarning. Commit.
- Page: conditionalize warning message based on riskiness. Commit.
- Enforce passing tests on Windows. Commit.
- Enforce passing tests on Windows. Commit.
- Action: Make bool operator explicit. Commit.
- Fix matchInternalFinished not being emitted in case of dbus errors. Commit.
- Fix caret painting for inline notes at the end of line. Commit.
- KateCompletionWidget: Mark function static. Commit.
- KateCompletionModel: remove useless std::as_const. Commit.
- Run more tests offscreen. Commit.
- Fix performance with many cursors in a large line. Commit.
- Fix test expectations. Commit.
- Fix crashs and OOM on load with encoding failures. Commit. Fixes bug #486195. Fixes bug #486134
- A11y: Improve tab order for "Appeareance" -> "Borders". Commit.
- A11y: Set "Line Height Multiplier" buddy. Commit.
- Fix broken navigation in completion widget with multiple views. Commit.
- Fix clicking in completion. Commit.
- Fix textInsertedRange signal for insertText behind last line. Commit. Fixes bug #483363
- Enforce passing tests on all platforms. Commit.
- Fix logging category. Commit.
- Fix reply type in portal implementation. Commit.
- Kwalletportalsecrets.h: Add missing include. Commit.
- Implement XDG Secrets Portal. Commit. Fixes bug #466197
- Introduce KContextualHelpButton. Commit.
- KMessageWidget: Fix handling of palette changes. Commit.
- KMessageWidget: Make sure icon label is always vertically centered. Commit.
- Gitignore: add VS Code dir. Commit.
- Port to QNativeInterface::Private::QWaylandWindow. Commit.
- Remove an unused explicit moc include. Commit.
- Add more explicit moc includes to sources for moc-covered headers. Commit.
- Introduce KXcbEvent to initialize the memory of sent XCB events. Commit.
- Improve dbus disabling. Commit.
- TreeViewDelegate: Fix non-observable modelIndex property getting stuck. Commit.
- [CheckIndicator] Use control as AbstractButton. Commit.
- Add missing dependency to private module. Commit.
- Add QTBUG to comment. Commit.
- Make SwitchIndicator more compiler-friendly. Commit.
- ItemBranchIndicators: Fix uninitialized member variable m_selected. Commit.
- StyleSingleton: Check whether object is qGuiApp. Commit.
- [RadioButton] Use id instead of parent lookup. Commit.
- [TabButton] Fix property type. Commit.
- Apply Kirigami.Units.cornerRadius to default list item background too. Commit.
- Gitignore: add VS Code dir. Commit.
- Use consistent radius value from Kirigami.Units.radius. Commit.
- Remove too aggressive assert. Commit. Fixes bug #464149
- [StorageAccess] Fix storageAccessFromPath returning unmounted filesystems. Commit.
- [SolidHwTest] Extend FakeHW description with encrypted volume, add tests. Commit.
- [SolidHwTest] Test Device::storageAccessFromPath. Commit.
- [DeviceManager] Remove exists() check from storageAccessFromPath. Commit.
- Udisks: Return empty string for "root" clearTextPath. Commit. Fixes bug #485507
- [SolidHwTest] Remove unnecessary slotPropertyChanged helper, fix bug. Commit.
- [SolidHwTest] Remove setenv wrapper, unnecessary qt_windows.h include. Commit.
- [SolidHwTest] Move test class declaration to source file. Commit.
- Udisks2: Add support CanCheck/Check/CanRepair/Repair. Commit.
Kirigami Addons 1.2
Kirigami Addons 1.2 is out with some accessibility fixes and one new component: FloatingToolBar.
AccessibilityDuring the accessibility sprint, there was an effort to ensure the date and time pickers were actually accessible. Aside from improving the screen reader support, this also allow to write Selenium integration tests which uses these components in Itinerary. Thanks Volker, David Redundo and others for working on this!
FloatingToolBarMathis and I worked on a new addition to Kirigami Addons adding to the existing FloatingButton and DoubleFloatingButton components. This component is perfect to add tool to editing and drawing areas and can either contain a simple RowLayout/ColumnLayout containing ToolButtons or a Kirigami.ActionToolBar.
With the style used by FormCardDialog and MessageDialog merged in Kirigami and soon in qqc2-desktop-style too, I did some changes to the FormCardDialog and MessageDialog to use the same padding as Kirigami.Dialog.
MessageDialog now works better on mobile with the layout adapting itself to the dialog size.
messagedialog with a mobile layout
Aditionally similar to KMessageBox, MessageDialog has an optional “don’t show again” option which can be enabled by setting the dontShowAgainName property similar to the KMessageBox api.
I also prepared these two components to work as standalone windows which is likely to come with this Qt 6.8 change request.
CategorizedSettingsJonah fixed a bug where it would be impossible to escape the settings on mobile.
DocumentationI added more screenshot to the API documentation and updated the TableView example app to use a ‘frameless’ style.
Qt 6.7 supportThis release also brings support for Qt 6.7 on Android as this release introduced an API and ABI change to the Android code. Thanks Joshua for tackling this issue.
KDE neon Rebasing on Ubuntu Noble
The new Ubuntu LTS was released in April, congratulations to all involved with that. I know Scarlett worked hard to get Kubuntu back into shape so do if that a try if you want a stable Plasma 5 desktop.
In the KDE neon project we don’t like to sit still for long so we are now building all our KDE packages on Ubuntu Noble, versioned 24.04. This always takes longer than it feels like it should, mostly because it’s a moving target to keep everything compiled as more KDE software gets released, so no promises on when it’ll be ready but we’ll try to be fast because the old Ubuntu base of jammy (22.04) is showing its age with projects like Krita no longer able to compile there.
So far the main issues are all the changes needed for 64-bit time_t to fix the y2k38 problem, we know you wouldn’t want your clocks to zero out in 2038.
Season Of KDE 2024 Conclusion
Another year, another successful Season Of KDE for 12 contributors!
This article has been co-written with the input from all contributors.
Translation ProjectsKDE counts on a very active translation community and translates software into over 50 different languages. In SOK 2024, we had 2 projects that focused on translating multiple apps into Hindi. Asish Kumar and Akash Kumar joined the KDE Hindi community to translate multiple apps into Hindi. They both worked together on translating Merkuro, then Akash focused on Tellico while Asish worked on KDE Connect and Cantor.
Kdenlive
Kdenlive brings you all you need to edit and put together your own movies. We had 2 projects for KDE's full-featured video editor:
-
Ajay Chauhan implemented multi-format rendering for Kdenlive by adding a filter to adjust the aspect ratio of video clips in the main track, allowing users to select the desired aspect ratio during export, and integrating it into the final rendering profile. Ajay also added code to apply filters to clips, calculate crop parameters, and handle video cropping to the desired ratio; and implemented the GUI component ComboBox that selects the aspect ratio and ensures that the selected ratio is passed to the RenderRequest object. Additionally, various issues were fixed during development, such as temporary file handling issue, preventing crashes, and refactoring code.
-
aisuneko icecat created a prototype keyframe curve editor GUI for Kdenlive. Based on recent progress in introducing advanced keyframe types and capabilities into the editor, the widget allows the user to intuitively view and control the current animation curve of keyframable effect parameters. As of now, the widget supports basic interactions such as dragging and double clicking, and integrates well with other existing Kdenlive components. This is still a work-in-progress feature, as more work needs to be done beyond SoK to have it further enhanced before it can be released to end users.
There are 5 new projects that made measuring the energy consumption of software easier and more integrated in the development pipeline. This helps make KDE software more efficient and environmentally friendly, as well as more accessible at the same time:
-
Sarthak Negi focused on testing, bug-fixing and integrating measurement workflows on KEcoLab. After setting up the testing environments, Sarthak worked on creating a CI test and refactoring code for efficiency and the code has been merged in the main repository.
-
Pradyot Ranjan worked on improving and updating the setup guide for selenium, a tool to automatize testing. The result can be found on this wiki page.
-
Amartya Chakraborty added support for KdeEcoTest on the Windows platforms. To do this, Amartya replicated test-scripts for Okular test using KdeEcoTest which previously used xdotool. Now this test-script can be executed on any platform. The conditional installation of packages based on the platform using pipenv has been implemented.
-
Athul Raj Kollareth worked on bringing support for KdeEcoTest on Wayland systems. The initial work consisted of [adding an abstraction layer](https://invent.kde.org/echarruau/feep-win-32-kdotool-integration/-/ merge_requests/1) so that KdeEcoTest could be run on different platforms including Windows. To build support for Wayland, we had to first restrict our scope and finally decided to move with only supporting the KWin compositor as it had built in functionalities for automating window related manipulations on the GUI. To automate input devices, the Linux kernel's evdev module was used which allowed us to monitor input devices and also emulate them using uinput. With these changes integrated into KdeEcoTest, we were able to run tests on Wayland, X11 and Windows thanks to Amartya's implementation. ![KEcoTest running on Wayland](KdeEcoTest_running under wayland.png)
-
Aakarsh MJ worked on integrating KEcolab into Okular's pipeline. This will allow the Okular team to measure energy consumption for each release. This paves the way for the creation of a template which will be further helpful for other projects as well. A merge request is in progress to integrate it into Okular.
Cantor is an application that lets you use your favorite mathematical programming language from within a friendly worksheet interface, while Labplot is KDE's user-friendly data visualization and analysis software. Both applications are closely intertwined, and have had three projects completed during SOK:
-
Dhairya Majmudar worked on extending the embedded documentation for supported Computer Algebra Systems Project. Dhairya created the common styles for several mathematical system documents, enhancing the users' experience allowing them to use them simultaneously; and Python scripts have been written to link the stylesheets to the HTML files. These Python scripts are further extended to convert HTML files in Qt Help files that can be uploaded to the KDE Store. The in-progress merge request can be found at: https://invent.kde.org/education/cantor/-/merge_requests/74.
-
Israel Galadima contributed to the "LabPlot: Download/Import of datasets from kaggle.com" project. Since kaggle.com seems to be the central place nowadays for finding datasets in the data science community, we wanted LabPlot's users to be able to access the datasets on kaggle.com directly from within LabPlot. Thus, Israel worked on a new dialog in LabPlot that allows users to search for and import datasets directly from kaggle.com into LabPlot spreadsheets, using the official kaggle cli tool to facilitate the communication between LabPlot and kaggle.com. Multiple merge requests have been merged, the last one is still in review.
-
Raphael Wirth introduced the support for data stored in the MCAP format to LabPlot. Throughout the project, Raphael extended the backend of LabPlot to allow the loading of JSON-encoded MCAP files into its internal data structure as well as the export back to the MCAP file format. Additionally, the user interface has been adapted to accommodate these advancements. This required the extension of the existing import dialog and the introduction of a new export dialog tailored specifically for saving MCAP files.
We would like to congratulate all participants and look forward to their future journey with KDE!
The State of KDE Apps and Plasma in Archlinux
KDE has a symbiotic relationship with many linux distros, since while we develop our software we also use particular versions of linux, I personally use archlinux as my distro of choice for many years being the only distro that I manage to bare for more than six months ( and I believe I am using it for more than 15 years already so that counts).
The "recipe" for packaging KDE software for arch is big, because we are big, and packaging large amounts of software is no easy feat, so me and Antonio Rojas started to update the build scripts to be less manual and less error prone. All the versions of Plasma 6 that have been packaged for arch are using this scripts in one way or another (or manually when we broke everything :)
This work is being done in a separate branch to not break the current workflow, but things are looking good and we hope to merge this in master soon, so that deploying newer versions of KDE software for arch will be a single command, meaning more time for the developers and less time creating packages.
KDE e.V. is looking for a web designer (Hugo) for environmental sustainability project
KDE e.V., the non-profit organisation supporting the KDE community, is looking for a web designer who is skilled with Hugo to implement a new environmental sustainability campaign for the KDE Eco website. Please see the job ad for more details about this employment opportunity.
We are looking forward to your application.
KGraphViewer 2.5.0 released
KGraphViewer 2.5.0 has been just released! The main focus of this release is the port to Qt6 and KDE Frameworks 6 as well as general code modernisation, but of course some bugs have been squashed too. The full changelog can be found below.
About KGraphViewer:
KGraphViewer is a Graphviz DOT graph file viewer, aimed to replace the other outdated Graphviz tools. Graphs are commonly used in scientific domains and particularly in computer science.
You can learn more at https://apps.kde.org/kgraphviewer/
URL: https://download.kde.org/stable/kgraphviewer/2.5.0/
SHA256: 872bee63fb4df6f7fb2b4eaf02ff825cba3ca953ac02509a287fe5cd0f1e2b69
Signed by: D81C 0CB3 8EB7 25EF 6691 C385 BB46 3350 D6EF 31EF Heiko Becker [email protected]
https://invent.kde.org/sysadmin/release-keyring/-/raw/master/keys/[email protected]
Full changelog:
- appstream: Add upcoming 2.5.0 release
- Brush up menu & action terms a bit
- Add icons to more actions & submenus
- Update homepage URL in README
- Remove some outdated/unused files
- Avoid double look-ups in maps, use iterator returned from find method
- Add widget parent to QMenu instances
- DotGraphView: create popup menu only on demand
- Share also zoom actions between DotGraphView & KGraphViewerPart
- Use enum QColor constructor instead of string based one
- Use KStandardAction convenience creation methods, parent all to collecitions
- Drop file_open_recent from ui.rc files, given KStandardAction toolbar magic
- Use more member-function-pointer-based Qt signal/slot connects
- Port away from auto-casting from ascii strings
- Fix missing closing tags in D-Bus API xml files
- Use QList directly instead of Qt6-times alias QVector
- Make manual build & install fully optional
- Update links to graphviz website
- Fix handling file cmdl arguments with relative path
- Fix bad defaults for fonts, also for colors, shapes & style
- KGraphViewerPart CMake config file: drop KGraphViewerPart_INCLUDE_DIRS
- Bump version & SO version for first Qt6-based release
- Drop support for Qt5/KF5
- Clean up includes & forward declares
- Do not use Qt modules includes
- Deploy custom pixmaps as Qt resource
- Printing page settings: remove custom broken window icon
- Printing page settings: replace "lock ratio" button with checkbox
- KGraphViewer KPart metadata: use normal app display name as name
- Drop libkgraphviewer appstream file, no other libraries provide some
- Set target properties right after declaring the target
- Remove unused version header includes
- Drop code for no longer supported KF versions
- Fix another wrong min Qt version variable name usage
- Use ECMDeprecationSettings
- Port away from deprecated QMouseEvent::globalPos()
- KGraphEditor: fix bad port to QMessageBox::question
- Use Q_EMIT instead of emit
- Switch to ECM required-default KDE_COMPILERSETTINGS_LEVEL
- Remove unneeded ; after Q_DECLARE_PRIVATE() & Q_DECLARE_PUBLIC()
- Use more nullptr
- Fix wrong min Qt version variable name usage
- Add Qt6/KF6 build support
- Remove unneeded QApp::setOrganizationDomain, dupl. KAboutData::setApp...Data
- appdate: use desktop-application type, add developer & launchable tags
- Update homepage to apps.kde.org
- Port away from deprecated QDesktopWidget
- Port away from deprecated QPrinter::setOrientation()
- Port away from deprecated QPrinter::numCopies()
- Port away from deprecated operator+(Qt::Modifier, Qt::Key)
- Port away from deprecated QWheelEvent::delta()/orientation()
- Port away from deprecated signal QButtonGroup::buttonClicked(int)
- Port away from deprecated I18N_NOOP2
- Port away from deprecated KXmlGui RESTORE() macro
- Bump min required Qt/KF to 5.15.2/5.100.0
- Port away from deprecated QLayout::setMargin()
- Add missing includes for Qt6 build
- Remove unused include
- Drop usage of outdated no-effect QGraphicsView::DontClipPainter
- Port away from deprecated QStyle::PM_DefaultLayoutSpacing
- change QFontMetrics.width with horizontalAdvance
- replace QRegExp by QRegularExpression
- Use for instead of foreach
- Replace deprecated endl with Qt variant
- remove -qt5 suffix
- change path in gitlab-ci
- snapcraft: initial import snapcraft files.
- kgrapheditor: deploy ui.rc file as Qt resource
- Remove Designer's "." normaloff file data from icon properties in .ui files
- Add explicit moc includes to sources for moc-covered headers
- doc: use a non-deprecated entity for Frameworks
- Add releases
- Add Open Age Content Rating
- Remove warning about unknown DOT fonts
- Remove custom action to configure shortcuts
- Init graph members
- Remove unused graphviz/gvc.h includes
- Add KI18n and KDocTools macro to install translations
- Port away from deprecated KMessageBox Yes/No API
- Remove arcconfig
- Add interface library for part include dir
- Handle Qt6 change around enterEvent
- Add missing include
- Remove unused include
- Port away from deprecated KPluginLoader
- Port away from deprecated endl
- Adapt build system to Qt6
- Remove pointless/broken icons
- Enable highdpi pixmaps
- Add git blame ignore file
- Add GitLab CI
- Use ecm_qt_install_logging_categories to generate kdebugsettings file
- Drop code variants for no longer supported Qt/KF versions
- Use more target-centric cmake code
- Update .gitignore
- Use non-deprecated KDEInstallDirs variables
- Port away from deprecated KSelectAction::triggered(QString)
- Documentation updates - Update date and fix version numbers - Fix tagging and sync option's text
- Port away from deprecated QMatrix
- KAboutData::setupCommandLine() already adds help & version options
- kgraphviewer_part.desktop: remove unused key Categories
- Use .in suffix for header file that is passed to configure_file()
- Port away from deprecated signal QProcess::error
- Use default window flags for QInputDialog::getText
- Port away from deprecated KEditToolBar::newToolbarConfig
- Port to new KPluginMetaData-based KParts API
- Deploy ui.rc files as Qt resources
- Remove broken argument SERVICE_TYPES kpart.desktop from desktop2json call
- Handle Graphviz capitalization changes
- Capitalize Graphviz consistently
- cmake: Simplify and improve FindGraphviz.cmake
- Add KDE ClangFormat on CMake and run the target
- Fix link: ui.html -> menus.html
- Draw empty arrowheads closed
- add genericname for use on kde.org/applications
- Set StartupWMClass in desktop file
- Use more https in links (and update outdated ones)
Massif Visualizer 0.8.0 released
Massif Visualizer 0.8.0 has been just released! The main focus of this release is the port to Qt6 and KDE Frameworks 6 as well as general code modernisation, but of course some bugs have been squashed too. The full changelog can be found below.
About Massif Visualizer:
Massif Visualizer is a tool that - who'd guess that - visualizes massif data. You run your application in Valgrind with --tool=massif and then open the generated file in the visualizer. Gzip or Bzip2 compressed massif files can also be opened transparently.
You can learn more at https://apps.kde.org/massif-visualizer/
URL: https://download.kde.org/stable/massif-visualizer/0.8.0/src/
SHA256: 5fad3f0e0d9fbb6bc8cfb744cb4e2c99f231d57ee0dd66dd594d36c2cc588a80
Signed by: D81C 0CB3 8EB7 25EF 6691 C385 BB46 3350 D6EF 31EF Heiko Becker [email protected]
https://invent.kde.org/sysadmin/release-keyring/-/raw/master/keys/[email protected]
Full changelog:
- appdata: Add upcoming 0.8.0 release
- Unbreak KDE CI config: require "@stable-kf6" branch of kgraphviewer
- KDE CI: require tests to pass (for platforms where they currently do)
- KDE CI config: require "@same" branch of kgraphviewer
- appstream: use new id without hyphen
- Port away from QScopedPointer
- ParseWorker: fix switched error title & text for empty data file
- Overhaul action & title texts to follow KDE HIG, add more UI marker contexts
- Config dialog: align "Shorten Templates" checkbox with form fields
- Config dialog: avoid full-width comboboxes, use system style
- Update outdated Kate editor setting replace-trailing-space-save
- Use more function-pointer-based Qt signal/slot connections
- Remove some unused includes
- Use KStandardAction (member-)function-pointer-based overloads
- Use ECM-requirement-derived default KDE_COMPILERSETTINGS_LEVEL
- Drop any margins around document & tool views
- Use QList directly instead of Qt6-times alias QVector
- Switch from target_link_libraries' legacy LINK_PRIVATE to PRIVATE
- Use more target-centric cmake code
- CMake: remove unneeded explicit addition of current dirs to include dirs
- Fix build with older cmake: -D not expected with COMPILE_DEFINITIONS
- Update homepage to apps.kde.org
- Use commits.kde.org/kgraphviewer as source location for KGraphViewerPart
- Set version to 0.8.0
- Use CMake's project(VERSION)
- Drop support for Qt5/KF5
- Support Qt6/KF6 builds
- Rely on CMake's autorcc (enabled by KDECMakeSettings) to add Qt resources
- Use ECMDeprecationSettings
- Use KF6-proof KConfigGroup::group() overload
- Port away from deprecated KPluginFactory::create() overload
- Port away from deprecated KPluginLoader::factory()
- Port away from deprecated KFilterDev
- Port away from deprecated QPrinter::pageRect()
- Port away from deprecated QDesktopWidget
- Port away from deprecated QString::split overload
- Port away from deprecated QPixmap::grabWidget
- Port away from deprecated QTreeView::sortByColumn overload
- Port away from ModelTest copy to QAbstractItemModelTester
- Adapt iterator type to match actual type returned from QHash method
- Add explicit QRegExp includes
- Port away from deprecated QAlgorithmsPrivate::qReverse
- Port away from deprecated qSort
- Bump min required CMake/Qt/ECM/KF to 3.16/5.15.2/5.100/5.100
- appstream: use https for screenshot links
- appstream: use desktop-application type, add developer & launchable tags
- Appdata: Add developer name
- [CI/CD] Add flatpak job
- [CI] Don't depend on kgraphviewer on Windows
- Port to new CI template syntax
- snapcraft: initial import snapcraft files.
- Deploy ui.rc files as Qt resource
- Move Flatpak CI to GitLab
- Add explicit moc includes to sources for moc-covered headers
- Use non-deprecated KDEInstallDirs variables
- Install translations
- Port away from deprecated KMessageBox::sorry
- Remove arcconfig
- Remove unused include
- Use imported target for KGraphViewerPart
- debug
- Add Gitlab CI
- Remove unused XmlPatterns
- Add some missing linkages
- Use KDE_INSTALL_MIMEDIR instead of custom XDG_MIME_INSTALL_DIR
- appdata.xml: Minor fixes for submission to Flathub
- Fix minor issues found by EBN
- fix xml
- update screenshot
- Set StartupWMClass in desktop file
- ui.rc files: use <gui> instead of deprecated <kpartgui>
- Do not duplicate work done by KAboutData::setupCommandLine()
- Use nullptr
- Use override
- Fix window icon for non-desktopfile WM to own icon "massif-visualizer"
- Properly support BUILD_TESTING
- Remove explicit enable_testing(), duplicated from KDECMakeSettings
- Bump min cmake version to 3.0
- Remove explicit use of ECM_KDE_MODULE_DIR, is part of ECM_MODULE_PATH
- Fix minor EBN issues
March and April in KDE PIM
Here's our bi-monthly update from KDE's personal information management applications team. This report covers progress made in the months of March and April 2024.
Since the last report, 36 people contributed more than 1300 code changes. Most of the changes will be available in the coming KDE Gear 24.05 release.
AkonadiWhen Akonadi stores the timestamp of when a database entry has been last modified, the conversion from user's local time zone to UTC and back now works correctly regardless of the database engine used BKO#483060.
KOrganizerKOrganizer has received a number of bug fixes:
- Fixed parsing of events with all-day recurrence rules (BKO#483707)
- KOrganizer now correctly tracks active (selected) tasks in the ToDo View (BKO#485185)
- Creating a new event from the date navigator in top left corner uses the correct date now (BKO#483823)
- Custom filters for event views in KOrganizer work again (BKO#484040)
- Improved handling of calendar colors
- The iCal Resource now correclty handles iCal calendars generated by Google Calendar, which previously caused an endless loop and high CPU usage by the Akonadi iCal Resource (BKO#384309)
- The ToDo view in the KOrganizer side-bar now works even when the Todo View isn't open
- The "Custom Pages" settings page, which didn't worked for years, have been removed
- Fixed a crash on exit after the Settings dialog was opened (BKO#483336)
g10 Code has kindly sponsored Dan's work on those bug fixes and improvements.
Kontact- Fixed name of UI element being too long (Hide/Show Sidebar) (BKO#484599)
- Fixed a regression in the message composer that caused attachments to not get automatically encrypted when encrypting a message (T7059)
- Fixed not translated shortcut (BKO#484281)
- Fixed Monochromatic icons in system tray not always used (BKO#484420)
- Fixed some not extracted i18n string (BKO#484186)
- Allow to change print layout when we export as pdf (BKO#480733)
- Fixed KMail unexpectedly trying to connect to safebrowsing.googleapis.com (BKO#483283)
- Fixed KMail's config dialog taking a long time to show up (BKO#484328)
A new feature will arrive in 24.08: Plasma-Activities support (only Linux). So these class were adapted for supporting it. A check was added in KMail/Akregator/Knotes/KAddressbook, all work is in progress at the moment.
KleopatraThe certificate details (user IDs, subkeys, certifications, etc.) are now shown in a single window. Additionally, information about the smart cards a certificate is stored on is now shown.
Further improvements are:
- The creation of OpenPGP certificates was simplified by replacing the complicated advanced settings with a simple selection of the algorithm and the validity period.
- If the search for certificates on a server takes longer, a progress dialog shows that the search is still ongoing. If no certificates are found, a corresponding message is shown instead of just showing an empty list of results. (T6493)
- Certificates stored on TCOS smart cards (e.g. the German Signature Card V2.0) are now imported automatically. Previously, the import had to be triggered manually. (T6846)
- Fixed not translated shortcut (BKO#484281)
- Fixed some not extracted i18n string (BKO#484186)
Martín González Gómez implemented a new article theme for Akregator which is not only more readable for long-form content but also adapts correctly to dark color themes.
Akregator has received a number of bug fixes:
- Fixing error when adding feed from https://www.qt.io/blog (BKO#484615)
- Fixing translated shortcut (BKO#484281)
- Fixing akregator icon, in systray does not follow dark breeze theme (BKO#483737)
Our travel assistance app Itinerary now shows more details about vehicle and train coach amenities, informs about daylight saving time changes at travel destinations and received many more fixes and improvements for extracting travel documents. See Itinerary's own bi-monthly status update for more details.
Merkuro
Merkuro now make uses of the new Date and Time picker from Kirigami Addons instead of bringing it's own. The date picker instance is also now shared in multiple places to reduce memory and CPU usage and speedup opening the even editor.
Various dialogs were also modernized.
Get Involved
Join us in the #kontact:kde.org Matrix channel or the kde-pim mailing list!
Qt Creator 13.0.1 released
We are happy to announce the release of Qt Creator 13.0.1!
MBition becomes a KDE patron
MBition supports the work of the KDE community with its generous sponsorship.
MBition designs and implements the infotainment system for future generations of Mercedes-Benz cars and utilizes KDE's technology and know-how for its products.
"After multiple years of collaboration across domains, we feel that becoming a patron of KDE e.V is the next step in deepening our partnership and furthering our open-source strategy" says Marcus Mennemeier, Chief of Technology at MBition.
"We are delighted to welcome MBition as a Patron," says Lydia Pintscher, Vice President of KDE e.V. "MBition has been contributing to KDE software and the stack we build on it for some time now. This is a great step to bring us even closer together and support the KDE community, and further demonstrates the robustness and hardware readiness of KDE's software products."
MBition joins KDE e.V.'s other patrons: Blue Systems, Canonical, g10 Code, Google, Kubuntu Focus, Slimbook, SUSE, The Qt Company and TUXEDO Computers, who support free open source software and KDE development through KDE e.V.
Krita Monthly Update – Edition 15
It is time for the monthly news update brought to you by the Krita-promo team. Let us take a look at the highlights of krita community and development for this month.
Development report-
Our users on chromebooks faced a nasty bug which crashed krita on startup. So we made a 5.2.2.1 hotfix release for Android Play Store only to fix this bug. It also contains other fixes from the stable branch, but be warned there is a known crash regression with importing audio.
-
A proper 5.2.3 release for all supported platforms will be made as soon as possible, hopefully in the next few weeks.
-
At the time of writing, nightly builds for macOS are still blocked by a signing-related issue. Once that is resolved, automated builds for all supported platforms will be up and running again. That is the culmination of months of work by lead developer Dmitry Kazakov, together with macOS developer Iván Yossi, Android developer Sharaf Zaman, Windows contributor Simon Ra, and others, in a refactor of Krita’s build system.
-
Feature Request: Palette in Toolbar has been marked “solved” by freyalupen’s most recently merged code. Add docker box toolbar widget allows the user to add any docker to the toolbar in a temporary popup widget similar to the “choose brush preset” one in Painter’s Tools.
-
A problem with certain RBGA brushes has been solved and will be part of the next release. Users were experiencing lagging and freezing when accessing these brushes. The thread makes an interesting read as it’s a “live” look at an issue being revealed and it shows how helpful it is when users conduct testing. You can read the thread here.
-
Ken_Lo has been accepted as a student for Google Summer of Code, to work on pixel perfect hand-drawn lines.
-
In addition to various recorder related fixes by @freyalupen, the FFmpeg profiles in the recorder docker are improved by @Ralek. We congratulate @Ralek on their first contribution to Krita.
-
When entering canvas-only mode, the document used to jump abruptly and reposition itself. @YRH helped in solving this issue
-
Deif_Lou has improved performance of the fill tool making it faster.
-
Ken Lo added an option in the settings to pick default export file type.
-
Grum999 has looked into improving Krita’s API for python plugins and as a start, chose to implement a scratchpad API that adds functionality to the scratchpad.
The April Monthly Art Challenge, Animal Curiosity, inspired submissions from 26 artists. @jimplex was voted the winner with this creative piece: Firefly by jimplex
The theme for the May 2024 challenge is “reflection.” You can get all the details here. We already have some ideas and pre-work flying around in the discussion and WIP thread. Have a look – something might inspire your creativity.
Featured artworkKrita-Artists members nominated 9 images for the featured artwork banner. When the mid-month poll ended, these are the 5 that won a place on the banner. All 5 will be entered into the Best of Krita-Artists 2024 competition next January.
Cabin in the woods-RH by Rohit Hela
Detailed Portrait by denjay5
Nier Automata by IvanGilbertt
Alien Senator by DavB
My uni project by smollbirb
Nominations for the April/May poll are open until May 11, 2024.
Noteworthy pluginBlender-Krita link plugin for texture editing by heisenshark
This plugin has a fresh update that the author describes as a “big overhaul of how the plugin works.” Check out the thread on Krita-artists.org here.
Tutorial of the monthKrita’s newest tutorial by Ramon Miranda features an interview with Rakurri, the creator of Rakurri’s brush pack containing more than 200 brushes made just for Krita. Ramon demonstrates his favorite ones such Glow FX, Liquid Bristle and the vegetation brushes.
This section has been compiled by freyalupen.. Apr 3 - May 2, 2024
Stable branch (5.2.2+):Bugfixes:
- [Android x86_64] Fix crash on startup on x86_64, which was being encountered on Chromebooks. (BUG:485707) (merge request, Sharaf Zaman)
- [Brush Presets] Speedup loading of GBR brushtips, and brush presets with embedded resources. (merge request, Dmitry Kazakov)
- [Brush Engines] Fix animated brushtips' sequence order in the Pixel Engine. This also introduces a small change to Color Smudge animated brushtips, where the first dab is now used for getting smudge information instead of painting. (merge request, Dmitry Kazakov)
- [Color Sampler] Don't reset redo when doing color picking. (BUG:485910)(merge request, Dmitry Kazakov)
- [Calligraphy Tool] Fix "Use tablet angle" Calligraphy Tool ignoring tilt. (BUG:485709) (merge request, George Gianacopoulos)
- [Grids] Fix Grid visual glitches with Solid subdivision style. (BUG:484889) (merge request, Grum 999)
- [Transform Tool] Fix bug where transformed image had aliased left edge. (BUG:484677) (commit, Deif Lou)
- [File Formats: XCF] Show an error when trying to import unsupported version 3 xcf files instead of loading an empty canvas. (BUG:485420) (commit, Halla Rempt)
Nightly build regression bugfixes:
- [Layer Stack] Fix wrong layer being active on opening document. In the case of single-layer documents, no layer was active, which caused crashes under some circumstances. (BUG:480718) (merge request, Dmitry Kazakov)
Features:
- Toolbars, Shortcuts Add Docker Box action that shows a docker in a temporary box, which can be added to a toolbar or assigned to shortcut. (merge request, Freya Lupen)
- Canvas Input Shortcuts Add new Tool Invocation action, "Activate with Other Color". This can be bound to a key+mousebutton, where holding those keys will cause, for instance, the Freehand Brush to paint with the background instead of foreground color. (merge request, ziplantil ..)
Bugfixes:
- Fill Tools Improve performance of fill tools, so that time taken depends on fill size and not image size. Filling also now starts on mouse-press and not mouse-release. (merge request, Deif Lou)
- Brush Engines Fix assert on selecting RGBA brushes in incorrect format. (BUG:484115) (commit, Agata Cacko)
- Transform Tool Fix free transform inverted rotation when flipped over in perspective. (merge request, Stuffins)
- Transform Tool Fix Vector Layer scale+shear transforms behaving incorrectly. (BUG:485689) (merge request, Stuffins)
- Selection Tools Fix issue making selections on color-labeled reference selections. (BUG:486419) (commit, Deif Lou)
- General Make Export's default file type changeable, in Configure->General->File Handling. (merge request, Ken Lo)
- Recorder Docker Reworked default recorder docker FFmpeg profiles. If canvas size changes during recording, the export profiles now keep aspect instead of stretching (BUG:429326). Issues with resize, result preview, and extend result are avoided (BUG:455006, BUG:450790, BUG:485515, BUG:485514). For MP4, detect whether openh264 or libx264 is present instead of using separate profiles. (merge request, Ralek Kolemios)
- Recorder Docker Make sure Recorder export duration label updates when FPS is changed. (merge request, Ken Lo)
- Comics Manager Docker Fix Comic export crop margins' right and bottom being swapped. (merge request, Bob Raskoph)
- Scripting Fix waitForDone() not waiting for transform mask update. (BUG:485053) (merge request, Agata Cacko)
Nightly build regression bugfixes:
- Recorder Docker Fix automatic timelapse recording checkbox. (BUG:482378) (merge request, Freya Lupen)
- Recorder Docker Fix recording stopping when another document was opened. (merge request, Freya Lupen)
These changes are made available for testing in the following Nightly builds:
- Stable "Krita Plus" (5.2.2+): Linux - Windows - macOS [not yet] - Android (arm64-v8a / arm32-v7a / x86_64)
- Unstable "Krita Next" (5.3.0-prealpha): Linux - Windows - macOS [unsigned currently] - Android (arm64-v8a / arm32-v7a / x86_64)
Krita is a free and open source project. Please consider supporting the project with donations or by buying training videos or the artbook! With your support, we can keep the core team working on Krita full-time.
Donate Buy somethingAbout QML Efficiency: Compilers, Language Server, and Type Annotations
My work in KDE for April 2024
Hello and sorry about the late post. I’ve been busy moving and other stuff that’s gotten in the way. I will also be idling the beginning of this month, so the next update may be shorter too.
Anyway, let’s get into the changes!
KensaI originally wanted to bring some of the “power-user” features from KSysGuard into the new System Monitor. I was rightfully turned down because they were hesitant of there being any use for most people and to prevent feature creep.
They suggested creating a seperate application instead. So Kensa, the detailed process viewer is born! It’s still mostly copy & pasted from old KSysGuard/libksysguard code, but updated for Qt6/KF6. And to make it clear, It’s very clearly modeled after the Window’s Process Explorer.
I have the general tab for viewing some basic information about the process. Said tab also includes an “Open With” so you can quickly open the executable in a hex viewer like Okteta.
The general tabThe memory maps tab shows what the process has mapped, mostly notably which shared libraries it’s currently using.
The memory maps tabThe open files tab makes it’s return as well, extremely useful.
The open files tabAnd one of my own design, an environment variables tab. In the future I want to add a “Strings” tab for quickly viewing the executable strings and the ones currently in memory.
The environment tabNote that Kensa is very early in development and not user-friendly. You currently have it give it a PID manually and lacks a process list.
TokodonFeature The window title now corresponds to the current page. This makes it easier to identify from a task bar, too. We know the title is duplicated inside the application as well (on desktop), but that’s Kirigami’s design decision. 24.05
Feature If your server doesn’t provide a human-readable error message, the network error is displayed instead. This is useful to see if the DNS lookup failed or some other network-related reason the server is inaccessible. 24.05
Feature Support for QtMultimedia has been added in situations where your system lacks or cannot use libmpv. This is preparatory work for a Windows version. 24.05
Feature In the same vein as the patch above, QtWebView is now optional and I included even more authentication fixes. Previously I enforced an in-app web view to facilitate authentication (compared to the external web browser method or auth code in previous versions.) This was only a stop-gap solution until I had more time to flesh out our authentication system, but now I feel much happier about it’s current state. 24.05
System MonitorBugfix Fix the column configuration dialog being shown too small on the Overview page. 6.0.4
Feature Add the About KDE page to the hamburger menu. 6.1
Bugfix Made sure cell tooltips shows up more reliably. 6.1
Feature Added a menu item to copy the current column’s text. This makes System Monitor just as usable as the old KSysGuard for me now, because I tend to copy the command line a lot. (And PIDs.) 6.1
RuqolaBugfix Use a better fitting icon for attaching files. The previous icon - when viewed at 16px - turned into something completely different. 2.1.2
PlasmaTubeFeature Added support for viewing a channel’s playlists. 24.05
Feature I also added a Craft blueprint for Android. Note that this is only preliminary and the Android version is nowhere near ready yet. I guess this could be used for a future Windows version too.
Feature I implemented more functionality in the PeerTube backend, so now it’s possible to log in and perform searching. Subscriptions work too, but I’m running into an issue where yt-dlp fails to pull certain videos. If you know anything about using yt-dlp with PeerTube, please let me know if there’s a workaround. 24.05
Feature Added a new feature to import/export OPML subscriptions. This only works for YouTube channels at the moment, PeerTube support TBA. 24.05
GwenviewFeature I changed the old save bar to use the standard KMessageWidget widget. This isn’t just for looks, it fixes a lot of odd visual bugs and removes a ton of cruft in the process. 24.08
The new Gwenview save bar. If it doesn’t look “out of place”, then my patch did it’s job! NeoChatBugfix Fixed the share dialog not appearing properly, and improve the keyboard navigation inside of it. 24.05
FrameworksBugfix Remove some redundant QML_ELEMENT declarations which in turn reduces runtime warnings. 6.1.0
Bugfix Two KMessageWidget improvements, by fixing handling of color palette changes and making the icon label vertically centered. This is for that Gwenview patch. 6.1.0
AndroidI once again sat down and fixed a ton of build and runtime issues for our Android applications, and started fixing some of the Qt 6.7 fallout. NeoChat and Tokodon build and run again, and spent some time ironing out their issues.
That’s all this month!