Skip to content

Tuesday, 17 June 2025

A new version of Plasma is here, and it feels even more like /home, as it becomes smoother, friendlier and more helpful.

Plasma 6.4 improves on nearly every front, with progress being made in accessibility, color rendering, tablet support, window management, and more.

As this is going to be a long read, let’s get right into it…

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

Highlights

More Flexible Tiling

Choose a different tile layout for each of your virtual desktops

New Spectacle

Spectacle gets an overhaul to make it even more awesome

KRunner Gets Color

Enter a color code in any notation and let KRunner show you what it looks like

Window Management

Plasma already offers Virtual Desktops to help organize your windows and activities; and customizable Tiles you can stick windows to so they don’t overlap, allowing you to see everything important at a glance.

Plasma 6.4 combines these features by letting you choose a different configuration of tiles on each virtual desktop.

The video below shows the power of this feature: you can tile two windows on your main virtual desktop, each taking up half of the screen. Then in another virtual desktop, you can place tile apps: two on either side, and the other two floating in the middle.

This new feature lets you create any other kind of layout combination that best works for you.

Accessibility

Accessibility is a top priority for KDE. This work is endless, but we make improvements in every new Plasma release!

The Wayland session in Plasma 6.4 brings some new accessibility features: you can now move the pointer using your keyboard’s number pad keys, or use a three-finger touchpad pinch gesture to zoom in or out.

In addition, a great deal of subtle but important work has been done throughout Plasma to improve keyboard navigation, screen reader usability, and text readability.

UI & Visual Design

Straddling the boundary between accessibility and visual design, another way of making Plasma easier to use is by increasing the contrast between the foreground and background elements.

In that respect, we’ve made our Breeze Dark theme a bit darker. This subtle change helps the text and user interface elements pop, making them easier to read and see.

Plasma 6.4 also darkens the background of the desktop or window when an authentication dialog shows up. This will help you locate and focus on the window asking for your password.

Plasma darkens the rest of the desktop when an authentication dialog pops up

The energy page in the Info Center and the entirety of KMenuEdit (the app you can use to edit apps’ presentation and grouping in the launcher menu) have all had their looks overhauled to make them cleaner, clearer, and easier to use.

Speaking of settings, there’s a brand-new Animations page in System Settings that groups all the settings for purely visual animated effects into one place, making it easier to find and configure them.

Plasma 6.4’s lock screen plays nicer with multiple-screen setups, too. The lock screen’s interactive elements will now only appear on the screen that has focus or the pointer on it. And when it’s time to input your password, the text entered into one password field is synced across all others, avoiding any errors that may cause passwords to be half-entered in a field on one screen, and then the rest in a different one on another screen.

Notifications

Notifications are how Plasma communicates what’s going on within your system.

The file transfer notification now shows a speed graph, giving you a more visual idea of how fast the transfer is going, and how long it will take to complete.

When you get notified that updates are available, you can now install them directly from the notification.

When any applications are in full screen mode — like when you’re playing a game, working on a critical project, or watching a video — Plasma will enter Do Not Disturb mode and only show urgent notifications. When you exit full screen mode, you’ll see a summary of any notifications you missed, and they’ll be right there in the System Tray for your perusal.

Have you ever found yourself talking during an online meeting, and no one can hear you because you forgot to unmute your microphone? No more! Now when an app tries to access the microphone and finds it muted, a notification will pop up.

Finally, notifications with interactive buttons will still show them in the history view.

Widgets

Widgets are the building blocks of Plasma: small programs that carry out specific tasks on your Plasma desktop. They can launch programs, track the weather, set alarms, or tell you when you have updates.

Among many other improvements, a new feature in the Application Launcher widget will place a green New! tag next to newly installed apps, so you can easily find where something you just installed lives in the menu. The tag disappears after 3 days, or after you run the app for the first time.

Plasma tags new stuff you have recently installed

The Media Player widget now allows you slow down or speed up whatever audio or video is currently playing (for players that support this feature).

And the Disks & Devices widget used to access internal and removable disks now checks and even offers to repair your disks if it finds errors in them.

The Disk and Devices widget offers to try and repair a damaged storage device.

Plasma 6.4 features many other smaller changes to the included widgets as well; explore them to see everything that’s new!

For Digital Artists

Plasma continues the push to improve support for devices used by digital artists and graphic designers.

In Plasma 6.4, we’ve made configuring the buttons on your stylus much more intuitive:

Plasma makes it easy to configure your stylus buttons

If you make a mistake while calibrating your tablet, Plasma offers an easy way to reset everything and start over.

And when you aren’t making art, you can still continue using your tablet, since Plasma now supports relative mode which makes the stylus behave more like a regular mouse.

Color Management

For those looking to adjust the colors for gaming or watching movies, the Display and Monitor page in System Settings comes with a brand new HDR calibration wizard in Plasma 6.4.

Plasma 6.4 can also do Extended Dynamic Range (a different kind of HDR) on screens that support it, and gives you a tool to limit color depth — again for screens that support that feature.

Finally, Plasma now supports the P010 video color format, improving power efficiency with HDR video content.

In a nutshell, Plasma helps you make the best use of your fancy screen hardware!

KRunner

KRunner is Plasma’s powerful built-in assistant. If you need to find something, define something, calculate something, or convert something, press Alt + Space and ask KRunner.

In Plasma 6.4, KRunner can help you visualize colors. Just enter the color in hex notation, as a hexadecimal number, or its CSS/SVG name (like “MintCream”, “PeachPuff”, or “PapayaWhip” — yes, those are all names of colors and not fancy desserts). Then KRunner will show you how that color looks and its equivalent name/code in many other notations.

Screenshots & Screen Recording

Spectacle, the built-in app for taking screenshots and screen recordings, looks very different in Plasma 6.4 — for the better!

Press the PrtSc key and Spectacle opens directly in screenshot mode: drag a box to select a region of the screen, or press Enter immediately and Spectacle will take a shot of the whole screen.

You can also start annotating right away, by drawing arrows, blurring sections, adding explanatory text, and more.

Finally, quality has been massively improved for screen recordings using the WebM format or taken on screens using fractional scaling.

System Monitoring

Plasma 6.4’s System Monitor helps you stay on top of how your system is working in even more ways.

First, the Overview and History pages have been overhauled to show more information and be more generally useful:

GPU usage graph on the history page

And on those pages, you can find usage monitoring for Intel GPUs. In addition, it can even show the GPU usage on a per-process basis for Intel and AMD GPUs.

There’s also a new “Background Services” group on the Applications page, giving you the complete picture of the system resources being used by things that aren’t apps.

In addition, the built-in free space monitor now checks for free space on all non-cache partitions of all disks, not just a disk’s Root and Home partitions.

And finally, a new Sensors page in Info Center shows raw sensor data for things like the temperature of your CPUs and GPUs.

The sensors page shows raw data

Miscellaneous

When dragging files to another location on the same disk using Dolphin or the Plasma desktop, you can now have the system always move the files, rather than being asked what to do every time.

The Plasma browser integration feature that allows you to control the playback of media in your browser from the desktop (among many other things) now supports the Flatpak versions of Firefox and Chromium variants like LibreWolf and Ungoogled Chromium.

And finally, for the more technically-minded, Plasma 6.4 adds support for a large number of Wayland protocols, including the “Relative tablet dials”, “idle notify“, “color representation”, “FIFO”, “toplevel tag”, and “single pixel buffer” protocols. This will help apps integrate better into Plasma’s Wayland session.

…and there’s much more. To see the full list of changes, check out the complete changelog for Plasma 6.4.

Sunday, 15 June 2025

This is the release schedule the release team agreed on

https://community.kde.org/Schedules/KDE_Gear_25.08_Schedule

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

🎉 New Clazy Release: Stability Boost & New Checks!

We’re excited to roll out a new Clazy release packed with bug fixes, a new check, and improvements to existing checks. This release included 34 commits from 5 contributors.


🔍 New Features & Improvements

  • New Check: readlock-detaching
    Detects unsafe and likely unwanted detachment of member-containers while holding a read lock. For example, when calling .first() on the mutable member instead of .constFirst()

  • Expanded Support for Detaching Checks
    Additional methods now covered when checking for detaching temporary or member lists/maps. This includes reverse iterators on many Qt containers and keyValueBegin/keyValueEnd on QMap. All those methods have const counterparts that allow you to avoid detaching.

  • Internal Changes With this release, Clang 19 or later is a required dependency. All older versions needed compatibility logic and were not thouroughly tested on CI. In case you are on an older Version of a Debian based distro, consider using https://apt.llvm.org/ and compile Clazy from source ;)


🐞 Bug Fixes

  • install-event-filter: Fixed crash when no child exists at the given depth.
    BUG: 464372

  • fully-qualified-moc-types: Now properly evaluates enum and enum class types.
    BUG: 423780

  • qstring-comparison-to-implicit-char: Fixed and edgecase where assumptions about function definition were fragile.
    BUG: 502458

  • fully-qualified-moc-types: Now evaluates complex signal expressions like std::bitset<int(8)> without crashing. #28

  • qvariant-template-instantiation: Crash fixed for certain template patterns when using pointer types.


Also, thanks to Christoph Grüninger, Johnny Jazeix, Marcel Schneider and Andrey Rodionov for contributing to this release!

