May 12, 2019

Following Latte and an Indicators tale,  today I am going to introduce you another major feature that Latte git version supported this month, Shared Layouts.

“Lets share our docks and panels in different Activities”

- Share the same top panel between two different layouts at different Activities -- youtube presentation -

Why do we need Shared Layouts for?

Latte v0.8 introduced Latte layouts that could function in Multiple mode. Meaning that the layouts can be assigned to different Activities and all together can work simultaneously based on the Activities running. That approach of course has limits. In case you want to share a dock/panel between different layouts you can not. The only thing you could do is to Copy the panel or view that you want in more than one layouts and have different instances in different Activities. These instances of course could not sync their settings and they were all running at the same time, meaning more memory usage because of all these duplicates.

I suppose that in the past the users called this feature "Different panels at Different Activities". Latte v0.9 actually answers that completely with Shared Layouts.

What can Shared Layouts do?

Any Latte layout can be Shared To one or more layouts under Multiple Layouts mode. Contrary to Shared Layouts all the other layouts that are NOT-Shared are now called Central in order to distinguish them. All these layouts can live at the same time at different Activities and cooperate with each other of course.

Note: I dont know how to describe this better so please watch the youtube video in the beginning in order to understand better the concept

Shared "TopPanel" layout that lives with "My Profile" and "Unity Dream"
layouts at the same time

Shared Layouts Goals

  1. Any layout can act as Central or Shared layout BUT NOT at the same time
  2. A Central Layout can be assigned to ONLY ONE Shared Layout BUT the Shared Layout can be assigned to one or more Central layouts at the same time
  3. Central Layouts define the Activities to follow and its SHARED layout will just obey
  4. Panels/Docks from Shared Layouts have ALWAYS HIGHER PRIORITY to be drawn in the screen compared to Panels/Docks from Central Layouts
  5. Multi-Screen behavior should work out of the box with no restrictions
  6. Docks/Panels from Shared or Central Layouts can be moved/exchanged from layout to layout freely with no restrictions

Latte with [1-6] can now act in multi-layouts / multi-activities / multi-screens mode with no restrictions


I dont know how many Latte users will need this feature, probably very few... On the other hand I always try to promote and enhance the Plasma Activities concept because I really believe in them... ��

That is all for now, I hope you enjoy and play with Shared Layouts! Personally I love them and I have switched to a Multiple Layouts mode with Shared Layouts to keep things in sync...


You can find Latte at Liberapay if you want to support,     Donate using Liberapay

or you can split your donation between my active projects in kde store.

Time for a new Nanonote release!


This new version comes with several changes from Daniel Laidig: you can now use Ctrl+mouse wheel to make the text bigger or smaller and Ctrl+0 to reset the font to its default size.

He also fixed the way links are displayed: they now use the theme color instead of being hard-coded to blue. If you use a dark theme, this should make Nanonote more usable for you.

Nanonote now speaks German, thanks to Vinzenz Vietzke.

I made a few minor changes on my side, the most visible being that @ is now allowed in URLs, which is handy for sites like Medium.

A more complete changelog as well as deb and rpm packages are available on the release page.

Hold on to your hats, folks, because this week’s Usability & Productivity report is OVERFLOWING WITH AWESOMENESS! Let’s jump right in:

New Features

Bugfixes & Performance Improvements

User Interface Improvements

Next week, your name could be in this list! Not sure how? Just ask! I’ve helped mentor a number of new contributors recently and I’d love to help you, too! You can also check out, and find out how you can help be a part of something that really matters. You don’t have to already be a programmer. I wasn’t when I got started. Try it, you’ll like it! We don’t bite!

If you find KDE software useful, consider making a donation to the KDE e.V. foundation.

Thanks to all to the hard work by KStars developers and volunteers, we are happy to announce KStars v3.2.2 release for Windows, MacOS, and Linux.

In this release, support for x86-32 bit architecture has been dropped and the Windows 10 executable now requires an x86-64 bit system.

Improved Observing List Wizard

This is a maintenance release to fix a few bugs and introduce a few enhancements:

  • Important stability fix for crashes reported with FITS Viewer.
  • Ignore Video Streaming when guiding via PHD2 with a video device.
  • Automatic syncing for Active Devices on Startup.
  • Meridian Flip Fixes.
  • Keep GUI parameters for scheduler and capture in sync with row selection
  • When a manual filter is detected, prompt user to change the filter and update the driver accordingly.
  • Fix observing list wizard object filter by time and altitude and introduce a coverage param where the user can control the percentage.
  • Improved saving of settings in all Ekos modules.

May 11, 2019

The Kdenlive team is happy to announce the first minor release of the 19.04 series fixing 39 bugs. The feedback by the community as well as the effort put in reporting issues has been very helpful and we encourage to keep it up. We expect to finish polishing in the coming months in order to focus on our planned pro features.

Kdenlive 19.04.1 fixes some important issues, so all 19.x users are encouraged to upgrade. Easiest way to test it is through the AppImage, available from the KDE servers as usual:

The Appimage also contains some last minute fixes that will be in 19.04.2 since we are still busy fixing some remaining issues after our big refactoring. This Appimage should fix the rendering and timeline preview issues recently reported, and the 19.04.1 fixes are listed below.

Other news: work continues to improve OpenGL support, fixes by the team have been merged into MLT improving speed and the Titler will be rewritten as a GSOC project.

