Language Selection

English French German Italian Portuguese Spanish

Kde Planet

Syndicate content
Planet KDE -
Updated: 4 hours 36 min ago

Kaidan 0.4.0 released!

Monday 8th of July 2019 01:00:00 PM

It’s finally here!

After more than one and a half years there finally is a new release. Kaidan 0.4.0 is the biggest update until now and apart from some bug-fixes and many minor and major features increasing the usability, Kaidan now has multiplatform-support for all common operating systems like Linux, Windows, Android and macOS.

But have a look at the changelog yourself:


Build system:

  • Support for Android (ilyabizyaev)
  • Support for Ubuntu Touch (jbb)
  • Support for macOS (ilyabizyaev)
  • Support for Windows (ilyabizyaev)
  • Support for iOS (ilyabizyaev)
  • Add KDE Flatpak (jbb)
  • Switch Android builds to CMake with ECM (ilyabizyaev)
  • Improve Linux AppImage build script (ilyabizyaev)
  • Add additional image formats in AppImage (jbb)

New features:

  • Show proper notifications using KNotifications (lnj)
  • Add settings page for changing passwords (jbb, lnj)
  • Add XEP-0352: Client State Indication (gloox/QXmpp) (lnj)
  • Add media/file (including GIFs) sharing (lnj, jbb)
  • Full back-end rewrite to QXmpp (lnj)
  • Implement XEP-0363: HTTP File Upload and UploadManager for QXmpp (lnj)
  • Use XEP-0280: Message Carbons from QXmpp (lnj)
  • Use XEP-0352: Client State Indication from QXmpp (lnj)
  • Check incoming messages for media links (lnj)
  • Implement XEP-0308: Last Message Correction (lnj, jbb)
  • Make attachments downloadable (lnj)
  • Implement XEP-0382: Spoiler messages (xavi)
  • Kaidan is now offline usable (lnj)
  • Kaidan is able to open xmpp: URIs (lnj)
  • New logo (ilyabizyaev)
  • Show presence information of contacts (lnj, melvo)
  • Add EmojiPicker from Spectral with search and favorites functionality (jbb, fazevedo)
  • Highlight links in chat and make links clickable (lnj)
  • New about dialog instead of the about page (ilyabizyaev)
  • Add image preview in chat and before sending (lnj)
  • Send messages on Enter, new line on Ctrl-Enter (ilyabizyaev)
  • ‘Add contact’ is now the main action on the contacts page (lnj)
  • Elide contact names and messages in roster (lnj)
  • Chat page redesign (ilyabizyaev)
  • Display passive notifications when trying to use online actions while offline (lnj)
  • Automatically reconnect on connection loss (lnj)
  • Contacts page: Display whether online in title (lnj)
  • Add different connection error messages (jbb)
  • Use QApplication when building with QWidgets (notmart)
  • Ask user to approve subscription requests (lnj)
  • Remove contact action: Make JIDs bold (lnj)
  • Add contact sheet: Ask for optional message to contact (lnj)
  • Add empty chat page with help notice to be displayed on start up (jbb)
  • Redesign log in page (sohnybohny)
  • Add Copy Invitaion URL action (jbb)
  • Add ‘press and hold’ functionality for messages context menu (jbb)
  • Add copy to clipboard function for messages (jbb)
  • Add mobile file chooser (jbb)
  • Highlight the currently opened chat on contacts page (lnj)
  • Remove predefined window sizes (lnj)
  • Use new Kirigami application header (nicofee)
  • Make images open externally when clicked (jbb)
  • Use QtQuickCompiler (jbb)
  • Display upload progress bar (lnj)
  • Add text+color avatars as fallback (lnj, jbb)
  • Remove diaspora log in option (lnj)


  • Forget passwords on log out (lnj)
  • Append four random chars to resource (lnj)
  • Save passwords in base64 instead of clear text (lnj)
  • Generate the LICENSE file automatically with all git authors (lnj)
  • Store ubuntu touch builds as job artifacts (lnj)
  • Add GitLab CI integration (jbb)


  • Fix blocking of GUI thread while database interaction (lnj)
  • Fix TLS connection bug (lnj)
  • Don’t send notifications when receiving own messages via. carbons (lnj)
  • Fix timezone bug of message timestamps (lnj)
  • Fix several message editing bugs (lnj)
  • Fix black icons (jbb)
  • Fix rich text labels in Plasma Mobile (lnj)
  • Small Plasma Mobile fixes (jbb)

Bug reports go to our issue tracker as always and translations are managed on Weblate.


PS: We’re searching for someone with an iPhone who can build & test Kaidan for iOS: contact us!

Interview with Enrique Gan

Monday 8th of July 2019 09:46:11 AM
Could you tell us something about yourself?