From Refactor to Functioning Plugin

Hi again! Week two was all about turning last week’s refactored EteSync resource and newly separated configuration plugin into a fully working, stable component. While the initial plugin structure was in place, this week focused on making the pieces actually work together — and debugging some tricky issues that emerged during testing.


Removing QtWidgets Dependencies with KNotification

While testing, I discovered that the original EteSync resource code used QDialog and KMessageBox directly for showing error messages or status updates. These widget-based UI elements are too heavy for a background resource and conflict with the goal of keeping the resource lightweight and GUI-free.

To address this, I replaced them with a much cleaner approach: creating KNotification instances directly. This allows the resource to send system notifications (like “EteSync sync successful” or error messages) through the desktop’s notification system, without relying on any QtWidgets. As a result, the resource is now fully compatible with non-GUI environments and no longer needs to link against the QtWidgets library.


Refactoring Settings Management for Plugin Compatibility

Another major change this week involved how the resource handles its settings.

Previously, the configuration was implemented as a singleton, meaning both the resource and its configuration plugin were sharing a single instance of the settings object. This worked in the old, tightly-coupled model, but caused conflicts in the new plugin-based architecture.

To fix this, I updated the settings.kcfgc file to set singleton=false. This change allows the resource and the configuration plugin to maintain separate instances of the settings object, avoiding interference. I also updated both etesyncclientstate.cpp and etesyncresource.cpp to properly manage their respective configurations.


Solving the “Zombie Window” Issue

One final issue emerged after separating the UI: the configuration wizard now appears in a separate window from the main Akonadi configuration dialog. When the wizard is completed and closes, the original configuration window — now empty and disconnected — remains open.

Clicking buttons on this leftover window causes terminal errors, since it no longer communicates with a valid process. This results in a confusing and potentially buggy experience for users.


What’s Next?

My next task is to figure out a clean way to close the original parent window when the wizard completes, ensuring a smooth and error-free configuration flow. In addition to that, I’ll begin testing the full integration between the EteSync resource and its configuration plugin to ensure everything works correctly — from saving and applying settings to triggering synchronization. This will help verify that the decoupling is both functionally solid and user-friendly.

Saturday, 14 June 2025

I had mentioned a number of new Transitous features in a previous post. As those largely depend on the corresponding data being available, here’s an overview of how you can help to find, add and improve that data.

Transitous

Transitous logo

Transitous is a community-run public transport routing service build on top of the MOTIS routing engine and thousands of datasets from all over the world. Transitous backs public transport related features in applications like GNOME Maps, KDE Itinerary or Träwelling.

Just like OpenStreetMap this needs people on the ground identifying issues or gaps in the data, figuring out where things go wrong and who to talk to at the local operators to get things fixed.

The first step to help is just comparing data you get from Transitous with the reality around you, ie. does the public transport schedule match what’s actually happening, and are all relevant services included?

If there’s things missing or outdated, a list of the types of datasets consumed by Transitous, and how to inspect and add those, follows below.

The central part in this are a bunch of JSON files in the Transitous Git repository, which define all the datasets to be used as well as a few parameters and metadata for those. Once a day those are then retrieved, validated, filtered and post-processed for importing into MOTIS by Transitous’ import pipeline.

Public transport schedules

The backbone of public transport routing is static GTFS schedule data, that’s the bare minimum for Transitous to work in a region. GTFS feeds are essentially zip files containing a set of CSV tables, making them relatively easy to inspect, although especially nationwide aggregated feeds can get rather large.

GTFS feeds ideally contain data for several months into the future, but can nevertheless receive regular updates. Transitous checks for updates daily, so for this to work practically we also need a stable URL for them (that might seem obvious to you, but apparently not to all feed providers…).

We currently have more than 1800 of those, from 55 countries. The Transitous map view gives you an impression how well an area is covered, each of the colored markers there is an (estimated) current position of a public transport vehicle.

Map view with train and ferry positions densely covering all of South Korea.
Recently added coverage in South Korea.

If your area is incomplete or not covered at all, the hardest part to change that is probably finding the corresponding GTFS feeds. There’s a few places worth looking at:

  • The public transport operators themselves, they might just publish data on their website.
  • Regional or national open data portals, especially in countries with regulation requiring public transport data to be published. In the EU, those are called “National Access Point” (NAP).
  • GTFS feed registries such as Mobility Database and Transitland.
  • Google Maps having public transport data in your region is a strong indicator whether GTFS feeds even exist, as they use those as well.

Adding a GTFS feed to Transitous is then usually just a matter of a few lines of JSON pointing to the feed. In rare cases it might require a bit more automation work, such as in France where there’s hundreds of small feeds to manage.

And every feed is welcome, no matter whether it’s a nation-wide railway operator or a single community-run bus to help people in a rural area, as long as it’s for a service open to the general public.

Realtime data

So far this is all static though. For properly dealing with delay, disruptions and all kinds of other unplanned and short-notice service changes we also need GTFS Realtime (RT) feeds. Those are polled once a minute for updates.

GTFS-RT feeds come in three different flavors:

  • Trip updates, that is realtime schedule changes like delays, cancellations, etc.
  • Service alerts, that is textual descriptions of disruptions beyond a specific connection, such as upcoming construction work.
  • Vehicle positions, that is geographic coordinates of the current position of trains or busses.

MOTIS can handle the first two so far. Support for vehicle positions is also on the wishlist, and not just for showing current positions on a map, vehicle positions could also be used to interpolate trip updates when those are not available.

Adding GTFS-RT feeds to Transitous is very similar to adding static GTFS feeds, however GTFS-RT feeds usually only work in combination with their respective static equivalent. Combining a smaller realtime feed of a single operator with a nationwide aggregated static feed will thus usually not work out of the box. There’s ways to exclude certain operators from a larger static feed though, so with a bit of puzzle work this can usually be made to work as well.

GTFS-RT feeds use Protocol Buffers, but there’s nevertheless simple way to look at their content:

curl https://the.feed.url | protoc gtfs-realtime.proto --decode=transit_realtime.FeedMessage | less

The Protocol Buffers schema file needed for this can be downloaded here.

To see the realtime coverage available in Transitous, you can toggle the color coding of vehicles on its map view in the upper right corner. A green/yellow/red gradient shows the amount of delay for the corresponding trip, while gray vehicles have no realtime information.

Map view with color-coded vehicle positions indicating delays in Amsterdam, Netherlands.
Color-coded realtime data in Amsterdam, Netherlands.

Shared mobility data

Transitous doesn’t just handle scheduled public transport though, but also vehicle sharing, which can be particularly interesting for the first and last mile of a trip.

The data for this is provided by GBFS feeds. This includes information about the type of vehicles (bikes, cargo bikes, kickscooters, mopeds, cars, etc) and their method of propulsion (human powered, electric, etc), where to pick them up and where to return them (same location as pickup, designated docks of the provider, free floating within a specific area, etc) and most importantly where vehicles are currently available.

Adding GBFS feeds to Transitous is also just a matter of a few lines of JSON. We currently don’t have a built-in UI to see the results, showing all available vehicles on the map is certainly on the wishlist though. GBFS is relatively easy to inspect manually, the entry point is a small JSON manifest that contains links to JSON files with the actual information, generally split up by how often certain aspects are expected to change.

Same as for GTFS feeds, any service accessible to the general public is welcome here, whether it’s a small community run OpenBike instance or a provider with hundreds of vehicles.

On-demand services

Somewhere between scheduled transport and shared mobility are on-demand services. That is, services that require some form or booking beforehand and might be anything from an on-demand bus that still follows a somewhat fixed route with pre-defined stops to something closer to a taxi with a more flexible route that picks up or drops off passengers anywhere in a given area.

These services are often used in times and/or areas with fewer demand, thus making them often the only mobility option then/there. That makes it all the more important to have those covered as well.

Modeling on-demand services is challenging, given the variety on how those services work and their inherently very dynamic nature. There’s the relatively new GTFS-Flex standard covering this, which MOTIS supports since v2.0.66.

GTFS-Flex feeds might be included in static GTFS data or provided separately, and adding them to Transitous works again by just a few lines of JSON.

There’s one caveat though, the validator we use in pre-processing, gtfsclean, doesn’t support GTFS-Flex yet, so those feeds are currently imported without any sanity checking or validation. Therefore we need to be extra careful with adding such feeds until that is fixed. If you know a bit of Go and want to help with that, get in touch!

For GTFS-Flex data there’s some diagnostic visualization in the map view in debug mode, when zooming in far enough.

Map view with colored areas indicating on-demand service areas around Lausanne, Switzerland.
Diagnostic view of on-demand service areas in Switzerland.

OSM

A crucial dataset for all road-based and in-building routing is OpenStreetMap. While that is generally very comprehensive and up-to-date, there’s one aspect that more often needs fixes, the floor level separation. That’s not visible in most OSM-based maps and thus is easy to miss while mapping. For Transitous this is particularly important for in-building routing in train stations.

When zoomed in enough the map view of Transitous will offer you a floor level selector at the lower right. That can give you a first indication if elements are misplaced (showing up on the wrong level) or not assigned to a floor level at all (showing up on all levels). For reviewing smaller elements indoor= can also be useful, and for fixing things JOSM has a built-in level selector on the top left.