19.04.1 bug fixes:

  • Search effects from all tabs instead of only the selected tab
  • Add missing lock in model cleanup. Commit.
  • Move levels effect back to main effects. Commit.
  • Fix crash closing project with locked tracks. Fixes #177. Commit.
  • Speedup selecting bin clip when using proxies (cache original properties). Commit.
  • Disable threaded rendering with movit. Commit.
  • Fix wrong thumbnails sometimes displayed. Commit.
  • Ensure fades always start or end at clip border. Commit.
  • Fix loading of clip zones. Commit.
  • Fix transcoding crashes caused by old code. Commit.
  • Fix fades copy/paste. Commit.
  • Fix broken fadeout. Commit.
  • Fix track red background on undo track deletion. Commit.
  • Update appdata version. Commit.
  • Zooming in these widgets using CTRL+two-finger scrolling was almost. Commit. Fixes bug #406985
  • Fix crash on newly created profile change. Commit.
  • Always create audio thumbs from original source file, not proxy because proxy clip can have a different audio layout. Commit.
  • Mark document modified when track compositing is changed. Commit.
  • Fix compositing sort error. Commit.
  • Fix crash opening old project, fix disabled clips not saved. Commit.
  • Fix crash and broken undo/redo with lift/gamma/gain effect. Fixes #172. Commit.
  • Fix clip marker menu. Fixes #168. Commit.
  • Fix composition forced track lost on project load. Fixes #169. Commit.
  • Fix spacer / remove space with only 1 clip. Fixes #162. Commit.
  • Fix timeline corruption (some operations used a copy of master prod instead of track producer). Commit.
  • Check whether first project clip matches selected profile by default
  • Renderwidget: Use max number of threads in render. Commit.
  • Fix razor tool not working in some cases. Fixes #160. Commit.
  • Better os detection macro. Commit.
  • Remove crash, not solving 1st startup not accepting media (see #117). Commit.
  • Remove unneeded unlock crashing on Windows. Commit.
  • Some fixes in tests. Commit.
  • Forgotten file. Commit.
  • Improve marker tests, add abort testing feature. Commit.
  • Add tests for unlimited clips resize. Commit.
  • Small fix in tests. Commit.
  • Fix AppImage audio recording (switch from wav to flac). Commit.
  • Dont remember clip duration in case of profile change. Fixes #145. Commit.
  • Fix spacer broken when activated over a timeline item. Commit.
  • Improve detection of composition direction. Commit.
  • Unconditionnaly reload producers on profile change. Related to #145. Commit.

May 10, 2019

Kaidan is a simple, user-friendly Jabber/XMPP client providing a modern user interface based on Kirigami and QtQuick. Kaidan aims to become a full-featured alternative to proprietary messaging solutions like Telegram, but featuring decentralization and privacy.

The Kaidan team has always had a good relationship with the KDE community, our code uses KDE’s Kirigami framework and is written with Plasma Mobile in mind. So we decided it is only logical for us to join KDE officially, and we are happy to announce that we now finally did.

This introduces some changes and benefits to the development workflow. First of all, we can now use KDE’s GitLab instance, KDE Invent, which eliminates the need for hosting our own. In the future, we plan to provide official Windows and macOS builds using KDE’s Binary Factory infrastructure.

If you are not a user of the KDE Plasma desktop environment, you might wonder whether this decision will influence our support for other desktop environments, like GNOME, but we will continue to aim at the full range of possible platforms, like we always did, regardless of this decision. Of course, merge requests improving the experience on other desktop environments are also very welcome! If you want to contribute, you can now do this on This requires the use of a KDE Identity account but is otherwise not different from our own GitLab instance you might be used to.

Happy messaging!

April 26th was my last day at Codethink Ltd. It has been over three years and a half working for this Manchester based company as consultant. I have got the opportunity to learn a lot working for a variety of customers and Open Source organizations together with bright professionals.

Codethink is an organization that cares about people: customers and employees. That is not as common as it might seem in software engineering service companies. Codethink does good software engineering too; sometimes under tough conditions. It is not always easy to work for customers with tight deadlines, solving complex problems with high impact in their businesses. I am proud of having worked for such organization.

Thanks Paul Sherwood and the rest of Codethings for the given opportunity and your respect during this time.

Since the day I decided to turn my little IT training company into an Open Source Software one, back in 2003, I have worked in/for organizations that understood and supported Open Source. I could even work full time in the open in several occasions, either contributing to or being upstream. Codethink was no exception in this regard.

After +15 years working in Open Source organizations, it has come the time for me to move away from the comfort zone and try something different for some time. But that will be a matter of the coming post, in a few weeks.

Howdy folks! Here’s a reminder about our Plasma 5.16 wallpaper competition. We’ve gotten lots of wallpapers, but there’s a little more than two weeks left and still plenty of time to submit you gorgeous entries! As a reminder, the winner also receives a Slimbook One computer! Here are the rules.

Let me also take the opportunity to clarify what it is that we’re looking for, overall. We want wallpapers with the following characteristics:

  • More abstract than literal
  • Uses the Breeze color palette, at least a bit
  • Has some geometric elements to it
  • Attractive but not overwhelming
  • Soothing but not boring
  • Creative but not bizarre or disturbing
  • Still good-looking with some desktop icons on top of it

Here are some stylistic suggestions, too: Avoid having a central foreground element framed within a background. This feels very confining. Try having the foreground go out of the frame and appear off-center. Also, try to avoid large areas of super bright colors, as these can be visually overwhelming and look uncomfortable when closing or minimizing windows. Pastels often work better than bright neon colors.

and if you’re looking for inspiration, check out the last six wallpapers. See how they evolved over time?

So get out there and submit a wallpaper!

There is something very exciting I have to show to you today: a completely rewritten notification system for Plasma that will be part of our next feature update 5.16 to be released in June.

Isn’t that an update you’d love to install?

I have been planning to do this rewrite for years. In fact, the wiki page where I collected ideas and mock-ups was created in July 2016 and “assumes the status quo as of Plasma 5.7”. The old notification plasmoid was originally written in 2011, when QML was still pretty new. It later got ported to Plasma 5 and slightly overhauled, most noticeably using individual popups rather than the scrolling ticker of notifications we had in the late Plasma 4 days. However, its core logic hardly changed and it became evident that its code base could not support many of the feature users expect from a notification center these days. I had started a rewrite branch last summer but only recently found the time and motivation to finish it and basically hacked on that thing for a month straight, and here’s what came out of that:

New look and feel

The first thing you’ll notice is that the notifications are much more compact with the icon on the opposite side now and the issuing application prominently displayed. Font sizes have also been streamlined and the heading is now allowed to wrap. A major behavior change in the new system is that persistent notifications stay on screen until dismissed. This ensures that important notifications and ones that require user interaction, such as a pairing request from a Bluetooth or KDE Connect device don’t go unnoticed.

Notification popup synced from your phone indicating what app and device it originally came from

When an application sets a “default” action, the cursor changes to a pointing hand to indicate that the popup itself is clickable. A little bar on the side indicates when the notification will time out. I worked together with Nicolas Fella of KDE Connect fame to improve the user experience when syncing your devices and it will soon be possible for it to annotate a notification with the name of the device it originally came from and the actual app on the device that sent it.

My all time favorite productivity feature in Plasma, notification thumbnails, has of course been touched up. It now uses a better aspect ratio and has a lovely blur effect to go with it. In case you didn’t know: when you take a screenshot in an application like Spectacle (remember Meta+Shift+Print Screen) or Flameshot you can drag the screenshot preview in the notification anywhere you like, for example your web browser, or an email composer.


Do not disturb mode

Another new major feature is “Do not disturb” mode. When enabled, no notification popups are shown and the Notification Sounds stream is muted. All notifications go straight to the history for later reference.

However, there are some notifications that should get through nonetheless. This is why the new server also supports the “Urgency” hint which an application can use to specify whether a notification has low, normal (the default), or critical urgency. Critical notifications, such as your battery is about to die, are shown even in do not disturb mode. KDE applications can now add a Urgency= key to an event in their .notifyrc file or use the setUrgency method on KNotification added in the upcoming Frameworks release. Moreover, you can specify which applications are allowed to send notifications regardless.

There is currently a discussion on the XDG mailing list about a DBus protocol for notification inhibitions so applications like LibreOffice Impress, Okular, OBS, and others could automatically enable this mode when giving a presentation or hosting a livestream. Speaking of presentations, while regular notifications aren’t shown on top of full-screen windows for added privacy, critical notifications will be, so you won’t miss your laptop running out of juice mid-lecture.

Progress reporting

Progress reporting when copying or receiving files has also been revamped and uses the same style as notifications. A more useful summary text is displayed, showing the most important information at a glance: the name of the file or number of files being processed as well as the destination and time remaining. This way you never actually have to expand the details section to see what’s going on. You still can, of course.

When a job finishes it turns into a regular notification and just times out. In case of error it stays visible so you can investigate what went wrong. One major complaint we got with the old progress reporting was that it’s easy to miss since it’s just a little circle in the panel. To address this, by default the job popup opens and stays there until the task has finished. It can be manually hidden at the click of a button and there’s an option to automatically do that a few seconds into the progress, if you prefer that.

Notification history

Notification history showing what you’ve missed

An always only half-hearted feature was the notification history. Currently it collects every notification and gets cluttered quickly. In the new history, we try to reduce the amount of spam that piles up: notifications that you explicitly closed, interacted with, or that got revoked by the issuing application aren’t added to the history. Unfortunately, with the freedesktop Notification protocol and how KNotification is built around that a proper history isn’t possible: an application cannot revoke a notification once it expired even if it afterwards knows it became obsolete.

To remedy the effects of piling up old notifications they are grouped by application and only the last couple of notifications are shown, with the possibility to expand a group to show all of them. Additionally, low urgency notifications, which could be your media player changing tracks, aren’t added to the history by default.

New settings module

What would be a new feature in KDE land without settings? ;) Accompanying the new notification server and plasmoid is an all-new System Settings module.

Notification SettingsNew notification settings module

It lets you configure various aspects of notifications and job reporting in a central place. Settings for badges (the little number circle on app icons) and application progress in task manager have also been moved to this central location. Furthermore, the default popup time out, i.e. when an application doesn’t explicitly specify one, is now a fixed number of seconds. The old implementation tried to find a sensible timeout based on the number of words and an “average read speed” but its inaccurate algorithm often lead to popups staying on screen a long time for no apparent reason.