My name is Enrique Gan. I live in California and I’m currently a computer science student.

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

I’m definitely just a hobbyist artist but I’d like to start making money eventually. But, it’s been a while since I studied art for an extended period of time but I’d like to get back into it.

What genre(s) do you work in?

I like concept art and anime a lot, but I like to try out different genres and see what I can learn from each one.

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

When I first committed a lot of my time to art, it was in 2014 and it was coincidentally also the time when I found a youtube channel of an artist named Sinix. I always thought art was for geniuses only, but after learning about Sinix and his art, I was convinced that anyone can be an artist. His work didn’t conform completely to mainstream appeal but I was profoundly captivated by how he draws. Other artists I like included Sachin Teng, Andrew Hem, Kim Jung Gi, Shirow Miwa, Richard Schmidt, and countless others.

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

I tried digital painting later in 2014 when I heard that GIMP was a free program and that some artists like CT Chrysler used it. So I tried it out with a mouse but I couldn’t do much with it because I was still pretty new to digital painting.

What makes you choose digital over traditional painting?

It lets me store a lot of paintings and export with ease. Also, it’s a lot cheaper since I already have a computer and an entry level graphics tablet isn’t too expensive compared to buying a lot of paint.

How did you find out about Krita?

Sycra Yasin posted a video showcasing Krita back in 2013 and I ended up trying it out some time in the summer of 2015. I think I got my first and current drawing tablet a month after and started churning out digital art with Krita since.

What was your first impression?

It was a lot more art orientated than GIMP was and it looked very professional like Photoshop.

What do you love about Krita?

I really like the brush engine and I’m really impressed that software of this quality is completely free and open source. I’ve always had a soft spot for open source.

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

I think there are some UI things that confuse just me because I never really read the manual aside from the brush making portion. I don’t think I do anything wild either so I haven’t had the opportunity to find many bugs.

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

It’s free and is catering towards artists. Other free art programs are very simple or restrained but Krita is the whole package.

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

I’ve really liked some of my more recent work like the red girl portrait I did.

What techniques and brushes did you use in it?

I use the most basic brushes imaginable. This includes a horizontal flat brush that doesn’t rotate, and another one that rotates. Sometimes I paint with a circle brush that has opacity on pressure. Recently I started using a simple color blending brush called the palette knife. It comes with Krita by default..

Where can people see more of your work?

I have an instagram, twitter, and artstation all under the name pitganart, as well as a website called I also have a twitch account where I stream often called PitEG.

Anything else you’d like to share?

I’m really happy to have been interviewed

Kate LSP Client Restart

Sunday 7th of July 2019 01:10:00 PM

Since my last post about the LSP client progress in May I didn’t work on that project at all I think.

But the good news is, somebody else did scratch that itch on his own ;=)

We have now a prototype plugin in kate.git master, see lspclient in the addons directory.

It is not compiled per default, you can turn it on via:

cmake -DCMAKE_INSTALL_PREFIX=“your prefix” -DENABLE_LSPCLIENT=ON “kate src dir”

It shares no code with my initial prototype. The author started this without knowing of my work. This might actually be not that bad, as this plugin is composed of a much smaller code base. This allows to get familiar with the code easier as with the code I copied over from Qt Creator for my initial try.

But, even nicer, it does actually work a lot better than my variant, already now!

What does work (tested with clangd and kate.git/work projects) at the moment:

  • Auto completion: you get the proper LSP server provided completion items

  • Outline view: Get an extra tool view with the symbols of your current view

  • Document highlight: highlight all occurrences of a variable/… inside the current view

  • Code navigation: jump to the definition/declaration

There is still a lot of stuff missing and this is all prototype quality. For example the document highlight implementation I added has no way to clear the highlighting at the moment beside document reload.

But given I just needed one hour to add the document highlight support, I would say the code base is easy to adjust.

=> If you have time and want a good LSP client, now you can join the fun and have direct results.

As the author was kind enough to move his work on the plugin to the KDE infrastructure, feel welcome to show up on and help out! All development discussions regarding this plugin happen there. We are happy to accept patches, too, if you are a new contributor!

KDE Usability & Productivity: Week 78

Sunday 7th of July 2019 04:01:57 AM

It’s time for week 78 in KDE’s Usability & Productivity initiative! This week I think people have been taking a breather following a super intense sprint, and some are even on vacation–myself included. So this week’s report is going to ba a bit light, but it’s still got a few cool goodies!

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 tax-deductible donation to the KDE e.V. foundation.

I am going to Akademy 2019!

Sunday 7th of July 2019 02:48:18 AM

This year I will be going to my second Akademy to meet my KDE friends again, discuss about future plans for the community during BoF sessions, participate in workshops, code and learn more about free software, KDE projects and Qt! One more interesting thing is that this time I am going to present a talk … Continue reading I am going to Akademy 2019!