Transitous map view with floor level selector on the lower right, showing the ground floor (passenger) level of a station with some railway tracks crossing that should be one level up.
Railway tracks running through the passenger level of Bremen central station (upper right).

In most cases adding or fixing the level tag is all that’s needed. Elements allowing to move between levels (stairs, ramps, elevators, escalators, etc) are especially important for routing.

And more

All of the above is just the current state, there’s much more to look at though, such as:

  • Unused information in the existing datasets, such as fare information or the remaining range of sharing vehicles.
  • Expanding the GTFS standard to cover things currently not modeled. Starting from relatively simple things like car ferries or car transport trains to highly detailed information about a bus or train interior with regards to accessibility.
  • Convert other data formats to GTFS, such as NeTEx, SIRI or SSIM.
  • Generate GTFS-RT trip updates from realtime vehicle position data.
  • Extend the import pipeline to augment and normalize GTFS feeds, e.g. by injecting line colors and logos from Wikidata or accessibility information and missing paths from OSM, or to normalize train names.
  • Considering elevation data for street routing. MOTIS has initial support for this meanwhile, but even the relatively coarse global 30m SRTM grid data would require an extra 50-100GB of (fast) storage, with quadratic growth with smaller grid sizes (1m or 2m grids are available in a number of regions).

In other words, plenty of rabbit holes to explore, no matter whether you are into code, data, math, trains, busses, IT operations or lobby work :)

You can help!

Check around you whether information from Transitous matches the reality on the ground, join the Transitous Matrix channel, join the Transitous Hack Weekend in a few weeks and join the Open Transport Community Conference in October!

Welcome to a new issue of This Week in Plasma! Every week we cover the highlights of what’s happening in the world of KDE Plasma and its associated apps like Discover, System Monitor, and more.

This week we finished polishing up Plasma 6.4 for release, and started to turn our heads to bigger topics — notably including Wayland protocols and accessibility!

Notable New Features

Plasma 6.5.0

Implemented support for an experimental version of the Wayland picture-in-picture protocol that allows apps also implementing it (such as Firefox) to finally display proper PiP windows in advance of the upstream version of the protocol eventually being merged. (Vlad Zahorodnii, link)

Notable UI Improvements

Plasma 6.3.6

Reduced the rate at which the “visual bell” accessibility feature can flash the screen so there’s no way it can cause seizures. (Nicolas Fella, link)

Plasma 6.4.0

Made the Kicker Application Menu widget able to horizontally scroll for searches that return results from many KRunner plugins, so you have the opportunity to see them all. (Christoph Wolk, link)

Plasma 6.4.1

Improved text contrast for labels used in subtitles or other secondary roles throughout Plasma. (Nate Graham, link 1, link 2, link 3, link 4, link 5, link 6, and link 7)

Brightness widget showing readable text

Discover’s search field now trims all whitespace, to prevent errors when copy-pasting text that ends in a space or something. (Nate Graham, link)

Plasma 6.5.0

In System Settings, moved the Invert and Zoom settings into the Accessibility page, which is a more sensible place for them than the Desktop Effects page was. (Oliver Beard, link 1, link 2, and link 3)

System Settings Accessibility settings window showing “Zoom & Magnifier” page

Merged KWin’s Background Contrast effect into the Blur effect, since neither makes sense to turn on or off without the other. (Marco Martin, link 1 and link 2)

On Wayland, virtual desktops can now be re-ordered from the Pager widget, and re-ordering them in the Overview effect’s grid view now re-orders them in the Pager widget too. (Marco Martin and Vlad Zahorodnii, link 1, link 2, and link 3)

Spectacle now makes it clearer that you can end a screen recording by pressing the same keyboard shortcut you used to start it, by telling you this in the notification and also by using clearer names for the global shortcuts. (Noah Davis, link)

The Breeze application style’s animated effects for clicking checkboxes and radio buttons now work in QtQuick-based apps and System Settings pages as well. (Kai Uwe Broulik, link)

The Disks & Devices, Networks, and Bluetooth widgets now use standard-style section headers. (Nate Graham, link 1, link 2, and link 3)

Small Sticky Note widget with tight margins around the text
Context menu for Stocky Note widget showing color options

Improved the searching UX in the Emoji Selector app: now the search field is always visible, and doing a search will always search through the full set of all emojis if there aren’t any matches on the current page. (Nate Graham, link 1, link 2)

The Display Configuration widget and OSD no longer thinks your primary screen is always connected to a laptop; now it uses more generic terminology. (Nate Graham, link)

Notable Bug Fixes

Plasma 6.3.6

Using a non-default font or font size no longer causes the selection rectangles for files or folders on the desktop to be displayed at the wrong size and cause subtle layout and positioning glitches. (Nate Graham, link)

Plasma 6.4.0

Fixed several more cases where putting a widget on a huge panel could cause Plasma to freeze. (Christoph Wolk, link 1, link 2, link 3, link 4, link 5, link 6, and link 7)

Fixed a case where Discover could crash while offering you the replacement for an end-of-support Flatpak app. (Akseli Lahtinen, link)

Fixed a bug that caused the Open/Save dialogs invoked from Flatpak-based browsers (or when forcing the use of portal-based dialogs) to sometimes not allow the preview pane to be opened. (David Redondo, link)

Fixed a weird bug that could cause a standalone Folder View widget on the desktop to become visually glitchy when you drag files or folders to it from Dolphin. (Akseli Lahtinen, link)

Fixed a bug that broke printing at the correct sizes in Flatpak-packaged GTK apps. (David Redondo, link)

Installing or uninstalling an app no longer unexpectedly clears the search field and results view in Kicker or Kickoff if they happened to be visible at the moment the transaction completed. (Christoph Wolk, link)

Frameworks 6.15

Fixed a cause of crashes in apps and Plasma system services using System Monitor charts. (Arjen Hiemstra, link)

Frameworks 6.16

Fixed an intermittent source of crashes in System Monitor when switching process views. (Arjen Hiemstra, link)

Fixed a weird issue that could cause Open/ Save dialogs to close when hovering over certain files. (David Redondo, link)

KDE Gear 25.04.3

Fixed an issue that could cause the thumbnailer to crash on X11 when using certain widget styles. (Nicolas Fella, link)

Other bug information of note:

Notable in Performance & Technical

Plasma 6.4.0

Improved startup speed for System Monitor by loading the column configuration dialog’s content on-demand, rather than at launch. (David Edmundson, link)

Made sure that the Environment Canada data source for weather reports keeps working, since the provider is changing their data format soon and we needed to adapt. (Ismael Asensio, link)

Frameworks 6.15

Improved startup speed for System Monitor by loading the tree view indicator arrows on demand, rather than at launch. (David Edmundson, link)

How You Can Help

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

You can help KDE by becoming an active community member and getting involved somehow. Each contributor makes a huge difference in KDE — you are not a number or a cog in a machine!

You don’t have to be a programmer, either. Many other opportunities exist:

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

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

Friday, 13 June 2025

Let’s go for my web review for the week 2025-24.


Google’s nightmare: How a search spinoff could remake the web

Tags: tech, web, google, search, monopoly, economics

There’s clearly something tempting about a web index somehow separated from Google. It always felt like a natural monopoly and so a type of public service. Now that push arrives a tad late so the impacts are unclear. Overall I still think this would be a net positive if there are more web search companies built onto such an index.

https://arstechnica.com/google/2025/06/googles-nightmare-how-a-search-spin-off-could-remake-the-web/


How much EU is in DNS4EU?

Tags: tech, dns, privacy

Early days for that service. Let’s hope it improves infrastructure wise.

https://techlog.jenslink.net/posts/dns4eu/


Trusting your own judgement on ‘AI’ is a huge risk

Tags: tech, ai, machine-learning, gpt, copilot, programming, cognition, scam, criticism

An excellent piece which explains well why the current “debate” is rotten to the core. There’s no good way to engage with those tools without reinforcing some biases. Once the hype cycle is over we have a chance at proper research on the impacts… unfortunately it’s not happening now when it’s badly needed.

https://www.baldurbjarnason.com/2025/trusting-your-own-judgement-on-ai/


Avoiding generative models is the rational and responsible thing to do – follow-up to “Trusting your own judgement on ‘AI…’”

Tags: tech, ai, machine-learning, gpt, copilot, programming, cognition, scam, criticism

A nice followup which acts as a TL;DR for the previous piece which was fairly long indeed.

https://www.baldurbjarnason.com/2025/followup-on-trusting-your-own-judgement/


Poison everywhere: No output from your MCP server is safe

Tags: tech, ai, machine-learning, gpt, copilot, security

OK, this is definitely concerning for the use of tools with so called coding agents. The trust model is really not appropriate at this stage and that opens the door to a wide range of attacks.

https://www.cyberark.com/resources/threat-research-blog/poison-everywhere-no-output-from-your-mcp-server-is-safe


How we decreased GitLab repo backup times from 48 hours to 41 minutes

Tags: tech, gitlab, git, complexity, profiling, optimization

Nice simple fix in Git but with a large impact on backups. A good proof that profiling and keeping an eye on algorithmic complexity can go a long way in improving software.

https://about.gitlab.com/blog/2025/06/05/how-we-decreased-gitlab-repo-backup-times-from-48-hours-to-41-minutes/