Configuring notifications, including Gnome applications and other 3rd party ones

While it has always been possible to configure notifications of KDE’s own applications to a great degree, there was no way to influence the behavior of 3rd party apps. The new settings module is able to find Gnome applications that set the appropriate hint as well as remember any application that sent a notification in the past.

This allows you to disable popups for those applications, too, as well as keep them out of your notification history or white-list them for do not disturb mode. The fine-grained notification event configuration for KDE applications is also still available.

Give it a try!

There’s a couple of days left until Plasma 5.16 Beta, to be released on 16 May, so there’s still some time for you to try it out beforehand and give feedback. With the new implementation I managed to fix almost 20 distinct bug reports. Go spin up your developer machine and build plasma-workspace master branch from git. You may also update your favorite distribution sporting daily builds, however, the feature has only been merged recently, so it might take some time for updated packages to be generated.

If you find a notification that looks odd or different from how it used to, do tell me! Ideally, you’ll be monitoring DBus traffic to find out what exact notification and data the application sent and help me reproduce and fix the issue. Just run

dbus-monitor interface=org.freedesktop.Notifications

to see all traffic going in and out of the notification server, or use a tool like Bustle. For debugging progress reporting, the interfaces instead are org.kde.kuiserver, org.kde.JobViewServer, and org.kde.JobViewV2. There’s also a debug logging category org.kde.plasma.notifications that you can enable through kdebugsettings.

How Plasma Mobile got my attention?
I remember how my admiration for android turned into disappointment when I got into android development. The realisation, with every new release the patches are built on the broken pieces of android was disheartening. And the water crossed the line when the whole system started disrespecting the users privacy!
Then, I fine day (mid-January 2019) I came to know about Plasma Mobile. When every other attempt at creating an open source mobile platform on the horizon failed, KDE came along with Plasma Mobile. So how could have I resisted to not to using it!
I purchased refurbished Nexus 5X, and here we are today:D

Currently Plasma Mobile is supported by very small number of devices. It works quite well on Nexus 5x (Bullhead). For installing PlaMo on Bullhead you can follow instructions at

My asseveration
Operating Plasma Mobile at console level is just like working on Ubuntu/Kubuntu terminal on desktop, and I usually prefer using my PlaMo using Command-line Interface (CLI) because most of the functions work well when controlling via CLI.
Either you can use ‘Konsole’ app for that or control your phone remotely from the computer.Since the Konsole app isn’t very handy as for now, I prefer the second option.
ssh phablet@
Plasma Mobile is very much an alpha-level product. It can’t be used for daily purpose as of now. But, it is really appreciable that the KDE developers have managed to take a Linux desktop, re-frame it around mobile hardware, and make it work quite well.
This could be something special!

PS: I do not intend to say Plasma Mobile is a full operating system itself (just like Plasma on desktop is not a complete distro). It needs an underlying OS.

May 08, 2019


We’re on track to release Krita 4.2.0  this month, and today we’re releasing the alpha! That means that we’re still fixing bugs like crazy — just check what we’ve been doing this month:

But of course there’s much more. We’ve been working on this release for a long time now, since June last year when Krita 4.1 was released. We have fixed about 1500 bugs in that period, and implemented a host of new features, workflow improvements and little bits of spit and polish.

You can read all about the new features in the release notes. Highlights are much improved tablet support on all platforms, HDR painting on Windows, improved painting performance, improved color palette docker, animation API for scripting, gamut masks, improved artistic color selector, an improved start screen that can now show you the latest news about Krita, changes to the way flow and opacity work when painting… And much more.

In the meantime, we’ve also worked hard on the manual, to bring it up to date with this release. The manual for Krita 4.1.7 can still be downloaded in epub format.

Warning: Linux users should be careful with distribution packages. We have a host of patches for Qt queued up, some of which are important for distributions to carry until the patches are merged and released in a new version of Qt.



Note for Windows users: if you encounter crashes, please follow these instructions to use the debug symbols so we can figure out where Krita crashes.


(If, for some reason, Firefox thinks it needs to load this as text: to download, right-click on the link.)


Note: the touch docker, gmic-qt and python plugins are not available on OSX.

Source code


For all downloads:


The Linux appimage and the source tarball are signed. You can retrieve the public key over https here:
. The signatures are here (filenames ending in .sig).

Support Krita

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.

May 07, 2019

Okular, KDE’s document viewer has very good support for annotating/reviewing/commenting documents. Okular supports a wide variety of annotation tools out-of-the-box (enable the ‘Review’ tool [F6] and see for yourself) and even more can be configured (such as the ‘Strikeout’ tool) — right click on the annotation tool bar and click ‘Configure Annotations’.

One of the annotation tools me and my colleagues frequently wanted to use is a line with arrow to mark an indent. Many PDF annotating software have this tool, but Okular was lacking it.

So a couple of weeks ago I started looking into the source code of okular and poppler (which is the PDF library used by Okular) and noticed that both of them already has support for the ‘Line Ending Style’ for the ‘Straight Line’ annotation tool (internally called the TermStyle). Skimming through the source code for a few hours and adding a few hooks in the code, I could add an option to configure the line ending style for ‘Straight Line’ annotation tool. Many line end styles are provided out of the box, such as open and closed arrows, circle, diamond etc.

An option to the ‘Straight Line’ tool configuration is added to choose the line ending style:

New ‘Line Ending Style’ for the ‘Straight Line’ annotation tool.

Here’s the review tool with ‘Open Arrow’ ending in action:

‘Arrow’ annotation tool in action.

Once happy with the outcome, I’ve created a review request to upstream the improvement. A number of helpful people reviewed and commented. One of the suggestions was to add icon/shape of the line ending style in the configuration options so that users can quickly preview what the shape will look like without having to try each one. The first attempt to implement this feature was by adding Unicode symbols (instead of a SVG or internally drawn graphics) and it looked okay. Here’s a screen shot:

‘Line End’ with symbols preview.

But it had various issues — some symbols are not available in Unicode and the localization of these strings without some context would be difficult. So, for now it is decided to drop the symbols.

For now, this feature works only on PDF documents. The patch is committed today and will be available in the next version of Okular.

Krita, part of KDE, takes part in the fourteenth edition of Google Summer of Code. Four students will be working on a wide variety of  projects. Here’s the shortlist:

Sharaf Zaman will be working on porting Krita to Android. In fact, he already has a port of Krita for Android that already starts on some devices! The port is still missing libraries, scripts to automate building the dependencies and Krita: the first goal of the project is have a dependable, reproducible way of building Krita for Android. Initially, we won’t do much if any work on a nice tablet GUI.

Tusooa Zhu will work on a radical change of Krita’s undo system. This will lead in the end to a history brush system and a system where you can continue from any history state of your image. This is rather a big and complex project, so it’s more like initial research into the possibilities.

Kuntal Majumder will be working on implementing a magnetic lasso selection tool for Krita. We already had a magnetic lasso tool, but that broke when we ported Krita to Qt 4 back in 2006, 2007… And we have tried once more to implement a new magnetic lasso selection tool, but that project was never finished. Third time should be the lucky time!

Alberto Eleuterio Flores Guerrero will be extending making it possible to use an SVG file as input for brush engines, so you can have an animated brush tip that can scale without loss of quality.



Note: Not a Game of Thrones fan, yet to watch even a single episode, but I wanted a catchy title This will be a story, so get prepared to be bored, ��.

Photo by Paul Brown, distributed under CC By SA license.

The GNOME and KDE communities are looking for locations for the Linux App Summit (LAS) 2019, an event that will be held sometime between September and December 2019.

The Linux App Summit is an evolution of the Libre Application Summit and has a specific focus on the creation of applications that target Linux devices. By co-hosting the conference, KDE and GNOME want to create a space for a more widespread collaboration and work towards a common goal: make the Linux application ecosystem flourish.