A week in Valencia

Friday 5th of July 2019 09:52:15 AM

From 19th to 25th of June, all the Plasma team gathered in Valencia, graciously hosted by the Slimbook people in their office. This was a special sprint, as it was co-located with the Usability sprint together with some VDG members. While some of the time each team was occupied in their own discussions, there were a big margin of overlap, allowing us to have a lot of discussions about the design and usability of our beloved Plasma desktop shell.

We now have plans in the coming months for several improvements across the board, including further improvements on the new shiny notification framework by Kai Uwe.

Also, we talked (and worked on) plans for further improving our Wayland support, including middle mouse button clipboard, and screen rotation for phone, tablets and 2 in 1 laptops).

On my end, a big part of this sprint was dedicated to an encompassing plan to refactor and redesign how desktop plasmoids work and are managed. I had there both UI discussions with the VDG and loong coding sessions on it.

The Desktop/FolderView containments use a big infrastructure written in Javascript which has some problems and isn’t touched much since a lot of time.

Some time ago I set myself the task of making the management of desktop plasmoids more touchscreen-friendly, so i started modifying that code, until.. I started to design a complete reimplementation written in C++

This new implementation is much more robust, is faster and a bit leaner on the memory. Most important, is now a separate QML plugin, so is not anymore an implementation internal in the standard desktop, but if somebody wants to write his/her own containment for personalized plasma shells (for instance for a particular embedded device which is not a traditional desktop/laptop: we want plasma more and more usable as a set of construction blocks for the main UI of any kind of device).

In fact, it’s planned for Plasma Mobile to use the same layout manager component, to make the user experience “similar but different” and have less code duplication, while maintaining the UI very distinct between the two very different device types.

UI-wise in the desktop it doesn’t change much for now. the most notable difference is visible resize handles that make managing the layout and moving/resizing the plasmsoids much easier and more intuitive. Especially with touchscreen: now while manipulating plasmoids via touch, the resize handles become way bigger, and is possible to move and resize via a pinch gesture as well.

Lastly (for now!) the behavior during screen resolution switch improved a lot: if you connect a projector with a smaller resolution that relayouts your desktop, or play a fullscreen game at a tiny resolution, when the resolution is restored, everything gets back to normal, no more applets all over the place after changing resolution

All of this should make it into Plasma 5.17.

Implementing a derivated class of kis_brushes_pipe <2019-07-05 Fri>

Friday 5th of July 2019 06:32:00 AM

I've been working all week, instead of trying to deliver a feature I tried to write and organize the whole class, and then slowly write all the small functions Read More...

Calamares CVE

Thursday 4th of July 2019 10:00:00 PM

Well, it seems I got my blog back online just in time to write about security vulnerabilities. Well, let’s call it a security weakness in Calamares and the initramfs tools in a lot of distributions.


Two CVE’s were files against Calamares this week, but I’ll only write about lax file permissions on initramfs images here. See the CVE database for more details.

The issue comes down to this: when creating an initramfs (which is done as root), a sensitive file is read. The initramfs file (a cpio archive) is created with lax permissions, and so any user who can read the initramfs file can then extract the contents of the sensitive file.

From the point of view of Calamares, the solution is to make sure that the initramfs is created with less lax file permissions. Simple, hey?

In principle, the umask is responsible for masking out file permissions bits, so a umask of 077 (octal!) would prevent group and other users (i.e. all the non-privileged users) from reading the initramfs. So all Calamares needs to do is set up a good umask before calling the tools, right?

If only it were that simple.


There’s a lot of distro’s out there. Calamares serves them without discriminating on toolset, language, or target audience. I’m really happy to have downstreams that write careful bug reports, who join on IRC to describe problems, who coach users about reporting problems. But there’s a lot of them, and there’s lots of different tools used to create initramfs out there.

Here are the tools I know about:

  • dracut (Fedora derivatives) doesn’t seem to be vulnerable, it has had a safer umask since 2012 (with a CVE and fix for a special case in 2016). So dracut does the right thing, always: sets umask 077 and the initramfs is not world-readable.
  • update-initramfs (Debian derivatives) has a configuration item for the umask in initramfs.conf, but this isn’t set in the Calamares-using Debian derivatives I looked at. Setting umask in the environment has no effect, because the tool actively resets the umask, to a lax value unless configured otherwise.
  • mkinitcpio (Arch derivatives) doesn’t seem to have anything at hand. It obeys umask, but only when the initramfs file doesn’t exist yet; it does not reset file permissions on an overwritten file.

Personally I feel the tools need to be fixed. Debian derivatives should install an initramfs.conf that sets UMASK=077. Users of mkinitcpio should make sure the umask is set right when generating the initramfs for the first time.