Sandboxing Adoption in Open Source Ecosystems

Tags: tech, unix, system, sandbox

Interesting paper about the use of sandboxing in several ecosystems. It’s not used much directly but there are clear differences in term of complexity to set them up.

https://arxiv.org/abs/2405.06447


Curate your shell history

Tags: tech, tools, shell

Interesting thinking and trick. We clearly pile up too much noise in our shell history.

https://esham.io/2025/05/shell-history


magic namerefs

Tags: tech, shell, scripting

Didn’t know bash got this feature now. I’m torn between “it looks so cool” and “we’ll never see the end of debugging issues which use this”.

https://gist.github.com/izabera/e4717562e20eb6cfb6e05f8019883efb


Too Many Open Files

Tags: tech, unix, system, filesystem

Need to play with file descriptors on Unix systems? This is a fun and gentle introduction.

https://mattrighetti.com/2025/06/04/too-many-files-open


Is Rust faster than C?

Tags: tech, rust, c, performance

Or why this kind of question never have an absolute answer.

https://steveklabnik.com/writing/is-rust-faster-than-c/


Patterns for Modeling Overlapping Variant Data in Rust

Tags: tech, programming, rust, type-systems, data

Interesting selection of options to model data structure with some variability in Rust.

https://mcmah309.github.io/posts/patterns-for-modeling-overlapping-variant-data-in-rust/


GPU Memory Consistency: Specifications, Testing, and Opportunities for Performance Tooling

Tags: tech, gpu, memory, performance

The memory models for GPU programming are complex. This isn’t easy to squeeze more performance without introducing subtle bugs.

https://www.sigarch.org/gpu-memory-consistency-specifications-testing-and-opportunities-for-performance-tooling/


The Concurrency Trap: How An Atomic Counter Stalled A Pipeline

Tags: tech, multithreading, caching, cpu, rust

A good example of how you can get bitten by cache coherency algorithms in the CPU.

https://www.conviva.com/platform/the-concurrency-trap-how-an-atomic-counter-stalled-a-pipeline/


Malleable software: Restoring user agency in a world of locked-down apps

Tags: tech, programming, ux, design

A long essay but contains a lot of interesting insights. There’s definitely more to do design wise to produce software people can really bend to their needs.

https://www.inkandswitch.com/essay/malleable-software/


Write Unit Tests, Don’t Waste Our Money!

Tags: tech, tests, business

This is one way to frame it I guess. Code is indeed an investment, tests are here to protect it.

https://www.yegor256.com/2025/06/08/pull-request-without-test.html


Test Contra-variance

Tags: tech, tdd, tests, design

A good reminder of the reasons why the organization of your tests shouldn’t necessarily match the organization of the application code. You don’t want fragile tests, do you?

https://blog.cleancoder.com/uncle-bob/2017/10/03/TestContravariance.html


Pinning Tests

Tags: tech, legacy, tests

I’m using the term regularly when dealing with legacy code. Finally remembered when I saw it first.

https://wiki.c2.com/?PinningTests


Analyzing Metastable Failures in Distributed Systems

Tags: tech, failure, safety, distributed

Interesting paper about metastable failures and novel approaches to try to analyse them. It’s early days but we would need to get toward better prevention.

https://muratbuffalo.blogspot.com/2025/06/analyzing-metastable-failures-in.html?m=1


How I structure my apps (in Rust and other languages)

Tags: tech, architecture, design, rust

Of course, don’t take everything at face value here. Still this gives good ideas on how to combine some design and architectural ideas together. The whole thing is not really Rust specific.

https://dpc.pw/posts/how-i-structure-my-apps-in-rust-and-other-languages


ADRs

Tags: tech, architecture

Nice little post helping advocate for the use of Architectural Decision Records.

https://www.beflagrant.com/blog/adrs


Beck Design Rules

Tags: tech, xp, design

Nice and short explanation on the design rules Kent Beck had in mind when devising XP. It still generally applies in my opinion.

https://martinfowler.com/bliki/BeckDesignRules.html


Tech debt can’t be solved as a roadmap item. It needs to be part of your daily routine

Tags: tech, quality, technical-debt, project-management

Definitely this, too often I see projects treating the technical debt as one-off large tasks. Really it’s something you should deal with bite sized and over time.

https://software.rajivprab.com/2025/05/10/tech-debt-cant-be-solved-as-a-roadmap-item/


The Real Cost of Change

Tags: tech, agile, technical-debt, planning, risk

It will fluctuate with time so it needs to be kept in check. Indeed, some things are commodities so can be decided upfront, but the rest of the functional envelope will change over time. Also make sure you drive the project by risks to have early feedback where it matters most.

https://lizkeogh.com/2012/01/30/the-real-cost-of-change/


Blameless PostMortems and a Just Culture

Tags: tech, failure, culture, management

Mistakes happen, but shrugging them off with blaming people or pushing them to be more careful is counter-productive. Instead, you want to find the organizational issues which made them possible in the first place.

https://www.etsy.com/codeascraft/blameless-postmortems/


Building An Impact Brewery: A Toolkit for R&D Leaders to Drive Impact

Tags: tech, research, leadership, tech-lead, organization

Not fond of the metaphor used here which leads to quite some noise. Still, this article contains interesting ideas to try to push R&D initiatives forward. Definitely needed to improve any kind of organisation.

https://medium.com/panorays-r-d-blog/building-an-impact-brewery-a-toolkit-for-r-d-leaders-to-drive-impact-f2336d51109e


Elephant Carpaccio facilitation guide

Tags: tech, agile, tests, tdd, teaching

This is one of those workshops I like to do with teams from time to time. Didn’t do it for a while. I wish this resource was on a safer space than google docs.

https://docs.google.com/document/d/1TCuuu-8Mm14oxsOnlk8DqfZAA1cvtYu9WGv67Yj_sSk/pub


5 People Who Destroy Your Culture

Tags: management

This kind of articles are always a bit caricatural. Still there is some good advice in there. Keep an eye open for the harmful behaviors.

https://blog.eladgil.com/p/5-people-who-destroy-your-culture



Bye for now!

Improved Black Box Testing with Cucumber-CPP

Learn how to use Cucumber-CPP and Gherkin to implement better black box tests for a C++ library. We developed a case-study based on Qt OPC UA.

Continue reading Improved Black Box Testing with Cucumber-CPP at basysKom GmbH.

Friday, 13 June 2025

KDE today announces the release of KDE Frameworks 6.15.0.

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
  • Add tags file to documentation. Commit.
  • Remove leftover doxygen file. Commit.
  • Add landing page for QDoc. Commit.
  • Port API documentation to QDoc syntax. Commit.
Baloo
  • Add tags file to documentation. Commit.
  • StorageDevices: Query Solid for StorageAccess devices. Commit.
  • Add landing page for QDoc. Commit.
  • It compiles fine without kf_6_13 deprecated methods. Commit.
  • Port API documentation to QDoc syntax. Commit.
Bluez Qt
  • Add tags file to documentation. Commit.
  • Documentation fixes. Commit.
  • Port API documentation to QDoc syntax. Commit.
  • Port API documentation to QDoc syntax. Commit.
Breeze Icons
  • Removeinvisible rectangles. Commit. Fixes bug #504741
  • Move folder-add icons to Actions category. Commit.
  • Add Python 2 icon. Commit.
  • Add 64px colorful printer-warning icon. Commit.
  • Remove test for some icons. Commit.
  • Correct 22px audio-input-microphone being off-center. Commit. Fixes bug #503930
  • Ensure all links survive the generations. Commit.
Extra CMake Modules
  • Fix LOCALSTATEDIR when installing to /usr. Commit. Fixes bug #505090
  • [ECMGenerateQDoc] Fix locations for generated HTML files. Commit.
  • ECMGeneratePythonBindings: Check if the build python module is installed. Commit.
  • Tone done warning about existing .clang-format file. Commit.
  • [ECMGenerateQDoc] Use combined output dir for all targets. Commit.
  • Add timestamp to filenames of APKs built on CI. Commit.
  • ECMGeneratePythonBindings: remove another deprecation macro since pyside/shiboken uses deprecated code. Commit.
  • Kde-modules/clang-format.cmake - add support for Json files. Commit. Fixes bug #503056
  • [ECMGenerateQDoc] Handle qhelpgenerator tool not being found. Commit.
  • [ECMGenerateQDoc] Handle qdoc tool not being found. Commit.
Framework Integration
  • Add tags file to documentation. Commit.
  • Add landing page for QDoc. Commit.
  • It compiles fine without kf_6_13 deprecated methods. Commit.
  • Port API documentation to QDoc syntax. Commit.
KArchive
  • K7zip: Fix infinite loop on malformed file. Commit.
  • K7zip: Fix crash on malformed file. Commit.
  • Add tags file to documentation. Commit.
  • Reuse KCompressionDevice constructor. Commit.
  • Turn assert into warning. Commit.
  • Add landing page for QDoc. Commit.
  • Add LZIP compression support to KArchive. Commit. Fixes bug #447421
  • Kzip: Fix crash on malformed files. Commit.
  • Port API documentation to QDoc syntax. Commit.