If you are interested in hosting LAS 2019 in your town, send us an e-mail to by May 15th with your proposed location. This will allow the organizing committee to establish contact with you and give you assistance as you put together a bid later on.

For more information on relevant deadlines, please check out the LAS website.

We look forward to hearing from you!

May 06, 2019

Update: According to some rumors, RedHat has swiftly acted and the protagonist of this story is no longer in their ranks. You still might want to read this post, though, as it was not much about facts, but opinions. :-) - 15.05.2019

Politics is hard, and when you mix politics with other, more mundane aspects of your daily life, the fight between political ideas, freedom of speech, and other principles reach such a complexity that finding clear-cut answers becomes quite hard.

Let's take for example the case, uncovered by the Ukrainian journalist Anatoly Shariy, of a RedHat employee who appears to be a Nazi sympathiser, openly posing doing the Nazi salute right in Berlin. It will be interesting to see how (and if) RedHat will react to this information; there are also other spaces to watch, given that the guy in question has been giving talks in several conferences and is a very active member of the Eclipse project.

Let's put aside the fact that in Germany exposing Nazi symbols is a crime, and let's suppose that the guy did the Nazi salute in some other place where that's not illegal; what would your reaction be, if you where the employer, or a conference organizer, or if you had some position of authority in the open source project that this guy is contributing to?

On a personal level, taking a distance from this fellow and cutting all ties would be a rather understandable step (unless, of course, you share his views); but on a professional/business level, would that be the appropriate decision? If your answer is positive, without hesitation, then this post is for you.

Showing a nice image

People have been fired or removed from their posts for much less than this, that is true. Two cases which come to mind are James Damore, fired from Google for advancing the idea that the low women representation in the IT industry might be due to some biological traits, and Brendan Eich, who ceded to pressure and resigned from its post of CEO of Mozilla after the news of his past donations to an anti-gay movement went public. I'm sure there are plenty of other similar cases out there, but these are the ones I happened to notice at the time. And I don't like how these cases ended.

While the two cases are extremely different from each other, the common denominator is that -- in my opinion -- the companies (or the person itself, in Eich's case) took a decision based exclusively at the perceived PR outcome, and not on a matter of principle. And what is worse, is that this way of handling disagreement is a great threat to freedom of speech and freedom of expression.

The world is full of racists, misoginists, homophobes, antisemitics, and, in general, of people embracing ideologies which we despise. But I'm convinced that the only way to fight these ideologies is opening a personal, one to one, dialogue with the individual in question; getting to know their background, the reasons why they came to believe in such things, and trying to find a way -- ideally, by providing yourself as a virtuous example -- to instill a doubt into their convictions, and eventually to demolish them.

The firing of someone who has expressed some non-welcome ideas acts as a threat to everyone else sharing the same views, and will lead to the result that the problem will be swept under the carpet: fire one, and you'll never know about the other dozens.

The benefits a good fight

I can imagine some of you screaming in disagreement: “But if you don't get rid of them, the whole working environment becomes poisonous: employees will no longer feel at ease (not to mention customers!)”. True, but we can take other actions, other than just fire the employee: we can actually talk. First of all, we can get him to openly state his position. It's possible (and I think this nicely applies to Damore's case) that we misunderstood what he really meant, or maybe he didn't express himself properly, or (even better) he has already changed his mind. But if that's not the case, I believe there can be a good opportunity to actually improve the situation: get people to talk.

I'm probably being naive here, but if I were the employer I would ask all the employees to report, anonymously, whether they feel comfortable continuing working with this guy. Then, organize one to one (private) meetings between this person and all his colleagues, of at least five minutes in length, and maybe repeat the whole round of conversations one more time, a couple of weeks later. And finally, get once again everyone's anonymous feedback, and draw the conclusions.

The reason why I wrote that I'm naive is because I think we'd see a clear improvement in the answers, and we'd probably contributed, if not in freeing one person from a poisonous ideology, at least in instilling some doubt.

Back to reality

Even if they read my post, I'm quite positive that RedHat will fire this guy: being in the same open source community as Google and Mozilla, the push to react in a similar way as their peers is just too strong (and that's why I condemn how the previous cases have unfolded: they traced a road which has now become too hard to avoid).

(In the specific case I confess I woudn't regret it, and -- despite all what I've written above -- I believe that firing this employee would be the proper retribuition: not for being a nazi, but because this guy had a school teacher in Ukraine fired, after he publicly accused her of showing an old soviet song to her pupils; a song that was not even about communism, and which is not at all forbidden in Ukraine!)

May 05, 2019

It’s time for your weekly dose of KDE’s Usability & Productivity initiative!

But first, I want to draw everyone’s attention to our Plasma 5.16 wallpaper competition. In addition to getting their wallpaper used as the default background for millions of users of KDE Plasma 5.16, the winner also receives a Slimbook One computer! So what are you waiting for!? Go and submit an awesome wallpaper! Here are the rules. If you’re looking for inspiration, check out the last six wallpapers:

Anyway, here’s the Usability & Productivity work:

New Features

Bugfixes & Performance Improvements

User Interface Improvements

Next week, your name could be in this list! Not sure how? Just ask! I’ve helped mentor a number of new contributors recently and I’d love to help you, too! You can also check out, and find out how you can help be a part of something that really matters. You don’t have to already be a programmer. I wasn’t when I got started. Try it, you’ll like it! We don’t bite!

If you find KDE software useful, consider making a donation to the KDE e.V. foundation.

Last year I replaced, on the Raspberry Pi, the ArchLinux ARM with just Kodi installed with LibreELEC.

Today I plugged an external disk encrypted with dm-crypt, but to my full surprise this isn’t supported.

Luckily the project is open source and sky42 already provides a LibreELEC version with dm-crypt built-in support.

Once I flashed sky42’s version, I setup automated mount at startup via the script and the corresponding umount via this way:

// copy your keyfile into /storage via SSH
$ cat /storage/.config/
cryptsetup luksOpen /dev/sda1 disk1 --key-file /storage/keyfile
mount /dev/mapper/disk1 /media

$ cat /storage/.config/
umount /media
cryptsetup luksClose disk1

Reboot it and voilà!


If you want to automatically mount the disk whenever you plug it, then create the following udev rule:

// Find out ID_VENDOR_ID and ID_MODEL_ID for your drive by using `udevadm info`
$ cat /storage/.config/udev.rules.d/99-automount.rules
ACTION=="add", SUBSYSTEM=="usb", SUBSYSTEM=="block", ENV{ID_VENDOR_ID}=="0000", ENV{ID_MODEL_ID}=="9999", RUN+="cryptsetup luksOpen $env{DEVNAME} disk1 --key-file /storage/keyfile", RUN+="mount /dev/mapper/disk1 /media"

May 04, 2019

Elisa is a music player developed by the KDE community that strives to be simple and nice to use. We also recognize that we need a flexible product to account for the different workflows and use-cases of our users.

We focus on a very good integration with the Plasma desktop of the KDE community without compromising the support for other platforms (other Linux desktop environments, Windows and Android).

We are creating a reliable product that is a joy to use and respects our users privacy. As such, we will prefer to support online services where users are in control of their data.

In the part 1 and part 2 of this series, I have talked about some new features that landed in Elisa from several contributors.

Today, I would like to introduce the beta release of the 0.4 version and more features that will be in this version.

Android Support for Music Discovery

It is a goal to have a first class support of Android in Elisa. Currently, the only thing really done is the support for discovering your music on Android.

Android provides a service a little bit similar to Baloo allowing an application to query all the music files on a device. Elisa is supporting that and a very simple interface allow to see that.

In order to have a true support, two steps need to be done:

  • Elisa should have an user interface usable on small screens (possibly leveraging Kirigami2 much more than currently) ;
  • Elisa should be separated to allow your music to continue once your device is no longer displaying the application (related to the Android services).

Help is very much welcome on this project given I currently miss enough time to make progress on this.

Support for Embedded Cover Images

The music cover images can be embedded in the metadata of a music file. Elisa is now showing them.

Screenshot_20190504_222220Same music in Elisa and in Dolphin showing embedded cover

I would like to thank Alexander Stippich who added support for that in KFileMetaData and made it so easy to add support in Elisa. It would probably be a good idea for anybody needing to query metadata for files in a Qt based application to have a look at KFileMetaData.

Easy Navigation to Album or Artist of the Currently Playing Track

In the header bar, it is now possible to navigate to the album or artist of the playing track by clicking on it (contributed by Diego Gangl). The mouse nicely changes to indicate that.

Screenshot_20190504_224004Navigating to the artist of the playing track

Beta Release

We are preparing for the next stable release. As such, there is a feature freeze and an ongoing effort to squash as many bugs as possible.

We really appreciate any feedback on the current state via We welcome bug report or feature suggestions.

You can get the next release by building from source. The windows installer is not included because the current ones are not in a releasable state (there are some platform specific code not in good shape).

For flatpak, some really nice additions to flathub has made it easy to provide builds for beta releases. The simplest way to install it is via this command:

$ flatpak install

How You Can Help

Elisa is a project that welcomes new contributors and feedback.

There are currently quite a few reported feature requests that may have to wait for a long time except if a new contributor shows up. It is really a good opportunity to contribute to a free open source project in the KDE community.

The KDE community is really a nice place to work on free and open source code.

How do you backup your phones? Do you?

I use to perform a copy of all the photos and videos from my and my wife’s phone to my PC monthly and then I copy them to an external HDD attached to a Raspberry Pi.

However, it’s a tedious job mainly because: - I cannot really use the phones during this process; - MTP works one in 3 times - often I have to fallback to ADB; - I have to unmount the SD cards to speed up the copy; - after I copy the files, I have to rsync everything to the external HDD.

The Syncthing way

Syncthing describes itself as:

Syncthing replaces proprietary sync and cloud services with something open, trustworthy and decentralized.

I installed it to our Android phones and on the Raspberry Pi. On the Raspberry Pi I also enabled remote access.

I started the Syncthing application on the Android phones and I’ve chosen the folders (you can also select the whole Internal memory) to backup. Then, I shared them with the Raspberry Pi only and I set the folder type to “Send Only” because I don’t want the Android phone to retrieve any file from the Raspberry Pi.

On the Raspberry Pi, I accepted the sharing request from the Android phones, but I also changed the folder type to “Receive Only” because I don’t want the Raspberry Pi to send any file to the Android phones.

All done? Not yet.

Syncthing main purpose is to sync, not to backup. This means that, by default, if I delete a photo from my phone, that photo is gone from the Raspberry Pi too and this isn’t what I do need nor what I do want.

However, Syncthing supports File Versioning and best yet it does support a “trash can”-like file versioning which moves your deleted files into a .stversions subfolder, but if this isn’t enough yet you can also write your own file versioning script.

All done? Yes! Whenever I do connect to my own WiFi my photos are backed up!

May 03, 2019

I have gone through several stages of this and so far nothing has stuck as ideal, but I think I am inching towards it.

To start off, I have to confess that while I love the internet and the web, I loathe having everything in the browser. The browser becoming the OS is what seems to be happening, and I hate that thought. I like to keep things locally, having backups, and control over my documents and data. Although I changed my e-mail provider(s) several times, I still have all my e-mail locally stored from 2003 until today.

I also do not like reading longer texts on an LCD, so I usually put longer texts into either Wallabag or Mozilla’s Pocket to read them later on my eInk reader (Kobo Aura). BTW, Wallabag and Pocket both have their pros and cons themselves. Pocket is more popular and better integrated into a lot of things (e.g. Firefox, Kobo, etc.), while Wallabag is fully FOSS (even the server) and offers some extra features that are in Pocket either subject to subscription or completely missing.

Still, an enormous amount of information is (and should be!) on the web, so each of us needs to somehow keep track and make sense of it :)