But what I think, personally, doesn’t directly affect distro’s, so Calamares is getting another (security-oriented) release today, with the following changes which are very unusual for an installer that doesn’t have many opinions:

  • Distro’s that use the initramfs module in Calamares will get a configuration snippet that sets UMASK=077.
  • Distro’s that use the initcpio module in Calamares will get all their initramfs’es set to safe permissions during installation.

After installation there’s not much I can do; those that have a safer configuration snippet will keep using it, while mkinitcpio users are dependent on having a safe umask when a kernel update happens.


Three distro’s I used for testing things for this work – and I needed a variety, to see all the initramfs variations – were Chakra and ArcoLinux and Lubuntu.

These distro’s have a very very different approach to a Live CD and what ends up installed; Chakra gives you a full and wonderful KDE Plasma experience with all the bells and whistles (and latte dock too). ArcoLinux gives you a minimal XFCE-based Live experience, even as it installs a KDE Plasma environment to your hard disk. Lubuntu is fast and light-weight but I notice it’s not-Plasma all the time because I have so many KDE Plasma shortcuts in my muscle memory. So it’s a nice place to visit, but I wouldn’t want to live there.

I can heartily recommend some distro-shopping every now and then.

.. and after that I can get back to KDE-on-FreeBSD.

Look for a new Calamares release friday the 5th, with fixes, but it will take a while for that to get through to distro’s.

2019 Plasma and Usability & Productivity sprint

Thursday 4th of July 2019 05:15:55 PM

From 19.6. to 25.6. I attended this year’s combined Plasma and Usability & Productivity sprint in the beautiful city of Valencia.

It was a great opportunity to meet old and new friends, drink beer and sangria on the rooftop and of course do some hacking.

First we discussed about the future development of Plasma, especially the Wayland experience. I was particularly interested in how we can solve the two missing pieces in KDE Connect on Wayland, Keyboard input and clipboard synchronization.

We did not only discuss things but got our hands dirty as well tough. I took the opportunity to work on several components, most of which I haven’t worked on much before:

  • I’ve reworked the system tray settings to be more concise and usable. Furthermore I worked on hiding certain system tray elements when they are not in a useful state, making the system tray less cluttered. I also fixed the appearance of the disk quota icon in the system tray settings and the system tray itself when using a dark theme.
  • After I cleaned the code and polished the export menu I worked on integrating an image annotator in Spectacle. Kudos to Damir Porobic for doing the hard part of it by providing kImageAnnotator.
  • I implemented a more human friendly sort order description in Dolphin.
  • I improved the user experience of Purpose, the framework used for sharing stuff. Cancelling a share doesn’t show an error any more. The share dialogs for KDE Connect and bluetooth got a huge makeover. The share menu now shows ellipsis where semantically appropriate.
  • Next to polishing the menus I implemented sharing via Purpose in Gwenview.

The sprint was generously hosted by Slimbook. Thank you very much for that!

Sprints like this are only possible due to the donations KDE e.V. is getting. Please consider donating if you want us to be able to further improve our software.

KIOFuse: June in Review

Wednesday 3rd of July 2019 11:52:38 PM

The coding period has now extended over a month and quite a few improvements have been merged into KIOFuse. In my last post I mentioned the development of a KIO error to FUSE error mapping and 32 bit support.

However, interestingly enough it took quite a long time for the 32-bit support branch to be merged. This was because of a test that didn’t fail nor pass – it froze. The test suite would never finish and the process would only respond to SIGKILL. After days of debugging it was determined that fuse_notify_inval_* functions don’t play well when writeback caching is enabled and hence there is now a patch to disable it. Of course this will incur a performance hit as writes will go straight to KIOFuse, and hence straight to disk (although the kernel may cache our write requests to our own cache). Whilst this is unfortunate, seeming as most KIO slaves are network based, switching from a writeback caching policy to a writethrough one is unlikely to hamper performance too much.

In other news, KIOFuse can now handle SIGTERM, SIGINT and SIGHUP signals. Signal handlers can only call async-signal-safe functions. However in Qt there is a bit of hack one can perform, as inspired by this tutorial. Hence, in response to these signals, KIOFuse will flush all dirty nodes to disk, meaning no sudden data loss!

Mounts can now have their password changed.

The lookup function has now been optimised. Previously a lookup would call KIO::listDir, which was totally unnecessary – a KIO::stat would suffice and this is what the patch has switched to. It also increased the data buffer from 1MB to 14MB.

Unmount support has currently been postponed. It is proving problematic to implement reliably and unmounting only really provides a marginal benefit, so it is yet to be seen if we will implement it at all. The current WIP patch can be found here.