KAuth
  • It compiles fine without kf 6.14 deprecated methods. Commit.
  • Add tags file to documentation. Commit.
  • Add landing page for QDoc. Commit.
  • It compiles fine without kf_6_13 deprecated methods. Commit.
  • Port API documentation to QDoc syntax. Commit.
KBookmarks
  • Add tags file to documentation. Commit.
  • Add landing page for QDoc. Commit.
  • It compiles fine without kf_6_13 deprecated methods. Commit.
  • Port API documentation to QDoc syntax. Commit.
KCalendarCore
  • Fix occurrence-iterator test on FreeBSD. Commit.
  • Fix times-in-interval test on FreeBSD. Commit.
  • Fix serialization test on FreeBSD. Commit.
  • Repair test on supported FreeBSD versions. Commit.
  • Icalformat_p.cpp - use static QString::number when converting geo vals. Commit.
  • Clean krazy configuration and in-source directives. Commit.
  • Porting to libical 4.0 beta. Commit.
  • WIP - porting to libical 4.0 alpha. Commit.
  • Recurrence.cpp - in shiftTimes(), ensure the period is valid. Commit.
  • Fix compile warnings about unused variables. Commit.
  • Add tags file to documentation. Commit.
  • Give calendar plugin time to populate. Commit.
  • Destroy calendar plugin while QCoreApplication still exists. Commit.
  • Add landing page for QDoc. Commit.
  • Port API documentation to QDoc syntax. Commit.
KCMUtils
  • Fix documentation syntax. Commit.
  • It compiles fine without kf 6.14 deprecated methods. Commit.
  • Fix typo. Commit.
  • Add tags file to documentation. Commit.
  • Kcmoduleqml: simplify and improve focus handling. Commit.
  • Remove leftover doxygen file. Commit.
  • Add missing qhp projects. Commit.
  • Add landing page for QDoc. Commit.
  • It compiles fine without kf_6_13 deprecated methods. Commit.
  • Add missing qdoc dependencies. Commit.
  • Port API documentation to QDoc syntax. Commit.
KCodecs
  • Add tags file to documentation. Commit.
  • Add landing page for QDoc. Commit.
  • Port API documentation to QDoc syntax. Commit.
KColorScheme
  • Add tags file to documentation. Commit.
  • Add missing qhp projects. Commit.
  • Add landing page for QDoc. Commit.
  • It compiles fine without kf_6_13 deprecated methods. Commit.
  • Add license headers for documentation files. Commit.
  • Port API documentation to QDoc syntax. Commit.
KCompletion
  • It compiles fine without kf 6.14 deprecated methods. Commit.
  • Add tags file to documentation. Commit.
  • Add missing qhp project. Commit.
  • Add landing page for QDoc. Commit.
  • It compiles fine without kf_6_13 deprecated methods. Commit.
  • Port API documentation to QDoc syntax. Commit.
KConfig
  • Add test for Q_PROPERTY with defaultValueGetters. Commit.
  • Kconfig_compiler: generate Q_PROPERTY for defaultValueGetter too. Commit.
  • Add tags file to documentation. Commit.
  • Add missing qhp projects. Commit.
  • Add landing page for QDoc. Commit.
  • Kconfigini: Fix assert where start is larger than currentGroup length. Commit.
  • Revert doc comment changes to kconfig_compiler. Commit.
  • Revert doc changes to test files. Commit.
  • Port API documentation to QDoc syntax. Commit.
KConfigWidgets
  • It compiles fine without kf 6.14 deprecated methods. Commit.
  • Add tags file to documentation. Commit.
  • Add missing qhp project. Commit.
  • Add landing page for QDoc. Commit.
  • Fix QDoc issues. Commit.
  • It compiles fine without kf_6_13 deprecated methods. Commit.
  • Port API documentation to QDoc syntax. Commit.
KContacts
  • Add tags file to documentation. Commit.
  • Add landing page for QDoc. Commit.
  • It compiles fine without kf_6_13 deprecated methods. Commit.
  • Port API documentation to QDoc syntax. Commit.
KCoreAddons
  • Make KSystemClockSkewNotifierEngine shared. Commit.
  • [KUser] Apply rule of zero. Commit.
  • Disable python bindings for Haiku also. Commit.
  • Build Python bindings unless explicitly disabled. Commit.
  • Add KFormat::formatTime. Commit.
  • Add tags file to documentation. Commit.
  • Add a narrow variant of KFormat::formatRelativeDateTime. Commit.
  • Add missing qhp project. Commit.
  • Fix QHP namespace. Commit.
  • Fix documentation syntax. Commit.
  • Make KFormat::formatRelativeDateTime also work for future times. Commit.
  • Improve jobtest stability. Commit.
  • Add landing page for QDoc. Commit.
  • Add autotest for bug 504078. Commit.
  • Port KSystemClockSkewNotifier to qdoc. Commit.
  • Util: Add KSystemClockSkewNotifier. Commit.
  • Port API documentation to qdoc syntax. Commit.
KCrash
  • Add tags file to documentation. Commit.
  • Add missing qhp project. Commit.
  • Add landing page for QDoc. Commit.
  • It compiles fine without kf_6_13 deprecated methods. Commit.
  • Port API documentation to QDoc syntax. Commit.
KDav
  • It compiles fine without kf 6.14 deprecated methods. Commit.
  • Add tags file to documentation. Commit.
  • Add landing page for QDoc. Commit.
  • It compiles fine without kf_6_13 deprecated methods. Commit.
  • Port API documentation to QDoc syntax. Commit.
KDBusAddons
  • Add tags file to documentation. Commit.
  • Add missing qhp project. Commit.
  • Add landing page for QDoc. Commit.
  • Port API documentation to QDoc syntax. Commit.
KDeclarative
  • Add tags file to documentation. Commit.
  • Add missing qhp projects. Commit.
  • Disable KF6GlobalAccel for Haiku also. Commit.
  • Add landing page for QDoc. Commit.
  • Remove kdeclarativedocumentationdummy. Commit.
  • It compiles fine without kf_6_13 deprecated methods. Commit.
  • Port API documentation to QDoc syntax. Commit.
KDE Daemon
  • It compiles fine without kf_6_13 deprecated methods. Commit.
KDE SU
  • Add tags file to documentation. Commit.
  • Add landing page for QDoc. Commit.
  • It compiles fine without kf_6_13 deprecated methods. Commit.
  • Port API documentation to QDoc syntax. Commit.
KDNSSD
  • Add tags file to documentation. Commit.
  • Add landing page for QDoc. Commit.
  • Port API documentation to QDoc syntax. Commit.
KDocTools
  • It compiles fine without kf_6_13 deprecated methods. Commit.
KFileMetaData
  • Some minor documentation cleanups. Commit.
  • Restore documentation for Spreadsheet document type. Commit.
  • Fix ifdef for QMobiPocket. Commit.
  • Mobiextractor: Port away from QMobipocket::Stream. Commit.
  • Add tags file to documentation. Commit.
  • Add landing page for QDoc. Commit.
  • Port API documentation to QDoc syntax. Commit.
KGlobalAccel
  • Add tags file to documentation. Commit.
  • Add landing page for QDoc. Commit.
  • It compiles fine without kf_6_13 deprecated methods. Commit.
  • Port API documentation to QDoc syntax. Commit.
KGuiAddons
  • SystemClipboard: Print which mime type errored or timed out. Commit.
  • Disable python bindings for Haiku also. Commit.
  • SystemClipboard: Destroy old data source after set_selection or set_primary_selection. Commit.
  • Add tags file to documentation. Commit.
  • Build Python bindings unless explicitly disabled. Commit.
  • Add wayland-protocols to third-party deps. Commit.
  • Add missing qhp project. Commit.
  • Add landing page for QDoc. Commit.
  • Port API documentation to QDoc syntax. Commit.
KHolidays
  • Add tags file to documentation. Commit.
  • Add missing qhp project. Commit.
  • Add deprecation annotation to namespace members individually. Commit.
  • Documentation fixes. Commit.
  • Fix documentation for SunEvents. Commit.
  • Add landing page for QDoc. Commit.
  • Introduce SunEvents. Commit.
  • Minor fixes and add holidays. Commit.
  • Port API documentation to QDoc syntax. Commit.
  • Holidays/plan2/holiday_vn_vi - fix language comment is Vietnamese. Commit.
  • Add holidays for Vietnam. Commit.
KI18n
  • Add tags file to documentation. Commit.
  • Remove leftover doxygen file. Commit.
  • Add missing qhp projects. Commit.
  • Add missing QDoc dependencies. Commit.
  • Add landing page for QDoc. Commit.
  • Kuitsetup.cpp make Role "enum class". Commit.
  • Port API documentation to QDoc syntax. Commit.
  • Fix embedded ISO 3166-1/2 cache loading in static builds. Commit.
KIconThemes
  • Add tags file to documentation. Commit.
  • Add missing qhp projects. Commit.
  • Remove leftover doxygen file. Commit.
  • Remove cache handling from autotests. Commit.
  • Documentation fixes. Commit.
  • Add landing page for QDoc. Commit.
  • It compiles fine without kf_6_13 deprecated methods. Commit.
  • Fix merge. Commit.
  • Port API documentation to QDoc syntax. Commit.
KIdletime
  • Add tags file to documentation. Commit.
  • Add missing qhp project. Commit.
  • Add landing page for QDoc. Commit.
  • Port API documentation to QDoc syntax. Commit.