So, with that intro out of the way, here is how I tackle(d) this mess.

Historic overview of methods I used so far

Hierarchy of folders

As many of us, I guess, I started with first putting bookmarks in the bookmark bar, but soon had to start organising them into folders … and subfolders … and subsubfolders …and subsubsubfolders … until the screen did not fit the whole tree of them any more when expanded.


  • can be neat and tidy
  • easy to sync between devices through e.g. Firefox Sync


  • can become a huge mess, once it grows to a behemoth
  • takes several clicks to put a bookmark into the appropriate (sub)folder

Then I decided to keep it flat and use the Firefox search bar to find what I am looking for.

To achieve that, when I bookmarked something, I renamed it to something useful and added tags (e.g.: shop, tea; or python, sql, howto).

This worked kinda OK, but a big downside is that there is a huge amount of clutter which is not easy to navigate and edit once you want to organise all the already existing bookmarks. The bookmark panel is somewhat helpful, but not a lot.


  • easy to search
  • easy to find a relevant bookmark when you are about to search for something through the combined URL/search bar
  • easy to sync between devices through e.g. Firefox Sync


  • your search query must match the name, tag(s), or URL of bookmark
  • hard to find or navigate other than searching (for name tag, URL)


Several years after that, I learnt about OneTab from an onboarding website of a company I applied to (but did not get the job). The main promise of it is to loads of open tabs into (simple) organised lists on a single page. And all that with a single click (well, two really).

This worked wonders for (still does) for decluttering my tab list. Especially when grouped with Tree Style Tabs, which I very warmly recommend trying out. Even if it looks odd and unrully at first, it is very easy to get used to and helps organise tabs immensely. But back to OneTab…

The good side of OneTab is that it really helps keep your tab bar clean and therefore reduces your computer’s resource usage. It is also super for keeping track of tabs that you may (or maybe not) need to open again later, as you can (re)open a whole group of “tabs” with a single click.

As a practical example, let us say I am travelling to Barcelona in two months. So I book flights and the hotel, and in the process also check out some touristy and other helpful info. Because I will not be needing the touristy and travel stuff for quite some time before the trip, I do not need all the tabs open. But as it is a one-off trip, it is also silly to bookmark it all. So I send them all to OneTab and name the group e.g. “Barcelona trip 2019”. If I stumble upon any new stuff that is relevant, I simply send it to the same Named Group in OneTab. Once I need that info, I either open individual “tabs” or restore the whole group with one click and have it ready. An additional cool thing is that by default if you open a group or a single link “tab” from OneTab, it will remove it from the list. You can decide to keep the links in the list as well.

In practices, I still used tagged bookmarks for links that I wanted to store long-term, while depending on OneTab for short- to mid-term storage.


  • great for decluttering your tabs
  • helps keep your browser’s resource usage low
  • great for creating (temporary) lists of tabs that you do not need now, but will in the future
  • can easily send a group of “tabs” with others via e-mail


  • no tags, categories or other means of adding meta data – you can only name groups, and cannot even rename links
  • no searching other than through the “webpage” list of “tabs”
  • as the list of “tabs”/bookmarks grows, the harder it is to keep an overview
  • cannot sync between devices
  • (proprietary plug-in)

Worldbrain’s Memex

About two months ago, I stumbled upon Worldbrain’s Memex through a FOSDEM talk. It promises to fix bookmarking, searching, note-taking and web history for you … which is quite an impressive lot.

So far, I have to say, I am quite impressed. It is super easy to find stuff you visited, even if you forgot to bookmark it, as it indexes all the websites you visit (unless you put tell Memex to ignore that page or domain).

For more order, you can assign tags to websites and/or store them into collections (i.e. groups or folders). What is more, you can do that even later, if you forgot about it the first time. If you want to especially emphasise a specific website, you can also star it.

An excellent feature missing in other bookmarking methods I have seen so far is that it lets you annotate websites – through highlights and comments and tags attached to those highlights. So, not only can you store comments and tags on the websites, but also on annotations within those websites.