It has been decided that slaves that do not implement KIO::stat will not be supported. It’s a bit of a hassle to implement with extremely marginal benefit. There are only a few slaves that don’t implement KIO::stat, such as fonts and thumbnails.

An issue with KDE Connect not working properly has been fixed upstream. I haven’t 100% confirmed which patch has fixed this for us, but I’m placing my bets on this one.

Currently, the Google Drive API reports a size of zero for files that are not supported by GDrive, such as odt files , and their proprietary formats – i.e. Google Docs. Whilst we can update the size quite easily by downloading the file, the file turns out corrupted, and is only openable if the program has a repair option (such as LibreOffice). Unfortunately, I’ve not been able to find out why exactly this is happening, and have not come up with a fix. Currently this is being shelved and I hope to revisit it at a later date with a fresher mind.

We’d welcome anyone to use and test KIOFuse. Feel free to notify us on any bugs or performance issues by opening an issue and you can even contribute a patch if you wish!

Ngrx Entities and One to Many Relationships

Wednesday 3rd of July 2019 07:59:14 PM

When I started with Ngrx the Entity module didn't exist. My state consisted of arrays of objects. The reducers and selectors were array manipulations. It worked well but if the state had a large number of objects, the filter and maps were expensive and required lots of code.
The Entity library made it much simpler. My reducers are much less code and dramatically simple in comparison. The selectors are about half the length. It all works quickly, is easy to set up.

Essentially the data is stored as an entity object. { [id: string|number]: dataobj} There is a list of id's, which can be sorted. You access a specific object using the id as a property. entity[id]. If you have a list of id's, => entity[i] will give you a list of objects. The Entity can sort the ids, extract whatever key you want from your data. But what if you have a relational data structure?