KImageformats
  • Cmake: add cmake config. Commit.
  • JXR: Restore device position after reading options. Commit.
  • README.md: minor fixes and improvements. Commit.
  • It compiles fine without kf_6_13 deprecated methods. Commit.
  • Add README about autotests. Commit.
KIO
  • Adjust URL for cppreference searching. Commit. Fixes bug #505195
  • KFilePlacesItem: Try harder not to check for KDE Connect. Commit. See bug #501052
  • Add tags file to documentation. Commit.
  • Kemailclientlauncherjob: Use nullptr when invoking command on Windows. Commit.
  • Fix QHP title. Commit.
  • Add missing qhp projects. Commit.
  • Remove leftover doxygen file. Commit.
  • Fix dialog modality settings. Commit. Fixes bug #504608
  • Revert "KFileItemActions: ensure abstractplugin is their real parentWidget". Commit.
  • Fix deprecation of virtual functions. Commit.
  • Add KIO::PreviewJob::generated(). Commit.
  • Revert "Skip this test with wannabe 6.10.0 that exists for the moment". Commit.
  • Documentation fixes. Commit.
  • KFileItemActions: check plugin instanciation. Commit.
  • KFileItemActions: ensure abstractplugin is their real parentWidget. Commit.
  • KFilePlaces: Allow symlinks to directories to be dropped into places panel. Commit. Fixes bug #462637
  • ExecutableFileOpenDialog: Make "Dont ask again" clearer. Commit.
  • Fix incorrect usage percentage in Properties dialog for virtual filesystems. Commit.
  • Add landing page for QDoc. Commit.
  • Deprecate KIO::askDeleteConfirmation. Commit.
  • Remove WidgetsUntrustedProgramHandler::execUntrustedProgramWarning. Commit.
  • Avoid unnecessary sequencing jobs in PreviewGenerator. Commit.
  • New_file_templates: Fix instruction for empty file name. Commit.
  • Widgets: clean unused variables. Commit.
  • KNewFileMenu: Use global "kiostaterc" state file. Commit.
  • DropIntoNewFolderDndPlugin: fix plugin source include and metadata. Commit.
  • KNewFileMenu: Offer custom folder icon directly from new dialog. Commit.
  • PreviewJob: Warn and return if cache folder cant be created for remote files. Commit.
  • Small documentation fixes. Commit.
  • PreviewJob: Fix cleaning up temporary remote files. Commit.
  • PreviewJob: Use ~/.cache instead of /tmp/ folder. Commit.
  • PreviewJob: Allow caching of remote file thumbnails. Commit.
  • PreviewJob: Download file only for first sequence. Commit.
  • PreviewJob: Make sure path is not empty with STATE_GETORIG. Commit.
  • PreviewJob: Use kio-fuse for remote files. Commit.
  • KFileWidget: Fix key navigation escaping in save dialogs. Commit. See bug #466206
  • KFilePlacesView: Show busy indicator while emptying trash. Commit.
  • DeleteOrTrashJob: Add started signal. Commit.
  • Remove random debug warning. Commit.
  • It compiles fine without kf_6_13 deprecated methods. Commit.
  • Port API documentation to QDoc syntax. Commit.
  • CopyJob: Inhibit suspend during copy operation. Commit. Fixes bug #362542
  • Core: Add infrastructure for inhibiting suspend in jobs. Commit.
  • Rework New File Dialog. Commit.
  • OpenUrl: correct @since mention. Commit.
  • Add missing since documentation. Commit.
Kirigami
  • SwipeListItem: Fix action button positions. Commit. Fixes bug #498232
  • Ensure non-visible bottom toolbars don't take up any space. Commit.
  • Add a polyfill module with a dummy implementation of Qt 6.9's SafeArea. Commit.
  • Add null texture guard in ShadowedTextureNode::preprocess(). Commit. Fixes bug #504727
  • Add tags file to documentation. Commit.
  • Controls/PageRow: don't announce StackView over screen readers. Commit.
  • Add qhp targets. Commit.
  • Fix SwipeListItem's ReferenceError due to undefined index. Commit.
  • Always update render node rect. Commit. Fixes bug #504526
  • Fix QDoc property syntax. Commit.
  • Fix QDoc syntax. Commit.
  • Add landing page for QDoc. Commit.
  • Documentation fix. Commit.
  • Add landing page for QDoc. Commit.
  • Fix ActionTextField RTL. Commit. Fixes bug #504091
  • WheelHandler: use std::min and std::max instead of qMin and qMax. Commit.
  • WheelHandler: remove std::clamp assert crash part 2. Commit. Fixes bug #503703
  • WheelHandler: Only apply scrollview event filtering to keys. Commit.
  • WheelHandler: remove std::clamp assert crash. Commit. Fixes bug #503703
  • SearchField fix RTL search icon positioning. Commit. Fixes bug #503012
  • Don't propagate breadcrumb toolbar style to layers. Commit.
  • Respect vertical padding in page headers. Commit.
  • Remove unused CMake variable. Commit.
  • GlobalDrawer: zero paddings by default. Commit.
  • Primitives: Overhaul software rendering support for ShadowedRectangle/Texture. Commit.
  • Primitives: Support the software renderer in Icon. Commit.
  • Primitives: Add SoftwareRectangleNode as software renderinger helper. Commit.
  • Tests: Add an extra row to iconTest with icons that contain semi-transparency. Commit.
  • Primitives: Drop ManagedTextureNode. Commit.
  • Primitives: Use a custom shader for rendering Icon. Commit. Fixes bug #498530. Fixes bug #486724
  • Tests: Expand iconTest with some addiotional icon states. Commit.
  • Primitives: Move cmake declarations for shaders to their own file. Commit.
  • Primitives: Remove obsolete scene graph nodes and shader files. Commit.
  • Tests: Fix url of image in ShadowedImageTest. Commit.
  • Tests: Display values of sliders in Shadowed{Rectangle,Image}Test. Commit.
  • Primitives: Port ShadowedRectangle/Texture to use ShaderNode. Commit.
  • Primitives: Combine ShadowedRectangle shader variants into a single shader. Commit.
  • Primitives: Add ShaderNode and ShaderMaterial. Commit.
  • Primitives: Extract TextureCache out of ManagedTextureNode. Commit.
  • Primitives: Add UniformDataStream helper for writing material data. Commit.
  • ColumnView: Use only touch event for dragging. Commit.
  • Respect global drawer padding. Commit.
  • Correct looking separator in trailingSeparator as well. Commit.
  • It compiles fine without kf_6_13 deprecated methods. Commit.
  • Restore more changes. Commit.
  • Restore changes to ActionMenuItem. Commit.
  • Fix another qdoc porting error. Commit.
  • Restore comments in shaders. Commit.
  • Fix errors from QDoc porting. Commit.
  • Port API documentation syntax to QDoc. Commit.
KItemModels
  • Fix documentation syntax. Commit.
  • Add tags file to documentation. Commit.
  • Remove wrong documentation text. Commit.
  • Add missing qhp projects. Commit.
  • Add landing page for QDoc. Commit.
  • Port API documentation to QDoc syntax. Commit.
KItemViews
  • Add tags file to documentation. Commit.
  • Remove leftover doxygen file. Commit.
  • Documentation fixes. Commit.
  • Port API documentation to QDoc syntax. Commit.
KJobWidgets
  • Disable python bindings for Haiku also. Commit.
  • Build Python bindings unless explicitly disabled. Commit.
  • Add tags file to documentation. Commit.
  • Add landing page for QDoc. Commit.
  • It compiles fine without kf_6_13 deprecated methods. Commit.
  • Port API documentation to QDoc to QDoc syntax. Commit.
KNewStuff
  • Change "Comments and Reviews" link into a button. Commit. Fixes bug #503724
  • It compiles fine without kf 6.14 deprecated methods. Commit.
  • Add tags file to documentation. Commit.
  • Add missing qhp projects. Commit.
  • Remove leftover doxygen file. Commit.
  • Add landing page for QDoc. Commit.
  • Fix QDoc issues. Commit.
  • Fix QDoc issue. Commit.
  • It compiles fine without kf_6_13 deprecated methods. Commit.
  • Port API documentation to QDoc syntax. Commit.
KNotifications
  • Disable python bindings for Haiku also. Commit.
  • Build Python bindings unless explicitly disabled. Commit.
  • Add tags file to documentation. Commit.
  • Fix qhp file for QML module. Commit.
  • Add landing page for QDoc. Commit.
  • Port API documentation to QDoc syntax. Commit.
KNotifyConfig
  • Add tags file to documentation. Commit.
  • Add landing page for QDoc. Commit.
  • It compiles fine without kf_6_13 deprecated methods. Commit.
  • Port API documentation to QDoc syntax. Commit.
KPackage
  • Add tags file to documentation. Commit.
  • Add landing page for QDoc. Commit.
  • It compiles fine without kf_6_13 deprecated methods. Commit.
  • Port API documentation to QDoc syntax. Commit.
KParts
  • It compiles fine without kf 6.14 deprecated methods. Commit.
  • Add tags file to documentation. Commit.
  • Documentation fixes. Commit.
  • Add landing page for QDoc. Commit.
  • It compiles fine without kf_6_13 deprecated methods. Commit.
  • Convert API documentation to qdoc syntax. Commit.