One concern I have is that they might have taken more than what they can chew, but since I started using it, I have seen so much progress that I am (cautiously) optimistic about it.


  • supports both tags and collections (i.e. groups)
  • enables annotations/highlights and comments (as well as tags to both) to websites
  • indexes websites, so when you search for something it goes through both the website’s text, as well as your notes to that website and, of course, tags
  • starring websites you would like to find more easily
  • you can also set specific websites or domain names to be ignored
  • it offers quite an advanced search, including limiting by data ranges, stars, or domains
  • when you search for something (e.g. using DuckDuckGo or Google) it shows suggested websites that you already visited before
  • sharing of annotations and comments with others (as long as they also have Memex installed)
  • for annotations it uses the W3C Open Annotation spec
  • stores everything locally (with the exception of sharing annotations via a link, of course)


  • it consumes more disk space due to running its own index
  • needs an external app for backing up data
  • so far no syncing of bookmarks between devices (but it is in the making)
  • so far it does not sync annotations between different devices (but both mobile apps for iOS/Android, and Pocket integration are in the making)

Status quo and looking at the future

I currently have still a few dozen bookmarks that I need to tag in Memex and delete from my Firefox bookmarks. And a further several dozen in OneTab.

The most viewed websites, I have in the “Top Sites” in Firefox.

Most of the “tabs” in OneTab, I have already migrated to Memex and I am looking very much forward to trying to use it instead of OneTab. So far it seems a bit more work, as I need to 1) open all tabs into a tab tree (same as in OneTab), 2) open that tab tree in a separate window (extra step), and then 3) use the “Tag all tabs in window” or “Add all tabs in window” option from the extension button (similar as in OneTab), and finally 4) close the tabs by closing the window (extra step). What I usually do is to change a Tab Group from OneTab to a Collection in Memex and then take some extra time to add tags or notes, if appropriate.

So, I am quite confident Memex will be able to replace OneTab for me and most likely also (most) normal bookmarks. I may keep some bookmarks of things that I want to always keep track of, like my online bank’s URL, but I am not sure yet.

The annotations are a god-send as well, which will be very hard to get rid of, as I already got used to them.

Now, if I could only send stuff to my eInk reader (or phone), annotate it there and have those annotations auto-magically show up in the browser and therefore stored locally on my laptop … :D

Oh, oh, and if I could search through Memex from my KDE Plasma desktop and add/view annotations from other documents (e.g. ePub, ODF, PDF) and other applicatios (e.g. Okular, Calibre, LibreOffice). One may dream …

hook out → sipping Vin Santo and planning more order in bookmarks

P.S. This blog post was initially a comment to the topic “How do you organize your bookmarks?” in the ~tech group on Tildes where further discussion is happening as well.

May 02, 2019

I am glad to announce the availability of KBibTeX 0.9 Beta 2 (0.8.91) for download. Whereas Beta 1 had some issues and was never formally announced, Beta 2 is quite stable and ready to use for everyone able to compile and install from a tar-ball and willing to test code.

Read more... )

The source code in tar-ball form is available at KDE's download infrastructure:
Signed with GnuPG: (key: 1808CB466328F4380685A3B1A264FD738D861F41)

Unless there are severe issues, I plan to make a final release of 0.9 in early summer.

KBibTeX towards 0.10

The current master code contains a number of changes due for 0.10, such as refactored preferences/settings system and better integration to GitLab's CI system both to run automated tests as well as to run a Coverity Scan, among others. If you want to test some bleeding edge, pull the code from KDE's Git repository.

comment count unavailable comments

Thanks to the hard work of Ivan Yossi and KDE system admin Ben Cooksley, we’ve got nightly builds for macOS now! (We already had nightly builds for Linux and 64 bit Windows).

Nightly builds are created once a day from the freshest code in our git repository. They are a great way to track development: see the latest features taking shape and enjoy the latest bug fixes. And the newest bugs as as well, of course: nightly builds are not meant to be used for production work.

Note that the macOS nightly builds are not signed: Apple’s expensive and idiosyncratic ideas about how binaries should be signed mean that KDE as an organization cannot sign binaries, so the Krita maintainer, Boudewijn Rempt, has to do that with his personal developer certificate, on his personal Macbook Pro, and that would add a manual step to the process.

So, if you want to run the nightly builds, you have to drag the app bundle somewhere and double-click You will get a warning dialog which you can close. Then go to the system settings app, select the Security and Privacy page. In the General tab there will be a message “ was blocked from opening because it is not from an identified developer.” Click on “Open Anyway” and enjoy!


After 1.5 years in development I would like to announce a new version of KDE Partition Manager and KPMcore library.

The main highlight of this release is that GUI does not need to run as root user. Instead we use KAuth framework (note that in the future we plan to use lower level Polkit API directly but this work is not started yet). GUI runing as unprivileged user also makes our Wayland port work perfectly fine. As part of porting Partition Manager to KAuth we also did the following ports:

  • KPMcore backend was ported away from libparted to sfdisk (part of util-linux). Many thanks to util-linux maintainer Karel Zak who promptly fixed most of the sfdisk bugs that I noticed during porting.
  • Caio Jordão Carvalho ported S.M.A.R.T. code away form unmaintained libatasmart to smartmontools.

These two ports make KPMcore and KDE Partition Manager more portable. In the near future we might see port to FreeBSD.

Other changes include:

  • Better support for LUKS2. Now we can resize LUKS2 containers as long as they don’t use advanced features like dm-integrity. At the moment KDE Partition Manager still creates LUKS1 encrypted partitions (LUKS2 creation is not exposed in the GUI) but KPMcore has code to create LUKS2 encrypted partitions, so other users of KPMcore library (like Calamares installer) will be able to implement LUKS2 creation using KPMcore 4.0.
  • Detection support for Apple’s APFS filesystem and Microsoft’s Bitlocker.
  • Many of the KPMcore classes now use d-pointers, which in the future releases will help us to maintain binary compatibility (ABI) a bit better.
  • We now use more modern C++ features. This won’t be visible to users but it’s always good to have a more maintainable codebase.
  • Some bugfixes, in particular related to LVM.

List of all changes can be found in commit log at


Become a patron Donate using Liberapay Bitcoin: bc1qe2dfqjwgse5v6cl6rhtk352ru90t0hnve45f2c

May 01, 2019

The KDE PIM community has been working hard in March and April to fix various bugs and bring new features and improvements to Kontact, Itinerary and other KDE PIM projects. Here is a summary of some of the changes that landed in the past two months.

KDE PIM Sprint

The team has met for a weekend for a traditional spring PIM sprint in Toulouse at the beginning of April. We focused on solving some long-standing issues in Akonadi, prepared some of the KDE PIM libraries to be moved to KDE Frameworks and discussed outreach and how to attract more people to KDE PIM.

You can read David’s report from the sprint.


KMail has received a nice batch of bugfixes for the KDE Applications 19.04 release as well as some small features, which will be available in the 19.08 release.

Improvements and New Features

The email composer has received improvements to support UTF-8 emojis (Laurent Montel, KDE Applications 19.08) and to support composing rich-text emails using Markdown with syntax highlighting (Laurent Montel, KDE Applications 19.08).

Additionally, notification when sending email fails is now less intrusive (Laurent Montel, KDE Applications 19.08).


  • Fixed crash on shutdown due to mishandling of QWebEngineProfile (Jonathan Marten, D19559)
  • Fixed reconnecting to IMAP server when connection is lost during login (David Faure, D20028)
  • Fixed identity not appearing after creation (Laurent Montel, bug 391631)
  • Fixed deleting spam messages (Laurent Montel, bug 406324)
  • Fixed custom header search query failing with inconclusive error (Laurent Montel, bug 405456)
  • Fixed trying to send a message without any recipients fails quitely (Laurent Montel, bug 402577)
  • Fixed a crash switching on an ad-blocked (Laurent Montel, bug 405434)
  • Fixed a crash when opening a vCard attachment (Laurent Montel, bug 405791)