For example, you have a contact list.
interface Contact {
  id: string;
  name: string;
  note: string;

You also have an email address list. Each contact may have one or many email addresses.
interface Email {
  id: string;
  email: string;
  note: string;
  contactid: string;

For each contact, the email addresses would have the contact id to relate them.

A selector on the email Entity would have to do something like this to get the related emails for the selected contact.

export const getSelectedEmails = createSelector(
   ( entities, ids, contact) => {
      return ids.filter(i => entities[i].contactid === true: false)

Right back to filtering long arrays to extract a few matching items.

That is a pretty simple situation. In real life it gets complicated quickly. Maybe you have an attribute property on the email, where the email address is tagged various ways; receive only, business, personal, project specific, etc. You might want to filter on those attributes as well. You might want to do a many to many relation where the same email address belongs to many people.

This is what I needed. So I came up with another property of the Entity State.
interface Keys {
   [key: string]: { [id: string| number]: ids[] }

This is how the keys are extracted. It looks similar to the stock Entity
export const adapter: EntityRelationAdapter<InventoryData> = createEntityRelationAdapter<InventoryData>({ selectId: Inventorydata => Inventorydata.tid, selectKey: { item: InventoryData => InventoryData.itemtid, vendoritem: InventoryData => InventoryData.vendorinvoice, resourcetype: InventoryData => InventoryData.resourcetype, } });  selectKey has functions that extract keys, which creates a list of keys. So in your selector you would do something like keys['item'][itemid] to get a list of ids that are related to the item data.

As with the Entity the array of ids is created as each item is added to the entity state. I haven't implemented a sort function, mostly because I don't need it, and typically the related lists are short and easy to sort in a selector.

Take a look. It is useful to me.

SMC Malayalam fonts updated in Fedora 30

Wednesday 3rd of July 2019 07:02:57 AM

The Fedora package smc-fonts has a set of Malayalam fonts (AnjaliOldLipi, Kalyani, Meera, Rachana, RaghuMalayalamSans and Suruma) maintained by SMC. We used to package all these fonts as a single zip file hosted at These fonts were last updated in 2014 for Fedora, leaving them at version 6.1.

Since then, a lot of improvements were made to these fonts — glyph additions/corrections, opentype layout changes, fontTools based build system and separate source repository for each font etc.. There were lengthy discussions on the release management of the fonts, and it was partially the reason fonts were not updated in Fedora. Once it was agreed to follow different version number for each font, and a continuous build+release system was put in place at Gitlab, we could ensure that fonts downloaded from SMC website were always the latest version.

To reflect the updates in Fedora, we had to decide how to handle the monolithic source package at version 6.1 versus the new individual releases (e.g. Rachana is at version 7.0.1 as of this writing). In a discussion with Pravin Satpute, we agreed to obsolete the existing fonts package and give each font its own package.

Vishal Vijayaraghavan kindly stepped up and did the heavy lifting of creating the new packages, and we now even build the ttf font file from the source. See RHBZ#1648825 for details.

With all that in place, in Fedora 30, all these fonts are in latest version — for instance, see Rachana package. The old package smc-fonts no longer exists, instead each individual package such as smc-rachana-fonts or smc-meera-fonts can be installed. Our users will now be able to enjoy the improvements made over the years — including updated Unicode coverage, new glyphs, improved existing glyphs, much better opentype shaping etc.

Topsy-turvy 5th Week

Tuesday 2nd of July 2019 02:02:50 PM

Finally, I can write myself as a professional developer, cause for the first time I got paid, that also by cash, for writing code. So after the boost battle of last month, it was time to test the algorithm out in the wild and not limit it to the confined boundary of the tests.

Usability & Productivity Sprint 2019

Monday 1st of July 2019 10:44:33 PM

I [partially, only 2 days out of the 7] attended the Usability & Productivity Sprint 2019 in Valencia two weekends ago.

I was very happy to meet quite some new developer blood, which is something we had been struggling a bit to get lately, so we're starting to get on the right track again :) And I can only imagine it'll get better and better due to the "Onboarding" goal :)

During the sprint we had an interesting discussion about how to get more people to know about usability, and the outcome is that probably we'll try to get some training to members of KDE to increase the knowledge of usability amongst us. Sounds like a good idea to me :)

On the more "what did *you* actually do" side:
* worked on fixing a crash i had on the touchpad kded, (already available on the latest released Plasma!)
* finished part of the implementation for Optional Content Group Links support in Okular (i started that 3 years ago and i was almost sure i had done all the work, but i clearly had not)
* Did some code reviews on existing okular phabricator merge requests (so sad i'm still behind though, we need more people reviewing there other than me)
* Together with Nicolas Fella worked on allowing extra fields from json files to be translated, we even documented it!
* Changed lots of applications released on KDE Applications to follow the KDE Applications versioning scheme, the "winner" was kmag, that had been stuck in version 1.0 for 15 years (and had more than 440 commits since then)
* Fixed a small issue with i18n in kanagram

I would like to thank SLIMBOOK for hosting us in their offices (and providing a shuttle from them to the hotel) and the KDE e.V. for sponsoring my attendance to the sprint, please donate to KDE if you think the work done at sprints is important.

[bobulate] lives!

Monday 1st of July 2019 10:00:00 PM

Well, it’s been a long six-to-eight months. But [bobulate] is back, and some of the pent-up blogging needs are ready to be unleashed on Planet KDE and wherever else.

Late last year there were some hiccups with my hosting provider, which led to SSL issues. Those were solved, and I carried on with the existing hosting. Then in february or so the MySQL server at the hosting provider went down, and I filed some tickets, grumbled a bit, and figured it would resolve itself. After all, this blog isn’t a staggeringly important piece of internet infrastructure, and I could let off notifications through the Calamares announcements for my major work, and through Twitter for KDE packaging on FreeBSD.

And february dragged on into april, may, with no resolution of the issues in sight, and then a letter arrived from the Dutch internet authority saying that my hoster was no longer an official registry and that my domains were now floating around.

That’s when some form of panic struck – although in the end I only lost one of them to a domain-hijacker in Hong Kong. I’ve switched hosting to another Free-Software-friendly place, switched out Wordpress for the much easier-to-manage Jekyll, and will be re-building the archives as I go along.

Free Software Stuff

To justify having this on the Planet, let’s talk a little about Free Software.

  • Calamares, a Linux system installer used by a bunch of boutique (specialized) distro’s, continues chugging along. I decided this spring to try to stick to a two-week release cycle, in order to get things out the door – any things – rather than grind though a set milestone. That’s worked pretty well, getting small and incremental improvements out the door much faster – although the big stuff still takes a long time to work out. I’ll be sticking to this schedule after summer vacations.
  • KDE-FreeBSD continues to hum along, Tobias is doing most of the work while I’m busy, but together we manage to keep the packaing up-to-date with all the latest releases.
  • I wrote a little meeting-management bot for Matrix, based on what I remember from the IRC channel #koffie from EFnet long, long ago.

Summer vacation’s been mentioned. After those vacations, it’s september, and so

0.4.2 Release of Elisa

Monday 1st of July 2019 08:56:15 PM

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.

I am happy to announce the release of 0.4.2 version of the Elisa music player.

The following fixes have been added to this release:

  • Fix restore of tracks with missing metadata in playlist (this was the case for tracks without album metadata) by Matthieu Gallien ;
  • Fix view selector not following the color theme (BUG 408435) by Matthieu Gallien.
Fixed Elisa with Breeze Dark Getting Involved

I would like to thank everyone who contributed to the development of Elisa, including code contributions, code reviews, testing, and bug reporting and triaging. Without all of you, I would have stopped working on this project.

New features and fixes are already being worked on. If you enjoy using Elisa, please consider becoming a contributor yourself. We are happy to get any kind of contributions!

We have some tasks that would be perfect junior jobs. They are a perfect way to start contributing to Elisa. There are more not yet reported here but reported in

The flathub Elisa package allows an easy way to test this new release.

Elisa source code tarball is available here. There is no Windows setup. There is currently a blocking problem with it (no icons) that is being investigated. I hope to be able to provide installers for later bugfix versions.

The phone/tablet port project could easily use some help to build an optimized interface on top of Kirigami. It remains to be seen how to handle this related to the current desktop UI. This is something very important if we want to also support free software on mobile platforms.

Multiple Datasets: Tutorial

Monday 1st of July 2019 08:43:45 PM
Gcompris Multiple dataset Migration of an Activity

This post is a step by step tutorial for adding multiple datasets to an activity in Gcompris.
The procedure of adding multiple datasets to an activity is fairly simple in Gcompris. The steps for it are given below.
Note: In these steps we'll refer the activity in consideration as current_activity. Also we assume that we plan to add 3 datasets to current_activity.

  1. Add the following line to current_activity/ActivityInfo.qml file

    levels: "1,2,3"

    The above line indicates that that the activity will contain 3 datasets and will automatically create the dataset selection menu for the activity with 3 options.

    import GCompris 1.0

    ActivityInfo {
    name: "money/Money.qml"
    difficulty: 2
    icon: "money/money.svg"
    author: "Bruno Coudoin &lt;;"
    demo: false
    //: Activity title
    title: qsTr("Money")
    //: Help title
    description: qsTr("Practice money usage")
    // intro: "Click or tap on the money to pay."
    //: Help goal
    goal: qsTr("You must buy the different items and give the exact price. At higher levels, several items are displayed, and you must first calculate the total price.")
    //: Help prerequisite
    prerequisite: qsTr("Can count")
    //: Help manual
    manual: qsTr("Click or tap on the coins or paper money at the bottom of the screen to pay. If you want to remove a coin or note, click or tap on it on the upper screen area.")
    credit: ""
    section: "math money measures"
    createdInVersion: 0
    levels: "1,2,3"
  2. Create a resource directory inside the current_activity folder and inside it create separate folders for separate datasets with the name of the folder representing dataset number. The resultant directory structure would be as follows.
    +-- current_activity
    | ++-- resource
    | +++-- 1
    | ++++-- Data.qml
    | +++-- 2
    | ++++-- Data.qml
    | +++-- 3
    | ++++-- Data.qml

  3. Create a Data.qml file inside each dataset folder in the following format

    • objective - It will contain the text corresponding to this dataset that would be shown in the dataset selection menu.
    • difficulty - contains the difficulty of the dataset.
    • data - contains the actual data of the dataset The following example demonstrates the layout.
    import QtQuick 2.6
    import GCompris 1.0
    import "../../../../core"

    Dataset {
    objective: qsTr("Set and display time on analog clock for full half and quarters of an hour.")
    difficulty: 2
    data: [
    "numberOfSubLevels": 5,
    "fixedMinutes": 0,
    "displayMinutesHand": false,
    "fixedSeconds": 0,
    "displaySecondsHand": false
    "numberOfSubLevels": 5,
    "fixedMinutes": 15,
    "displayMinutesHand": true,
    "fixedSeconds": 0,
    "displaySecondsHand": false
    "numberOfSubLevels": 5,
    "fixedMinutes": 30,
    "displayMinutesHand": true,
    "fixedSeconds": 0,
    "displaySecondsHand": false
    "numberOfSubLevels": 5,
    "fixedMinutes": 45,
    "displayMinutesHand": true,
    "fixedSeconds": 0,
    "displaySecondsHand": false
  4. In the current_activity/CurrentActivity.qml file add the following line to get the currenlty selected dataset.

    property var levels:


    QtObject {
    id: items
    property Item main: activity.main
    property alias background: background
    property GCSfx audioEffects: activity.audioEffects
    property alias answerModel: answerArea.pocketModel
    property alias pocketModel: pocketArea.pocketModel
    property alias store: store
    property alias instructions: instructions
    property alias tux: tux
    property var levels:
    property alias tuxMoney: tuxMoney
    property alias bar: bar
    property alias bonus: bonus
    property int itemIndex
    property int pocketRows
    property var selectedArea
    property alias pocket: pocketArea.answer
    property alias answer: answerArea.answer

    This way the variable levels will contain the data section of the selected dataset.

  5. The dataset can be extracted from the levels variable inside the js file as follows.

    dataset = items.levels
    var data = dataset[currentLevel]

KDE ISO Image Writer – Windows Build

Monday 1st of July 2019 09:13:57 AM

One of the main goals of this GSoC project is to have a fully working build of KDE ISO Image Writer on Windows to allow people that want to install KDE Neon to easily write the ISO image onto a USB flash drive.

In order to compile the code on Windows, I used Craft which is a cross-platform build system and package manager. With Craft, I could easily get the dependencies of KDE ISO Image Writer.

I started by writing a Craft blueprint which is a Python file that describes an application (or library) and list its dependencies which allows Craft to fetch the necessary packages before compiling the application.

My journey to get KDE ISO Image Writer running on Windows was not without its hurdles. I first had to figure out how to use Craft to compile an application from a Git repository but that was quickly solved after using Craft’s --help command. Then, I run into an issue with Qgpgme, which is used by KDE ISO Image Writer to verify the digital signature of an ISO image. I tried to compile using MSVC which failed systematically because of CMake complaining about not being able to finding Qgpgme. I learned from the KDE Windows team that Qgpgme can, at the moment, only be compiled using MinGW. I was finally able to compile KDE ISO Image Writer on Windows using Craft and MinGW.

In parallel to working on a Windows build of KDE ISO Image Writer, I continued my work on the user interface by implementing the designs made by the KDE Community. You can see in the following screenshots the new user interface running on Windows:

Writing an ISO image to a USB flash drive

Quick update for Google Summer of Code <2019-06-30 Sun>

Monday 1st of July 2019 07:13:00 AM

For the last week I have been reading and understanding the code of kis_imagepipe_brush.cpp, and it has been an eye opening experience. Read More...

Quick update for Google Summer of Code <2019-06-30 Sun>

Monday 1st of July 2019 07:13:00 AM

For the last week I have been reading and understanding the code of kis_imagepipe_brush.cpp, and it has been an eye opening experience. Read More...

More in Tux Machines

Late Coverage of Confidential Computing Consortium

  • Microsoft Partners With Google, Intel, And Others To Form Data Protection Consortium

    The software maker joined Google Cloud, Intel, IBM, Alibaba, Arm, Baidu, Red Hat, Swisscom, and Tencent to establish the Confidential Computing Consortium, a group committed to providing better private data protection, promoting the use of confidential computing, and advancing open source standards among members of the technology community.

  • #OSSUMMIT: Confidential Computing Consortium Takes Shape to Enable Secure Collaboration

    At the Open Source Summit in San Diego, California on August 21, the Linux Foundation announced the formation of the Confidential Computing Consortium. Confidential computing is an approach using encrypted data that enables organizations to share and collaborate, while still maintaining privacy. Among the initial backers of the effort are Alibaba, Arm, Baidu, Google Cloud, IBM, Intel, Microsoft, Red Hat, Swisscom and Tencent. “The context of confidential computing is that we can actually use the data encrypted while programs are working on it,” John Gossman, distinguished engineer at Microsoft, said during a keynote presentation announcing the new effort. Initially there are three projects that are part of the Confidential Computing Consortium, with an expectation that more will be added over time. Microsoft has contributed its Open Enclave SDK, Red Hat is contributing the Enarx project for Trusted Execution Environments and Intel is contributing its Software Guard Extensions (SGX) software development kit. Lorie Wigle, general manager, platform security product management at Intel, explained that Intel has had a capability built into some of its processors called software guard which essentially provides a hardware-based capability for protecting an area of memory.

Graphics: Mesa Radeon Vulkan Driver and SPIR-V Support For OpenGL 4.6

  • Mesa Radeon Vulkan Driver Sees ~30% Performance Boost For APUs

    Mesa's RADV Radeon Vulkan driver just saw a big performance optimization land to benefit APUs like Raven Ridge and Picasso, simply systems with no dedicated video memory. The change by Feral's Alex Smith puts the uncached GTT type at a higher index than the visible vRAM type for these configurations without dedicated vRAM, namely APUs.

  • Intel Iris Gallium3D Is Close With SPIR-V Support For OpenGL 4.6

    This week saw OpenGL 4.6 support finally merged for Intel's i965 Mesa driver and will be part of the upcoming Mesa 19.2 release. Not landed yet but coming soon is the newer Intel "Iris" Gallium3D driver also seeing OpenGL 4.6 support. Iris Gallium3D has been at OpenGL 4.5 support and is quite near as well with its OpenGL 4.6 support thanks to the shared NIR support and more with the rest of the Intel open-source graphics stack. Though it's looking less likely that OpenGL 4.6 support would be back-ported to Mesa 19.2 for Iris, but we'll see.

The GPD MicroPC in 3 Minutes [Video Review]

In it I tackle the GPD MicroPC with Ubuntu MATE 19.10. I touch on the same points made in my full text review, but with the added bonus of moving images to illustrate my points, rather than words. Read more Also: WiringPi - Deprecated

today's howtos