KPeople
  • Add tags file to documentation. Commit.
  • Add missing qhp projects. Commit.
  • Add landing page for QDoc. Commit.
  • It compiles fine without kf_6_13 deprecated methods. Commit.
  • Port API documentation to QDoc syntax. Commit.
KPlotting
  • Add tags file to documentation. Commit.
  • Add landing page for QDoc. Commit.
  • Port API documentation to QDoc syntax. Commit.
KPTY
  • Add tags file to documentation. Commit.
  • Add landing page for QDoc. Commit.
  • It compiles fine without kf_6_13 deprecated methods. Commit.
  • Port API documentation to QDoc syntax. Commit.
KQuickCharts
  • Port controls module to QDoc. Commit.
  • Remove mentions of ValueHistorySource and ModelHistorySource. Commit.
  • Remove dead code. Commit.
  • Add tags file to documentation. Commit.
  • Add missing qhp projects. Commit.
  • Add landing page for QDoc. Commit.
  • Port API documentation to QDoc syntax. Commit.
  • Add missing QML module dependency. Commit.
KRunner
  • It compiles fine without kf 6.14 deprecated methods. Commit.
  • DBusRunner: Do not override signal with non signal. Commit.
  • Optimization: Pass ActionPrivate constructor args by ref. Commit.
  • Optimization: Use QStringView to avoid allocating temporary for int conversion. Commit.
  • Add tags file to documentation. Commit.
  • Add license headers for QDoc files. Commit.
  • Add landing page for QDoc. Commit.
  • It compiles fine without kf_6_13 deprecated methods. Commit.
  • Port API documentation to QDoc syntax. Commit.
KService
  • Add tags file to documentation. Commit.
  • Add missing qhp projects. Commit.
  • Remove leftover doxygen file. Commit.
  • Kbuildsycoca: show error if fchown() fails. Commit.
  • Kmemfile: avoid using memset, use regular init. Commit.
  • Add landing page for QDoc. Commit.
  • KService: add actions() precision. Commit.
  • It compiles fine without kf_6_13 deprecated methods. Commit.
  • Port API documentation to QDoc syntax. Commit.
KStatusNotifieritem
  • Disable python bindings for Haiku also. Commit.
  • Build Python bindings unless explicitly disabled. Commit.
  • Add tags file to documentation. Commit.
  • Fix typo in qdocconf file. Commit.
  • Add landing page for QDoc. Commit.
  • It compiles fine without kf_6_13 deprecated methods. Commit.
  • Port API documentation to QDoc syntax. Commit.
  • Remove pre-Qt 6.7 workaround. Commit.
KSVG
  • Add tags file to documentation. Commit.
  • Add missing qhp projects. Commit.
  • Documentation fixes. Commit.
  • Add landing page for QDoc. Commit.
  • It compiles fine without kf_6_13 deprecated methods. Commit.
  • Port API documentation to QDoc syntax. Commit.
KTextEditor
  • Trigger refresh of modified on disk message if the type did change. Commit. Fixes bug #504150
  • Fix m_marks not initialized. Commit. Fixes bug #503455
  • Don't confuse users, just report modified on disk. Commit. Fixes bug #504151
  • Remove obsolete comment. Commit.
  • It compiles fine without kf 6.14 deprecated methods. Commit.
  • Check validity of range after setting empty behavior. Commit.
  • Jump to the end of fields when tabbing instead of the start. Commit.
  • Silently return an empty string for selection text without selection. Commit.
  • Add a new detailed tabbing test. Commit.
  • Fix typo in comment. Commit.
  • Fix typo in private function name. Commit.
  • Fix adjacent fields with an empty default value losing order on init. Commit.
  • Change tab behavior to select an untouched field before jumping forward. Commit.
  • Reintroduce support for jumping to ${cursor} last when tabbing. Commit.
  • Mark fields as removed if the whole line they were on is removed. Commit.
  • Test Backtab key in templates. Commit.
  • Use static const variables for regexes to avoid recompiling them. Commit.
  • Remove unreachable check. Commit.
  • Simplify code. Commit.
  • Test all different ways to exit the template handler. Commit.
  • Test template handler on multiple views. Commit.
  • Test inserting template into read only document. Commit.
  • Fixup! Simplify code to improve readability. Commit.
  • Fix broken backspace for multicursors (cf. 648a2161). Commit.
  • Simplify code to improve readability. Commit.
  • Add copyright line to files with major changes. Commit.
  • Fix adjacent fields losing order after replacing contents. Commit.
  • Fix corner case with adjacent fields not properly expanding. Commit.
  • Store unique ID and original order of template fields. Commit.
  • Exit early if the only changed template field is FinalCursorPosition. Commit.
  • Remove unnecessary call to updateRangeBehaviors(). Commit.
  • Fix cursor jumping to the end when updating adjacent mirror fields. Commit.
  • Fix inserting text at the beginning of adjacent fields. Commit.
  • Fix off-by-one cursor placement issues. Commit.
  • Mark failing test as expected fail. Commit.
  • Document some gotchas with keyboard input in template tests. Commit.
  • Fix repeated function calls wrongly being treated as mirror fields. Commit.
  • Add tests for adjacent mirror fields. Commit.
  • Always use std::stable_sort instead of std::sort for sorting fields. Commit.
  • Fix detecting removed fields when removing text. Commit.
  • Final cursor should be the last field when tabbing, mark as regression in tests. Commit.
  • Prevent template handler from exiting during internal edits. Commit.
  • Remove unused private methods from KateTemplateHandler. Commit.
  • Rewrite updateDependentFields to fix a bunch of issues with adjacent ranges. Commit.
  • Add method to collect all template fields related to a range. Commit.
  • Prefer final cursor position over empty editable fields when tabbing. Commit.
  • Give preference to editable fields when updating range behaviors. Commit.
  • Improve (break) adjacent field tests. Commit.
  • Fix typo in MovingCursor docs. Commit.
  • Add test for backslash in template default value. Commit.
  • Don't sort ${cursor} last in sortFields(). Commit.
  • Remove unnecessary loops over all template fields. Commit.
  • Fix compiler warning because Cursor only takes int, not long long. Commit.
  • Use raw string for regex for readability. Commit.
  • Fix tests that actually pass now. Commit.
  • Fix tabbing through template fields. Commit.
  • Correctly sort fields by start position. Commit.
  • Fix mirrored template fields before the default value is defined. Commit.
  • Fix issues with fields not being properly initialized. Commit.
  • Fix a few tabbing issues with adjacent template fields. Commit.
  • Add more failing template tests for adjacent fields. Commit.
  • Fix escaping an even number of backslashes before template fields. Commit.
  • Fix escaping an odd number of backslashes before template fields. Commit.
  • Fix escaped template fields containing other fields. Commit.
  • Add a bunch of tests for escaped template fields. Commit.
  • Fix expected output in testTab::adjacent_start test. Commit.
  • Add test for improved error message. Commit.
  • Remove duplicates from list of reserved words. Commit.
  • Allow "package" as field name in templates. Commit.
  • Improve error message when trying to access fields with forbidden names. Commit.
  • Simplify some tests by reusing the same string. Commit.
  • Fix JS evaluation with unusual field names in templates. Commit.
  • Add dontExpandOthers lambda as method to TemplateField. Commit.
  • Mark failing new template tests as expected fail. Commit.
  • Group template setup into one undo action. Commit.
  • Add (failing) tests for adjacent template fields. Commit.
  • Test references in field default values. Commit.
  • Test single quotes in template evaluation. Commit.
  • Test output when tab-editing template fields. Commit.
  • Add (failing) tests for tabbing between adjacent template fields. Commit.
  • Add tests for template default values with references. Commit.
  • Make sure fields are sorted before updating range behaviors. Commit.
  • Fix ReferenceError if template default values depend on other fields. Commit.
  • Make sure a template's fields are immediately sorted by position. Commit.
  • TextRange is allowed to be empty: fix docs and fix setEmptyBehavior. Commit.
  • Add some whitespace for readability. Commit.
  • Allow retrieving error messages in evaluateScript(). Commit.
  • Add tags file to documentation. Commit.
  • Add missing qhp projects. Commit.
  • Fix selection comparison functions in script tester. Commit.
  • Fix variable casing. Commit.
  • Allow evaluateScript() to return values. Commit.
  • Add API to run script code, without inserting a template, first. Commit.
  • Add landing page for QDoc. Commit.
  • Replace all references to MovingInterface in documentation. Commit.
  • Update MovingCursor construction and ownership documentation. Commit.
  • Fix screenshot for hidpi displays. Commit. Fixes bug #503823
  • Fix error logic. Commit. Fixes bug #503821
  • Add missing QDoc dependency. Commit.
  • It compiles fine without kf_6_13 deprecated methods. Commit.
  • Port API documentation to QDoc syntax. Commit.
  • Add missing KF6::ColorScheme link. Commit.
KTextTemplate
  • Add tags file to documentation. Commit.
  • Add landing page for QDoc. Commit.
  • Port API documentation to QDoc syntax. Commit.