During the PIM sprint, Volker Krause did a major work on cleaning up KCalCore, a library that implements the iCal standard to store events and tasks information, so that the library can be moved to KDE Frameworks. You can read more about Volker’s effort in his blog post.

New Features and Improvements

It is now possible to move event from one calendar to another in KOrganizer by changing the calendar in the incidence editor (David Faure, KDE Applications 19.08).


Volker also worked on preparing the KContacts library, a vCard standard implementation, to be moved to KDE Frameworks alongside KCalCore. You can read about this on his blog as well.


As part of his code cleanup, Volker has removed the DataMatrix from contact display, so we only display the QR code now (Volker Krause, KDE Applications 19.08), and did massive clean up of the contact display code. When displaying contact address on a map, KAddressBook now defaults to OpenStreetMaps (Volker Krause, KDE Applications 19.08).

Thanks to Laurent Montel it is now also possible to send SMS messages from KAddressBook through KDE Connect (KDE Applications 19.08).


  • Fixed dialing contact’s phone-number from KAddressBook through KDE Connect (Volker Krause, D20353)



  • Make the feed URI the baseUrl for article previews (Pierre Ducroquet, D19739)
  • Fixed Delete key not working after using search (Laurent Montel, bug 394946)

Common Infrastructure


David Faure and I have spent large part of the PIM sprint investigating and digging into two major issues we currently have in Akonadi: database deadlocks and a bug known as “multiple merge candidates”. We were unable to determine the real cause for the “multiple merge candidates” bug, so it remains unfixed for now. As a result of digging through the code base, however, David has produced a set of patches to hugely improve handling of database deadlocks and transaction rollbacks in the Akonadi server. He also did improve the sync scheduling code. I have removed a large chunk of code by removing mostly unused code to handle Collection references and LDAP/Kolab contact merging.

New Features

  • LibKGAPI: support for Team Drives API for Google Drive (David Barchiesi, T10521)
  • KItinerary: support for parsing train booking from SNCF confirmation emails (Volker Krause, bug 404451)


  • Akonadi: fixed sync getting stuck after failure (David Faure, D19487, bug 399167)
  • Akonadi: fixed race conditions in Attribute handling (David Faure, D19556, D19632)
  • Akonadi: fixed crash when in resources when handling a collection change (Daniel Vrátil, bug 403642)
  • Akonadi: fixed crash when an Akonadi client unexpectedly disconnects from the server (Filipe Azevedo, D19983)

Help us make Kontact even better!

Take a look at some of the junior jobs that we have! They are simple, mostly programming tasks that don’t require any deep knowledge or understanding of Kontact, so anyone can work on them. Feel free to pick any task from the list and reach out to us! We’ll be happy to guide you and answer all your questions. Read more here…

April 30, 2019

Craft: Platforms and Compiler

While my last post was still about the new cache and which compilers we should support, the pre built binaries for Craft (the cache) are now 2 years old. They are used for continues integration and to speed up user builds.

We now provide binaries for Windows, MacOS and Linux.

With the cache we now even provide dmg images for MacOS.
Here a bit more about the relative new Mac support Interview: How KDE Craft Improves the ownCloud Client Build Process

Which compilers to support

The last time I wrote, I ask you for which platforms we should provide a cache.
Currently we are providing caches for windows-msvc2015_64, windows-msvc2017_32, windows-msvc2017_64, windows-mingw-w64-gcc-8.1.0_64, osx_appleclang_64, linux-gcc_64.

Maintaining all those configurations on Windows became a burden, also in the sense that our builder are running out of space.

And with the recent release of Visual Studio 2019 it became even bigger.

Discontinue caches for msvc2015 and reduced support for 32bit

With the arrival of Visual Studio 2019 we now plan to stop providing caches for msvc2015, and reduce the cache for msvc2017_32 to Qt and KDE Frameworks only. This will also mean that we will discontinue 32bit installers on BinaryFactory.
If you still depend on msvc2015, we suggest you to set up your own cache.
As usual we'll branch Craft before the release of the new cache and try to maintain the last build based on Qt 5.12.2 for a bit longer. 

You have no idea what Craft is?

Craft helps you building and package your application and all its dependencies on Windows Mac and Linux.

 Start Crafting now!

I recently made a trip to LLVM in Brussels and ACCU in Bristol. It was a busy week. I gave a talk at both conferences on the topic of the future of AST Matchers-based refactoring.

As usual, the ‘hallway track’ also proved useful at both conferences, leading to round-table discussions at the LLVM conference with other interested contributors and getting to talk to other developers interested in refactoring tooling at ACCU.


The learning curve for AST-Matcher-based refactoring is currently too steep. Most C++ developers who are not already familiar with the internal Clang APIs need to invest a lot in order to learn how to make such bespoke tooling to improve and maintain their codebase.

The presentations both include demos of steps I’ve been taking to try to address these problems.

The first demo is of clang-query discovery features which aim to reduce the need to infer AST Matcher code by examining the Clang AST itself. I also showed the debugging features I am preparing to upstream to clang-query. Finally – in terms of demo content – I showed a Qt tool which can eliminate some of the additional difficulties and problems of long-developer-iteration-time.

The debugging features and the Qt tool were world exclusives at the LLVM conference (and at the ACCU conference because most people didn’t attend both �� ). I hadn’t shown them to anyone else before, so I was quite happy the demos went well.


My 25 minute presentation to the LLVM developers tried to show that these changes can make mechanical refactoring more easily available to C++ developers.

The aim was to show the features to the LLVM community to

  1. illustrate the issues as I see them
  2. get some feedback about whether this is a good direction
  3. introduce myself for the sake of further code reviews (and collaborators). As this was my first LLVM conference, I am not already familiar with most of the attendees.

My 1.5 hour ACCU presentation is a far-less-rushed presentation of the same tools and a repetition of some of the content at code::dive 2018. In the ACCU presentation, the new demo content starts about 30 minutes in. This talk is the one to watch if you are interested in using mechanical refactoring on your own code.

Feedback was very positive from both talks, so I’m happy with that.

Qt Tooling

Earlier this year I refactored the clang AST dump functionality. It was previously implemented in one class, ASTDumper, which had the dual responsibilities of traversing the clang AST and creating a textual representation of it. I separated the textual output from the generic output independent traversal, which introduces the possibility of alternative output formats such as JSON.

Of course, given my KDE and Qt contribution history, I would only create a generic tree traversal class in order to implement QAbstractItemModel for it.

The demos show all of the features you would expect from a point-and-click refactoring tool including exploring, feature discovery, debugging with in-source feedback, live source updates, experimental refactoring etc.

Of course, all of this requires changes to Clang upstream (for example to add the debugging interface) which was the point of my visit to EuroLLVM. Hopefully, once enough of the changes are upstream, I’ll be able to open source the tool.

The idea as always is to hopefully have enough functionality in Clang itself that IDEs such as Qt-Creator, KDevelop and Visual Studio would be able to integrate these features using their own GUI APIs, making the simple tool I made obsolete anyway. I only made it for demo purposes.

This will take the mechanical refactoring workflow which is currently

and turn it into

You will still do the same things, but with much faster development iteration to achieve the same result.

There is even more that can be done to make the process of mechanical refactoring with clang easier and faster. We discussed some of that at EuroLLVM, and hopefully all the pieces can come together soon. Meanwhile I’ll be upstreaming some of this work, talking at NDC Oslo, and at my local meetup group on this topic.

April 29, 2019

FernsprechamtEntrance to the sprint location

Our three main goals for the general direction we want to take KDE in the next couple of years are: Top-notch Usability and Productivity for Basic Software, Streamlined Onboarding of New Contributors, as well as Privacy Software. The first sprint dedicated to one of our goals, Privacy Software, took place in March in the City of Leipzig. It took place in the former “Fernsprechamt” (telephone exchange), quite a fitting location when it comes to privacy, isn’t it?

Microphone Indicator