KTextWidgets
  • Add tags file to documentation. Commit.
  • Add missing qhp projects. Commit.
  • Add landing page for QDoc. Commit.
  • It compiles fine without kf_6_13 deprecated methods. Commit.
  • Port API documentation to QDoc syntax. Commit.
KUnitConversion
  • Disable python bindings for Haiku also. Commit.
  • Build Python bindings unless explicitly disabled. Commit.
  • It compiles fine without kf 6.14 deprecated methods. Commit.
  • Add tags file to documentation. Commit.
  • Add landing page for QDoc. Commit.
  • Port API documentation to QDoc syntax. Commit.
  • It compiles fine without kf_6_13 deprecated methods. Commit.
KUserFeedback
  • Add tags file to documentation. Commit.
  • Add missing qhp projects. Commit.
  • Remove leftover doxygen file. Commit.
  • Add landing page for QDoc. Commit.
  • Port API documentation to QDoc syntax. Commit.
KWallet
  • Don't freeze when the create wallet dialog is dismissed. Commit. Fixes bug #504678
  • It compiles fine without kf 6.14 deprecated methods. Commit.
  • Hide wallets with no name. Commit. Fixes bug #504656
  • Add tags file to documentation. Commit.
  • Add missing qhp projects. Commit.
  • Remove leftover doxygen file. Commit.
  • Use desktop file to launch kwalletmanager. Commit.
  • Drop codepath for kstart5. Commit.
  • Fix arguments in startManagerForKSecretD. Commit.
  • Add landing page for QDoc. Commit.
  • Don't make clients hang if kwallet is disabled. Commit. Fixes bug #504014
  • Don't build kwalletd on macOS either. Commit.
  • Fix assertion failure due to invalid DBus object path. Commit.
  • It compiles fine without kf_6_13 deprecated methods. Commit.
  • Port API documentation to QDoc syntax. Commit.
  • Add Alpine CI. Commit.
KWidgetsAddons
  • KMessageDialog: Play sound only for non-spontaneous events. Commit.
  • Disable python bindings for Haiku also. Commit.
  • Build Python bindings unless explicitly disabled. Commit.
  • Add tags file to documentation. Commit.
  • Add landing page for QDoc. Commit.
  • Fix property documentation. Commit.
  • Remove documentation comments from private members. Commit.
  • Remove QDoc documentation from private class. Commit.
  • Port API documentation to QDoc syntax. Commit.
KWindowSystem
  • Add tags file to documentation. Commit.
  • Add missing qhp projects. Commit.
  • Add landing page for QDoc. Commit.
  • Port API documentation to QDoc syntax. Commit.
KXMLGUI
  • Disable python bindings for Haiku also. Commit.
  • Build Python bindings unless explicitly disabled. Commit.
  • Fix popup transient parents. Commit. See bug #500978
  • It compiles fine without kf 6.14 deprecated methods. Commit.
  • Add tags file to documentation. Commit.
  • Fix indentation. Commit.
  • Run clang-format. Commit.
  • Add landing page for QDoc. Commit.
  • [kactioncategory] Only include KStandardAction when building deprecated API. Commit.
  • Port tests away from deprecated API. Commit.
  • Add overload that takes KStandardActions+name to KActionCollection/KActionCategory. Commit.
  • It compiles fine without kf_6_13 deprecated methods. Commit.
  • Port API documentation to QDoc syntax. Commit.
  • Qdoc. Commit.
  • Use full height for left side title and logo. Commit.
  • Improve the header in the "About KDE" window. Commit.
Modem Manager Qt
  • Add tags file to documentation. Commit.
  • Add landing page for QDoc. Commit.
  • Port API documentation to QDoc syntax. Commit.
Network Manager Qt
  • Add tags file to documentation. Commit.
  • Add landing page for QDoc. Commit.
  • Port API documentation to QDoc syntax. Commit.
Prison
  • Add tags file to documentation. Commit.
  • Add missing qhp projects. Commit.
  • Add landing page for QDoc. Commit.
  • Port API documentation to QDoc syntax. Commit.
Purpose
  • Add tags file to documentation. Commit.
  • Add missing qhp projects. Commit.
  • Add landing page for QDoc. Commit.
  • Exclude dirs from main documentation module. Commit.
  • It compiles fine without kf_6_13 deprecated methods. Commit.
  • Port API documentation to QDoc syntax. Commit.
QQC2 Desktop Style
  • Dialog: Hide header when no title is present. Commit.
  • Update to the default styling from Kirigami. Commit.
  • It compiles fine without kf_6_13 deprecated methods. Commit.
Solid
  • Add tags file to documentation. Commit.
  • Convert Ifaces::Block to QDoc. Commit.
  • Device::Block: add isSystem. Commit.
  • Add missing qhp projects. Commit.
  • Add landing page for QDoc. Commit.
  • Handle ZFS in fstab backend as udisk2 has no support. Commit.
  • Port API documentation to QDoc syntax. Commit.
Sonnet
  • Add tags file to documentation. Commit.
  • Add missing qhp projects. Commit.
  • Remove leftover doxygen file. Commit.
  • Add landing page for QDoc. Commit.
  • Settings.cpp remove string "Nepomuk". Commit.
  • Port API documentation to QDoc syntax. Commit.
Syndication
  • Add tags file to documentation. Commit.
  • Add landing page for QDoc. Commit.
  • It compiles fine without kf_6_13 deprecated methods. Commit.
  • Port API documentation to QDoc syntax. Commit.
Syntax Highlighting
  • Since qdoc is now the default, drop final qch bits. Commit.
  • XML: fix double hyphen error in a comment ('--->' is a error). Commit.
  • XML: simplify name regex. Commit.
  • XML: remove context accumulation with new tag. Commit.
  • XML: reduce the number of words or lines in error when there is a syntax error in a tag. Commit.
  • Add Cap'n Proto language. Commit.
  • FlatBuffers: add hexadecimal float, escape char and specific highlighting for symbols. Commit.
  • TextProto: fix String Char, number format and add single quote string. Commit.
  • Protobuf: add keywords, fix String Char, split Symbol and others. Commit.
  • Sed: remove hard colors ; add command and escape char ; fix separator ; ... Commit.
  • Scheme: highlight name of syntactical sugar for procedure as Function. Commit. Fixes bug #476879
  • Ruby: fix sub class after keyword / function. Commit. Fixes bug #495823
  • Ruby: fix operator after method call (expected unary operator or expression). Commit. Fixes bug #495823
  • Ruby: fix %-string and regex in array. Commit. Fixes bug #495823. Fixes bug #495349
  • Add tags file to documentation. Commit.
  • Python: add '_' as floating format spec (python 3.14). Commit.
  • Python: add t-strings (python 3.14). Commit.
  • Python: add \z as special characters in a regex (python 3.14). Commit.
  • Python: add string deliminator highlighting and disable spell checking on them. Commit. Fixes bug #464690
  • Add missing qhp projects. Commit.
  • Make the duplicated keyword check fatal. Commit.
  • Fix duplicated keywords in a keyword list. Commit.
  • Remove consecutive duplicates keywords in a keyword list. Commit.
  • INI: add *.INI as a file extension. Commit. Fixes bug #502541
  • Document QML API as such. Commit.
  • Add landing page for QDoc. Commit.
  • Fix up file, add autotests data. Commit.
  • Fix faulty XML syntax of edp.xml file. Commit.
  • Add licensing info. Commit.
  • Add autotests/input file. Commit.
  • Add syntax highlighting for FreeFem files. Commit.
  • Port API documentation to QDoc syntax. Commit.
  • Dts: allow for multiple labels on the same node. Commit.
Threadweaver
  • Add tags file to documentation. Commit.
  • Add landing page for QDoc. Commit.
  • Port API documentation to QDoc syntax. Commit.

Intro

One of the largest hurdles in any job or activity is getting your resources set up. Luckily for you, Krita has one of the most detailed and straightforward documentation for setup. In this blog I will go over my experience setting up Krita and provide quick links to answer all the questions you may have during set up.

Setup

One Stop Shop for Links
Download and Install Ubuntu
Create KDE account
Fork Krita Repository
Follow build instructions
If you use QTCreator to Build and Run Krita follow this video Krita Chat - Create account, join chat room, introduce yourself and ask questions

The goal is to get Krita running on your machine. For my setup and for simplicity of instructions, I use Oracle's Virtualbox to run a virtual machine(VM) with Ubuntu on my windows machine. You can use any VM host for set up. The Follow build instructions should be straightforward to follow. The great thing about these instructions is that you don't need to know a lot of detail about docker or C++ yet, but you will need to understand some basic linux and git commands.

In the above links, follow the instruction in the hyperlink title.

My Experience

When I set up Krita for the first time, I felt a sense of accomplishment. Not only was I able to set up Krita, but I was able to deepen my understanding of git, learn about docker, VMs and QT.

I think the biggest take away from setting up Krita is to never give up, ask questions in chat, ask yourself "What do I not understand?" before moving to the next instruction.

Conclusion

Setting up Krita is as simple as you make it out to be. The hardest part is finding the resources to be successful. I hope this blog post can simplify set up for newcomers and experienced users.

Contact

To anyone reading this, please feel free to reach out to me. I’m always open to suggestions and thoughts on how to improve as a developer and as a person.
Email: ross.erosales@gmail.com
Matrix: @rossr:matrix.org