One of the features I worked on was a microphone tray icon indicating when the microphone is in use with an easy way to mute/unmute it by middle clicking as well as change the recording volume using the mouse wheel, just like you can with the volume icon.

Microphone indicator tooltip, "Microphone: Chrome input is using the microphone"Microphone indicator showing that Chrome is recording

I had wanted this feature for quite some time but originally I had planned to add it to the task bar complementing our handy little audio indicator. However, when mapping a window to an application or audio stream fails, no indicator would be shown whatsoever. For some reason it occurred to me only during the privacy sprint that I could instead just use a global status icon which isn’t tied to a specific window.

Task bar showing a browser window with audio icon indicating the application is currently playing audioOne of Plasma’s many little productivity helpers: see at a glance who’s distracting you by playing audio

Not only is it a useful privacy tool, it also makes conference calls less painful since as soon as you join you can easily see that your microphone might be muted without having to open the volume applet first.

Notification Inhibitions

I also worked on the notification system and sent a proposal for a Notification Inhibition DBus procotol to the freedesktop mailing list. It will enable applications to suppress notifications similiar to how they can disable the screen saver or standby mode. Applications like Okular, LibreOffice Impress, or OBS could then use this interface to disable notifications to avoid a potential privacy invasion when a chat message comes in while giving a presentation or live streaming.

More details on what you can expect from notifications in future Plasma releases will come in a future blog post.

Could you tell us something about yourself?

Hello! I go by Zan or Locke and I’m a self-taught tradigital artist with a love for fantasy and science-fiction focused art. I got hooked by fairy tales as a child and I’m still head over heels for narrative illustration.

Do you paint professionally, as a hobby artist, or both?

Currently I’m working to jump the gap between hobby artist and professional. I’ve been creating commission pieces since I was a teenager for various friends, acquaintances, and family members, but I’ve only recently decided to focus on commission work as an income.

What genre(s) do you work in?

I’m open to anything that involves the creation of a piece of art that didn’t exist before, but my true loves are fantasy and sci-fi illustration. I’ve always been a huge reader and I love how art can augment writing and vice-versa. I have several projects I’m tinkering with that revolve around an old-style text and illustration format because it seems to work better for my partner and me than the graphic novel/comic book style.

Whose work inspires you most — who are your role models as an artist?

Growing up I was in awe of Frank Frazetta, Boris Vallejo and Syd Mead. Then I moved on to loving the Hildebrandts, Royo, Michael Whelan, and Brom. When I started getting into comics, I fell in love with the art of Drew Hayes (Poison Elves), Chris Bachelo (Sandman/Shade the Changing Man), and Glyn Dillon (Egypt/Vertigo). More recently I’ve really been enjoying art by Katherine Lang (Soul to Call), Hamlet Machine (NSFW), and about a thousand absolutely brilliant artists of various styles that I follow on Twitter.

How and when did you get to try digital painting for the first time?

I think it was around 1999 when I ran across a tablet and the SmartSketch art program bundle in a little electronics store in the local mall. I took it home and loaded it up and was probably expecting way more than I actually got, but it was still amazing. The stylus made all the difference from the few sad attempts I’d made with a mouse at drawing something recognizable.

What makes you choose digital over traditional painting?

I still work in both mediums, but digital has become the standard for the simple reason of ease of use. I have severe rheumatoid and osteo arthritis, which often makes traditional art impossible. I also have limited space, which makes carting around a ton of supplies unlikely. Digital art gives me access to all the program tools and the ability to easily fix mistakes, add line-smoothing when my hands are really acting up, and I don’t have to worry about affording or storing any extra supplies. Plus there are just things you can do with digital art that are impossible with traditional methods, including the ability to work with so many layers, save different colors and iterations of a base piece, and use specialty brushes that just don’t exist in the real world.


How did you find out about Krita?

I’ve been hearing about Krita for a long time and desperately wanting to try it, but, as a Mac user I didn’t have access to the program until it became available at the end of last year. I went and downloaded it as soon as I found out there was a Mac version.

What was your first impression?

My first impression was extremely positive. Over the years, I’ve used SmartSketch, PhotoShop, AutoDesk, Manga Studio 1-4, ArtRage 1-5, Pixelmator, Inkscape, Illustrator, and most recently Affinity Designer. Krita held its own against all of them for the types of art I usually do and even outdistanced most of them in terms of available brushes and capabilities.

What do you love about Krita?

There are so many things, but the most important is that I forget I’m even using a program. I open Krita and go to work and it’s fast and it feels like art. I think I’ve created more finished works in the few months since I downloaded Krita than I have in all the other programs combined over a timeframe of several years. Krita keeps track of the recent colors I’ve used, which is hugely helpful. The preview window lets me keep an eye on the picture as a whole even when I’m zoomed in on detail work. The interface is very intuitive and easy to use. It has a great selection of brushes right off the bat. Also, Krita doesn’t overheat my computer as badly as the other graphic art programs I use. I’m trying to work on ten year old equipment and that makes a huge difference in my ability to keep making art.

What do you think needs improvement in Krita? Is there anything that really annoys you?

I think most of the minor problems I have with Krita are probably due to my own ignorance. I’m still trying to learn the ins and outs of digital art and how to do things. Occasionally the tools/brushes stop responding, but I’ve found that if I lift the stylus up just enough to disengage, then go back it usually solves that problem. It’s sometimes frustrating that tools don’t keep their settings if you click off them then back during a drawing session, but it certainly hasn’t slowed me down much.

What sets Krita apart from the other tools that you use?

Krita is the only art program I’ve ever used that feels like it was made by artists for artists. It is definitely the only art program where I consistently forget about the interface for huge sections of time. That ability to just immerse in the process keeps me going back to Krita over and over again even when I feel like another program has a particular feature I’d prefer to use.

If you had to pick one favourite of all your work done in Krita so far, what would it be, and why?

My current favorite is a recent illustration commission showing an oak tree and the Faery being magically bound to it. It’s based on the M.A. Raye short story “Invisibly Yours” and it was both the biggest challenge and biggest delight I think I’ve ever experienced in digital painting. I kept wishing my mum was alive so I could show her my progress.

What techniques and brushes did you use in it?

I mostly used the two Chrome brushes that I’ve been loving for my more abstract work lately and the Glaze brush for the majority of the piece. Those are the three brushes I seem to be getting the most use out of.

Where can people see more of your work?

I can be found on Twitter @LockeDrachen and most of my recent work can be seen on my shared patreon accounts: and I post new material weekly and Patron only posts become free to public view after a month.

Anything else you’d like to share?

Krita is amazing and I recommend it to everyone, whether they’re beginners or professional artists.

April 28, 2019

The Language Server Protocol (LSP) allows the integration of stuff like code completion, jump to definition, symbol search and more into an application without manual re-implementation for each language one wants to support. LSP doesn’t fully allow an integration like KDevelop or Qt Creator do with the libclang based tooling aimed for C/C++ but on the other side offers the possibility to interface with plenty of languages without a large effort on the client side.

If one takes a look at some current LSP clients list, a lot of editors and IDEs have joined the LSP family in the last years.

In the past I was always scared away to start implementing this in Kate, as no readily available library was around to do the low-level work for the client. Whereas you get some reference stuff for the JSON based protocol for JavaScript and such, for Qt nothing was around.

Fortunately Qt Creator started to implement an LSP client beginning with the 4.8 release.

Based on this code, I started now to get this into the Kate project plugin. At the moment not much more has happened then some initial import of the Qt Creator LSP infrastructure code into the Kate lsp branch.

If I get this working (help is welcome!), any improvements will be submitted back to the Qt Creator implementation. If it really starts to work well in Kate, one might think about some better code sharing in the long term. But before such plans, first at least some basic things must work for some initial language server like clangd.

Older blog entries

Planet KDE is made from the blogs of KDE's contributors. The opinions it contains are those of the contributor. This site is powered by Rawdog and Rawdog RSS. Feed readers can read Planet KDE with RSS, FOAF or OPML.