Language Selection

English French German Italian Portuguese Spanish

Kde Planet

Syndicate content
Planet KDE -
Updated: 6 hours 3 min ago

Follow-up on ‘ASCII Transliteration without ICU or iconv’

Sunday 13th of October 2019 01:51:24 PM

In a recent blog posting I presented some code on how to transliterate common Unicode characters into ASCII-only representations using a offline-generated lookup table to avoid dependencies on ICU which would normally do this job.

By an anonymous commenter, I got pointed to that Unicode (in Qt) is slightly more complicated than I had considered when writing the code: I missed to handle planes beyond the Basic Multilingual Plane (BMP) and the ‘surrogates’ between code points 0xD800 and 0xDFFF. In a series of recently pushed Git commits I addressed problem of surrogates and fixed some more issues. Some preparatory work has been done to support more planes in the future, but as of now, only the BMP is supported. For details, please have a look at the five commits posted on 2019-10-12.


This week in KDE: Plasma 5.17 approaches

Sunday 13th of October 2019 06:01:32 AM

Lots of great backend work happened this week which is very important, but not terribly flashy. And most of the in-progress work I alluded to last week hasn’t landed yet. So I’m afraid the user-visible changes will have to be a bit light this week. But fear not! For Plasma 5.17 is undergoing its last rounds of final polish and bugfixing before the release next week, and work churns along on lots of great stuff slated for Plasma 5.18 and the next apps versions!

Bugfixes & Performance Improvements User Interface Improvements How You Can Help

Check out and find out ways to 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!

Finally, consider making a tax-deductible donation to the KDE e.V. foundation.

Akademy 2019 recap

Saturday 12th of October 2019 11:30:00 AM

Akademy 2019 was hosted in the Milan, Italy. I had opportunity to attend the event and meet the other KDE developers, designers and users.


There were many interesting talks, including use of opensource in government, flying drones, virtual reality and several community related topics. Honestly it is impossible to list all the awesome talks I attended here, so go and check schedule for list of talks and slides. However I want to highlight the one talk which I gave,

Plasma on embedded devices

In Akademy 2018, I gave a talk about Plasma on mobile devices. Talk discussed why it is harder to run a Linux userland on the off-the-shelf mobile devices. This year I and Marco presented a slightly different topic, Plasma on embedded devices. Talk was about what solutions are offered by the KDE community for such embedded devices, and what efforts are being made.

Marco Martin also presented a new shell package, plasma-nano, which is a minimal shell you can extend to create a Plasma based user interfaces for embedded devices.

Birds of Feather sessions Gitlab community & Workflow

Gitlab developers Alessio Caiazza, Jacopo Beschi and Ray Paik hosted a BoF session about the Gitlab workflow, and how to contribute to Gitlab. It was interesting BoF to attend. Seeing as KDE is working on adoption of the Gitlab for it’s code-hosting. It was quite useful session to attend.

Plasma Mobile

On Tuesday, We hosted a Plasma Mobile BoF, where we discussed topics ranging from general shell user-interface to the applications, topics which were discussed includes,

  • File chooser implementation for Plasma Mobile: Currently it just shows the desktop based file dialog, which is not user friendly on mobile
  • Start-up speed improvements for shell and applications
  • Updating the information on Plasma Mobile website
  • Documentation and developer experience, and how to improve it
  • Various application specific issues
  • Hosting a Plasma Mobile sprint in 2020
  • Status of Packaging for Plasma Mobile in various distribution

Overall, it was quite productive BoF, even though we were constrained by the time!

Plasma on Devices

As a extension to our talk, Marco and I hosted a “Plasma on devices” BoF. Where we demostrated the Plasma Nano shell. Talked about the infrastructure we have currently in the Plasma, and also talked about how we can make this more interesting for hardware vendors.


As Plasma Mobile is making various improvements, one of the requirement is the personal information management applications like Calender, Email, Contacts will be needed, I attended the KDE PIM BoF to discuss how best these two teams (Plasma Mobile and KDE PIM) can work together, you can find out more details abut this in Volker Krause blog. In general we discussed following topics,

  • Moving of KCalendarCore and Kcontacts to KDE Frameworks
  • Moving of the KDAV protocol library to KDE Frameworks
  • Plugin Infrastructure in the KCalendarCore
  • KAccounts integration in the KDEPIM
KDE India

Indian KDE-ers (is it even word? I made it up) met together to discuss the possible location and dates for next, and how better we can improve the organization procedure. There were several possible venues and dates were suggested by the attendees.


Ben Cooksley hosted a KDE sysadmin BoF, where we discussed various topics related to our infrastructure, and scale of data/traffic we have to handle. We also agreed upon some internal todo items to work on in future.

Online Accounts Integration in KDE

As a follow-up to KDE PIM BoF, I and Daniel Vrátil hosted a Online Accounts integration BoF, where we discussed various topics,

  • Current state of kaccounts infrastructure
  • Possible API improvements for KAccounts
  • Where we can make use of the KAccounts in KDE
Student Programs

We hosted a BoF session to talk about the KDE Student Programs, Google summer of Code, Season of KDE, and GCI. We also discussed the timeline and structure of Season of KDE program. Short note that I will be attending Google Summer of Code 2019 Mentor summit in Munich later this week.

Closing thoughts

Overall quite exciting event, I would like to thank KDE e.V. for sponsoring the accomodation and travel. It is quite awesome to meet community in-person and share ideas, and learn new things!

The Road to KDE Frameworks 6

Saturday 12th of October 2019 09:15:00 AM

At Akademy Lars presented the plans for Qt 6 in his keynote. With Qt 6 planned for November 2020 we have to look at KDE Frameworks 6 within a two year horizon as well. We therefore need to get started with this as well, so we can help to shape Qt 6, and so we ensure a smooth as possible transition.

Planning Frameworks 6

I have previously briefly mentioned the discussions around this at Akademy here, and David has sent a more detailed report on this to the Frameworks mailing list. This topic deserves a few more details though, and things have evolved since Akademy.

The central hub for coordinating plans and work is the KF6 Workboard. The tasks we currently have there basically fall into three categories:

  • Ideas/proposals: that is things that still need to be discussed and decided upon, sometimes requiring a more detailed analysis on the impact, or a transition plan. If you have topics you would like to see addressed in KF6, that’s the place to start a discussion. That’s especially a call to Frameworks users.
  • Preparation tasks that can be done in KF5-based code already: This is mostly about removing the use of deprecated modules, classes or methods that are expected to go away with Qt 6 or KF6. If you want to get your hands dirty right now, that’s the best place to get started.
  • Tasks that depend on Qt 6 or require executing actual ABI breaks: That’s the minority of tasks at this point, and those of course need to wait until that phase of the development starts (I’d guess around H2 2020).

To make progress on the first category there’s the idea to have a KF6 sprint in the not too distant future. We did that for a week in Randa for planning KF5, and that was tremendously helpful in order to come up with a detailed plan on what we wanted to achieve. So I’d not only encourage everyone contributing to Frameworks development to participate there, but also those of you heavily using Frameworks. Feedback from application or workspace developers is immensely valuable, and this is the place to influence the platform you build your software on top. Same goes for the people working on different form factors or underrepresented platforms. Subscribe to T11535 and indicate your interest to participate there.

Planning the Transition

Besides planning what we want to achieve in KF6 I think it’s equally important to plan how we transition there, especially since those transitions haven’t been always exactly smooth in previous occasions. Lars presented Qt’s approach (only minor source incompatibilities if your code builds cleanly without using deprecated methods in the last Qt 5 release), and that’s a good starting point for KF6 too I think.

However, the situation for KDE is different to Qt’s in some aspects. KDE is not primarily producing Frameworks, but products build on top of those (Plasma and hundreds applications), which allows us to define additional criteria for what we are allowed to change or remove.

The current proposal is to define a set of modules that block a breaking change, that is those modules need to be adjusted (or at least need to be trivial adjustable) before a breaking change is allowed. This is less about things like a renamed but otherwise unchanged method but about the less straightforward changes. I would like to avoid things like “KHTML was dropped, just port to QWebEngine”. Yes, both can render an HTML document somehow, but that’s where the similarities end, the API and the capabilities of the APIs are vastly different, and not all use-cases can be easily mapped, if at all. The burden to sort this out should not solely fall on the application maintainers, as that will result in many things staying behind on Qt5/KF5 for years to come.

Which components are part of this set is still under discussion in T11563. This should contain all actively developed and released products, but ideally nothing on life support and still full of remains from the 4 era. The starting point is Plasma, Applications, Krita and Extragear. So this is also a good reason to promote actively developed things out of Playground, and to retire things from the other categories that we don’t want to carry forward.

Ongoing Work

It’s not all planning and discussion though, actually quite some work has happened since Akademy already:

  • Friedrich has been working on infrastructure to disable deprecated methods in KDE Frameworks at compile time in a similar way as Qt does support this, see his blog post for details as well as the corresponding task on how to help. This will ease long-term maintenance, and it will allow us to uncover remaining users of deprecated KF5 API.
  • Andreas has ported Step, Kalzium and Parley away from KHTML, and Sune has started to do the same for KHelpCenter. We also got rid of quite a few uses of KHTML in Konqueror, only the about screen is remaining there now.
  • Dan and Laurent have been porting KSieve, KSMTP and KIMAP away from KTcpSocket.
  • David, Laurent and others have been porting away from deprecated Qt methods all over the place, aiming at being able to build things with Qt 5.14 with deprecated methods disabled.

It’s a great time to get into KDE Frameworks development! In terms of development tasks there is something for everyone, ranging from simple porting jobs to redesigns of entire modules. It’s also a rare time window where we have more freedom to change things than usual, so it’s the best possible time to bring in your ideas and suggestions, via the KF6 workboard or by participating in the KF6 sprint, especially as a Frameworks user.

Kdenlive 19.08.2 is out

Friday 11th of October 2019 08:00:34 AM

Kdenlive 19.08.2 is out with many goodies ranging from usability and user interface improvements all the way to fixes to speed effect bugs and even a couple of crashes. Automask effect gets back the possibility to store the tracking data to clipboard which then can be used for motion following by importing the tracking data into i.e transform effect.

Check it out:

  • Fix crash on composition resize. Commit.
  • Update MSYS2 build script. Commit.
  • Fix Windows audio screen grab (#344). Commit.
  • Remove local reference to current project. Commit.
  • Disable multitrack view on render. Commit.
  • Fix clip duration incorrectly reset on profile change. Fixes #360. Commit.
  • Fix compile warnings. Commit.
  • Make affine filter bg color configurable. Fixes #343. Commit.
  • Fix speed job in some locales. Fixes #346. Commit.
  • Fix some remaining effectstack layout issues. Commit.
  • Fix keyframes not deleted when clip start is resized/cut. Commit.
  • Fix track effects not working when a clip is added at end of track or if last clip is resized. Commit.
  • Add clickable field to copy automask keyframes. Fixes #23. Commit.
  • Show track effect stack when clicking on it’s name. Commit.
  • Fix crash trying to access clip properties when unavailable. Commit.
  • Fix effectstack layout spacing issue introduced in recent commit. Commit.
  • Fix proxy clips lost on opening project file with relative path. Commit.
  • Update AppData version. Commit.
  • Cleanup effectstack layout. Fixes !58 #294. Commit.
  • Fix mixed audio track sorting. Commit. See bug #411256
  • Another fix for speed effect. Commit.
  • Speed effect: fix negative speed incorrectly moving in/out and wrong thumbnails. Commit.
  • Fix incorrect stabilize description. Commit.
  • Cleanup stabilize presets and job cancelation. Commit.
  • Deprecate videostab and videostab2, only keep vidstab filter. Commit.
  • Fix cancel jobs not working. Commit.
  • Fix some incorrect i18n calls. Commit.
  • Don’t hardcode vidstab effect settings. Commit.

Plasma Mobile: weekly update: part 2

Friday 11th of October 2019 12:00:00 AM

Thanks to the awesome Plasma Mobile community, we are happy to present a second weekly update from Plasma Mobile project.

Shell user interface

Marco Martin made several changes in the shell to improve the overall user experience.

The application grid was updated to show application names in single line and with a smaller font size.

Marco Martin is also working on re-designing the top panel and top drawer, and bugfixes related to that. Below is screenshots of current state:

Both the top and bottom panels were updated to use the normal color scheme instead of the inverted/dark color scheme.

Marco martin also added several fixes 1 and 2 in KWin/wayland for fullscreen windows used by the top drawer and the window switcher.


Nicolas Fella added new API to Kirigami that allows us to make menus in a more traditional style on the desktop.

globalDrawer: Kirigami.GlobalDrawer { isMenu: true actions: [ Kirigami.Action { "document-import" text: i18n("Import contacts") onTriggered: { } } ] }

Setting isMenu property to true on the Drawer, should hide the drawer handle when used on the desktop. Instead, a similar looking hamburger button should appear in the toolbar, which behaves appropriately for the desktop.


Simon Schmeißer added various improvements to the QR-Code scanner application, qrca. It now suppports decoding vcard QR-Codes which include trailing spaces, and features a Kirigami AboutPage. The sheet that appears once a code has been decoded now doesn’t flicker if the code is scanned a few times in a row. Jonah Brüchert ported the app’s pageStack to make use of the new Kirigami PagePool introduced in last weeks blog post, which fixes page stack navigation issues with the About page.

Jonah Brüchert implemented setting a photo for contacts in plasma-phonebook. Nicolas Fella improved the contacts list in the plasma-phonebook simplifying codebase. He also reworked the code for individual contact actions to make them functional and improve the scrolling experience.

Settings applications by default only shows the KCM modules which are suitable for mobile platform, Jonah Brüchert fixed the audio configuration KCM module to add the supported form factors key in desktop file, which makes Audio module visible in the Settings application again. If you are developing a system settings module with Plasma Mobile in mind, don’t forget to add X-KDE-FormFactors key in the metadata.desktop file, e.g.


MauiKit file management component now can make use of all the KIO supported protocols, like kdeconnect, applications, recentdocuments, fonts, etc, to browse your file system. This will allow you to seemlessly copy files and folders between various protcols like webdav and sftp. MauiKit has gained a couple of new components, designed to be used as visual delegates for list and grid views, one of those is the new SwipeItemDelegate, which works both on wide and small screen form factors. This delegate can contain quick action buttons which depending on the available space get shown inline when hovering, or underneath, revealing by a swipe gesture.

Index, the file manager, has seen some feature improvements in the selection bar, when selected items are clicked you get a visual preview of the file and on long press the item is removed from the selection bar, making it easy to keep track of what you have selected. You can also mark files as Favorites and browse them easily in a new dedicated Quick section in the sidebar. The Miller column view now auto scrolls to the last column. By making use of the new MauiKit delegate controls, the file and directories on Index, can be dragged on top of each other to perfom actions like copy, move and link and also be dragged out of the app to be open or shared with an external application. Due to usage of KIO framework, Index can now browse various kio slaves like, applications, favorites, webdav, remote, recently used etc.\

vvave, the music player, now has an improved Albums and Artist grid view, and a has gained a lot of small paper cut fixes to be ready for a release soon. If you are interested in helping testing this early packages and report back issues you can join the telegram channel.


Bhushan Shah worked on several changes in postmarketOS to make telephony on devices like Pinephone and Librem 5 possible with Plasma Mobile. The upstream change was suggested by Alexander Akulich to not hardcode a telepathy account name in the dialer source code.

We have successfully tested this change on Librem 5 developer kit.

Want to help?

Next time your name could be here! To find out the right task for you, from promotion to core system development, check out Find your way in Plasma Mobile. We are also always happy to welcome new contributors on our public channels. See you there!

Qt for Android better than ever before

Thursday 10th of October 2019 01:33:33 PM

As you already know KDAB is the largest independent contributor to Qt code. Of course we didn’t get lazy and we’ve added a lot of cool stuff to Qt 5.14.

In this article I’m going to write about the super cool stuff that we’ve added to Qt 5.14 for Android.

Android multi arch build in one go

Folks, this is the biggest feature added to Qt on Android since I made the Qt on Android port! I dreamt on this change for a very loong time! I found that is possible to add such support to qmake by mistake :). I had to do some work on Windows (which is not my platform of choice) and there I found that debug and release builds are different on Windows, the makefiles generated by qmake will build twice your source files.

This was exactly what I needed to add multi abi for Android! A few days later I had a WIP patch and, with the help of The Qt Company people, we landed the change in Qt 5.14 alpha!

Let’s see what is new:

  • First and foremost from Qt 5.14 there will be a single Qt for Android SDK. Same as the Android NDK, the Qt for Android SDK contains the libs & plugins built for all Android platforms (armv7a, arm64-v8a, x86, x86_64). If you’re building Qt from sources and you want to build only for e.g. arm architectures, you can filter them using the new -android-abis configure parameter: ./configure -android-abis armv7a,arm64-v8a -developer-build -xplatform android-clang -android-ndk /home/bogdan/android/ndk-bundle -android-sdk /home/bogdan/android
  • If not specified otherwise, your application will be built by default for all these platforms in one go. You can filter which ABI(s) you want to build for using the ANDROID_ABIS qmake variable, this is useful while you develop your application, to cut the build time. Build only for arm64-v8a

    qmake ANDROID_ABIS="arm64-v8a"

    Build only for armv7a and arm64-v8a

    qmake ANDROID_ABIS="armeabi-v7a arm64-v8a"

Yes, we changed Qt Creator to make it easier to choose which platforms you want to build for, check the next image:

In order to support this super cool feature we had to change a few things:

  • All the .so files produced by qmake are suffixed with the android abi. If you’re using Qt library/plugins classes you don’t need to take any actions, otherwise qmake sets QT_ARCH variable for the ABI you’re currently building, so you can use it to know which suffix you need to add e.g:

    # ... android: DEFINES += LIBS_SUFFIX='\\"_$${QT_ARCH}.so\\"' # ...

    Then you can use LIBS_SUFFIX macro in your srcs.

  • Because on android we have only one libs folder level, we must rename all the [qml] plugins to make sure we don’t have any name clashes. We use the following naming scheme: lib + "plugin/path".replace('/','_') + {plugin_name} + _$${QT_ARCH}.so.

    If you have a plugin which uses ANDROID_LIB_DEPENDENCIES qmake variable make sure you use the previous naming scheme. Here you can see how we did it for Qt Gamepad module. Initially I did the renaming from androiddeployqt, but soon I found that this breaks the plugins debugging, as the gdb won’t find the renamed files on the Qt folders, and for me not being able to debug my precious plugins was unacceptable.

Android App Bundles (aab)

I’m going to tell you a secret, Android App Bundles were the main reason for doing the multi arch build in one go :). Without multi arch build in one go you can’t have aab, well at least not without a lot of work, pain and sorrow. Because I’m a happy, lazy person, I don’t like to work more than I must, therefore I had to find a solution to make our life easier. In Qt 5.14, it’s very easy to build an .aab file:

$ make aab

it’s all you need to run on a terminal to build it!

Same as above, I added a new option to Qt Creator to enable .aab packages with a single check box, see the following image:

Load Qt plugins directly from android libs folder

Since Qt 5.14, the Qt plugins were stored to android assets and then extracted to your home folder at the very first start. There are two problems with this approach:

  • The very first startup time needed more time to extract all the files
  • It occupies more disk space

Starting with 5.14, instead of bundling the plugins and QML resources in assets and extracting them on first start, Qt now creates an .rcc file and registers it before invoking the main function.

Other pretty nice changes
  • Same as above, in Qt 5.14 you can easily create an apk from the command line: $ make apk

    is all you need to type on your terminal to create it.

  • Reworked assets support – the new version fixes QDirIterators, also it lists all the files and folders.
  • NDK r20+ is needed as I updated the clang mkspecs to follow guide. With this change, let’s hope we’ll have less issues with newer NDK versions, as you probably noticed Google folks are restless and they are doing their best to break other tools from time to time :).
  • Drop gcc support – this was a change that personally I didn’t like to do it, but I had to, mostly because it was quite challenging to support NDK r10e (the recommended NDK for gcc).
  • Last but not least, an easy way to run tests on Android: $ make check

    It’s all you need. For more details and tweaks about it, you can come to my Qt World Summit presentation ;-).

  • See more about KDAB Talks at Qt World Summit

The post Qt for Android better than ever before appeared first on KDAB.

Wayland goal - Call for Action

Thursday 10th of October 2019 08:49:00 AM

KDE community has elected to finalize the transition to Wayland and embrace the future of desktop.

This entails making Plasma running smoothly under Wayland, but also making sure KDE Apps can run without bugs and missing features. It also means that we want to help the wider Wayland community to fill missing features and fix bugs.

I call App users and developers to try out their favorite app in Wayland and report the issue that may arise. and add wayland as keyword to the bug to keep track on those bugs.

And you don't need a wayland session to test an app, you can do it in wayland within a X session !

kwin_wayland # start an embed kwind_wayland

# In another terminal

gwenview --platform wayland # starts gwenview in the wayland session

We have a page listing how to fix a few pitfalls that applications may have in Wayland.

You can also test Plasma Wayland session of course and report the same way issues that may arise.

You can reach us at #kde-devel or #plasma in or freenode.

More information on the Wayland Goal page

Playing with Godot

Thursday 10th of October 2019 06:56:31 AM

I guess it is quite common to start the path towards programming by making games. I started with a simple guess the number on my dad’s zx81 back in the day. He must have written most of it, but I felt proud of the result, so I will claim that it was mine.

I’ve experimented with various ways to get my kids into programming. Everything from board games, online resources, scratch, building shitty robots, and so on. They get it, but it is hard to move on from the basics to being able to start from a clean sheet of paper and create something.

During the summer, I decided to look into the various options and tried using Unity and Godot. After a couple of experiments, I settled on using Godot. Partly because of its open nature, but also because as a tool, it does the job I need it to do just as well as Unity.

From my perspective, Godot is interesting, as it is a tool that is based around a visual editor. You do write code, but you add the code to the visual model, and not the other way around. This is somewhat backwards to me, as I come from a Qt background, but I’m positively surprised over how well it works.

Another positive surprise to me is that Godot also comes with export presets. These are pre-built run-time environments for common targets such as Windows, Linux/X11, Android, iOS, HTML5. Using these, it is trivial to cross compile and distribute your project – from any platform, to any platform. Very convenient. You can even build your own export presets.

When it comes to the not-so-good, Godot comes with its own language, GDScript. It does the job, and I quite enjoy working it it. You can use VisalScript as well, or C# with external tooling – you can also use GDNative to interface with the engine using your language of choice, but that is less straight forward. I do understand that there is some history that explains the choices, but to me it does feel like Python, without the huge library of Python libs.

Next up, I’ll blog about some of the games I’ve made, so prepare yourself for boardgames, classic game remakes as well as my humble experiments into VR.

To be Merged in master

Wednesday 9th of October 2019 04:44:03 PM

So, finally it seems like, after crossing the deadline by a couple months, Magnetic Lasso is going to get merged, as Boud told me. Lets see how many more weeks it takes, so presumably it is complete feature wise but who knows from where a bug might pop up.

Qt 5.14.0 Beta1 Released

Wednesday 9th of October 2019 12:04:18 PM

I am happy to announce that Qt 5.14.0 Beta1 is released today. We will release updates as Beta N regularly until we are ready for RC. Current estimation for RC is 12th November 2019, see the schedule from 5.14 wiki.

Improving Plasma’s Rendering (Part 1/2)

Wednesday 9th of October 2019 01:05:17 AM

Many parts of Plasma are powered by QtQuick, an easy to use API to render shapes/text/buttons etc.
QtQuick contains a rendering engine powered by OpenGL making full use of the graphics card keeping our drawing super fast, super lightweight and in general amazing…when things work.

Handling Nvidia context loss events

When the proprietary nvidia driver comes out of suspend, or from a different terminal the pictures that it had stored get corrupted. This leads to returning to an image like this. Worst as we show stray video memory it even leak data on the lock screen.

When this occurs it might look something like this:

With various text or icons getting distorted seemingly at random.

Fortunately NVidia do have an API to emit a signal when this happens, allowing us to at least do something about it.

This handling to be done inside every single OpenGL powered application, which with the increasing popularity of QtQuick is a lot of places.

The new state

After over a year of gradual changes all of Plasma now handles this event and recovers gracefully. Some of these changes are in Qt5.13, but some more have only just landed in Qt 5.14 literally this evening.

Some notes for other devs A QtQuick application

Due to some complications, handling this feature has to be opt-in. Triggering the notification leads to some behavioural changes. These behavioural changes if you’re not prepared for will freeze or crash your application.

To opt-in one must explicitly set the surfaceFormat used for the backing store to have:

Within KDE code this can be done automagically with the helper function
KQuickAddons::QtQuickSettings::init() early in your main method.
This sets up the default surface format as well as several other QtQuick configurable settings.

Everything else is now all handled within Qt, if we detect an event the scene graph is invalidated cleaned and recreated.

However, if you create custom QQuickItem’s using the QSG classes, you must be really really sure to handle resources correctly.

As a general rule all GL calls should be tied to the lifespan of QSGNodes and not of the QQuickItem itself. Otherwise items should connect to the window’s sceneGraphInvalidated signals.

Using QtOpenGL outside QtQuick

To detect a context loss, check for myQOpenGLContext->isValid() if a makeCurrent fails.

In the event of a context loss one must discard all known textures, shaders, programs, vertex buffers, everything known to GL and recreate the context.

One especially quirky aspect of this flag is that in the event of a context loss glGetError will not clear itself, but continue to report a context loss error. Code trying to reset all gl errors will get stuck in a loop. This was the biggest battle in the seemingly never-ending series of patches upstream and why it has to be opt-in.

In the case of a shared context a reset notification is sent to all contexts who should recreate independently.

You can read more about the underlying GL spec.

2 years since Catalan Independence Referendum, an update

Tuesday 8th of October 2019 05:08:21 PM

Note 1: This is not KDE or Free Software related, if you're not interested, stop reading, no one is forcing you to read
Note 2: Yes, this is still going to Planet KDE, KDE friends and colleagues ask me about it almost every time we met, so there's definitely interest
Note 3: You're more than welcome to comment, but remember this blog is my house, so don't complain when i don't tolerate stuff i wouldn't tolerate at my home

You may remember Catalonia held an Independence referendum 2 years ago, lots of things have happened since then, I'm going to try to summarize, if you're interested in my initial reaction read my blog from that very same day.

On October 27 2017, following the referendum results, the Parliament of Catalonia declared Independence by a majority of 70 out of 135 MPs. That was mostly ignored by every single country in the world. A few hours later the Spanish government used bigger-army-diplomacy (AKA article 155 of Spanish Constitution) to decide that the Parliament of Catalonia would be suspended and new elections would happen in Catalonia on December 21.

On November 2nd 2017, a judge put most of the Catalan government in jail with the charges of "you've been terribly bad".

They still remain in jail awaiting for trial results (trial finished a few months ago).

Notable exceptions of government officials not in jail are president Carles Puigdemont and Ministers Clara Ponsatí and Toni Comín, that exiled themselves to other European countries. Spain has tried several times to get European countries to extradite them to Spain because "they've been terribly bad", but that has failed every single time, so they ended up revoking the extradition requests.

Elections happened on December 21 2017, and to shocking surprise of no one, almost virtually the same results happened if you count the pro-independence vs anti-independence blocks.

Since then the Catalan pro-independence government has been basically very low-key in their actions.

Meanwhile, Spain had a its own elections in April this year. They did this nice thing of letting the jailed (but still not sentenced to anything, so innocent) Catalan politicians run, and several of them won Congress seats. Then they said "oh but you know, you're a very dangerous person, so we're not going to let you attend Congress sessions". Not that it matters now, since Spain is unable to govern itself and is having it's 4th election in 4 years this November.

We also had elections in the European Union, and you know what? The same happened! They let catalan-jailed politicians run but then they decided they would not let them take the seats. Actually, this time is even worse since Carles Puigdemont and Toni Comín, that are living in Brussels without any extradition petition (i.e. they're basically free citizens of Europe), have also been rejected from taking their seats for some esoteric reason.

As a "fun fact", in late 2018 some Spanish regions had elections. Andalucia was one of them and the current government is a coalition of PP+C+VOX, i.e. right wing conservatives, right wing liberals and ultra right wing nut-jobs. One of their first decisions was to put away 100000 euros for grants to teach Spanish to Spanish born people (not for helping immigrants, they're right wing crazies after all) living in Catalonia that don't know how speak Spanish. I'm 99.99% sure the number of people that matches that description is very close to 0 people. You heard well, the poorest region of Spain decided to subsidize the 4th richest region for something that is virtually useless. Thanks!

Much less "fun fact", last week Monday, the Spanish police decided to detain 9 pro-independence people (later to be 7 since 2 were let go) with terrorism charges. The investigation is on-going and technically it should be secret, but we've seen pictures all over the news of what the cops say to be material to make bombs, and all i can see is a pressure cooking pot and some fireworks used typically for Ball de diables.

I don't want to 100% rule out this people having actual plans to do something nasty, but Spanish police/judges/state history of just fabricating charges against people they don't like is so long (An anarchist recently spent *18* months in jail awaiting trial for tweeting stuff "Goku lives, the fight continues" to be then just found innocent after trial) that i would not be surprised either if this is just Spain doing bigger-army-diplomacy again.

TL;DR: Everything is fucked up and I can't really see a way out at this point.

Qt Creator 4.10.1 released

Tuesday 8th of October 2019 12:32:12 PM

We are happy to announce the release of Qt Creator 4.10.1 !

Linux App Summit 2019 schedule is out!

Monday 7th of October 2019 10:43:19 PM

We published the Linux App Summit 2019 schedule last week.

We have a bunch of interesting talks (sadly we had to leave almost 40 almost as interesting talks out, we had lots of awesome submissions!) ranging from flatpak and snaps to how product management is good for Free Software projects with some thought provoking talks thrown in to make us think what's the future of our platform.

I am going and you should totally come too!

The attendance is free but please register at

Akademy 2019 in Milan

Monday 7th of October 2019 10:00:16 AM

Last month I attended KDE’s annual gathering Akademy, which took place at the University of Bicocca in Milan, Italy. Never before had I been to an Akademy where I was interested in so many workshops and discussions that I hardly wrote any actual code.

It’s important to stay healthy during a conference – a bunch of KDE developers taking a swim in Lake Como

I arrived quite late on Friday evening, just in time before the kitchen closed at the welcome event. As usual, Saturday and Sunday were packed with presentations: after Lydia welcomed us at the conference, Lars Knoll, CTO of The Qt Company, gave a presentation on their plans for Qt 6. We were glad to hear that Qt is moving towards using CMake as build system which is what KDE has been using for over a decade now. Another point that got us excited was that they’re aiming to provide a unified styling engine for Qt Widgets and Qt Quick. Currently, we try to fill that gap with our qqc2-desktop-style Framework which works pretty well but also has its shortcomings since it just uses QStyle for painting widgets to a texture and none of QtQuick’s hardware-accelerated capabilities.

My talk (slides, video recording) this year was a quick rundown of Plasma’s new notification system. I showed some of its features, such as do not disturb mode, explained new APIs for application developers to use, and gave an outlook on what’s planned in the future. One of the ideas on the crazy side was to have Plasma Browser Integration help reduce duplicate notifications synced through KDE Connect. Often I have a dedicated app on my phone but just use the web version on my computer. What if, when a notification is synced from my phone, KDE Connect can ask my browser whether I have the respective website open and then filter out the notification since you probably got one from the browser already anyway?

Organized like a pro

There were so many interesting BoF sessions this year that I had to actually schedule where to go well in advance. Starting off the week early in the morning was a planning session on KDE Frameworks 6, where we came up with a giant work board of things to do. See David’s email for all details. Later that day I attended sessions on Snapcraft (we’re “all about the apps”, after all), openQA, GitLab, and KDE neon.

Tuesday morning I scheduled a BoF on notifications. It was a brainstorming session on how to improve notifications both for application developers and end users. The main focus was how to make the history more useful, what ways there are for applications to manage their notifications properly anytime, no matter if it is currently shown in a popup or two pages down the history. Also, we did some planning for a KNotificationV2 class with fewer dependencies, first-class QML bindings, and proper platform backends for Android, Windows, macOS, etc. See the meeting notes for more information.

The Plasma BoF afterwards was mainly about Wayland (screen rotation, window thumbnails, virtual keyboard improvements, stability), theming, System Settings reorganization, and Plasma Mobile. Following the successful Plasma 5.12 LTS and based on distro feedback we decided that Plasma 5.18 will be another LTS release. Check out the meeting notes, too.

Traditionally Wednesday afternoon is when Akademy attendees venture out explore the area they all traveled to. This year’s day trip went to the North to Varenna near Lake Como, where we hiked up to Vezio Castle, and took the ferry to the other side of the lake. Of course, with sunny weather and beautiful landscape around, we just had to take a swim in the lake.

Gorgeous view from Castello di Vezio

On Thursday morning there was a session on how to write custom KItinerary extractors. I’m a huge fan of KDE Itinerary and in the few hours between discussions I actually had to write some code, I moved forward my secret master plan to augment Plasma Browser Integration with Itinerary and structured data extraction capabilities. Stay tuned for a follow-up blog post on that. :)

Carl already worked on automatically extracting all Plasmoid configuration keys for the new sysadmin documentation page

In the afternoon we scheduled a two hour track for everything enterprise. The big topic right now is KIO Fuse which will finally allow non-KDE applications to seamlessly access network shares and other remote locations. We were also glad to hear our friends in Munich are quite happy with Plasma 5.12 LTS. The second hour was mostly spent on touching up our sysadmin documentation and we decided to migrate it to a Sphinx page, similar to our new HIG page. The idea is to use as much auto-generated content from actual config files and source code as possible to keep it from getting outdated that easily. Again, there’s some notes with more details.

Thanks to everyone involved in making this event possible! It has been a great week of discussion and planning with many new faces that I’m looking forward to seeing again in the future.

WatchData PROXKey digital signature using emSigner in Fedora 30

Monday 7th of October 2019 08:19:24 AM

TL;DR — go to Howto section to make WatchData PROXKey work with emSigner in GNU/Linux system.


Hardware tokens with digital signature are used for filing various financial documents in Govt of India portals. The major tokens supported by eMudhra are WatchData ProxKey, ePass 2003, Aladdin, Safenet, TrustKey etc. Many of these hardware tokens come (in CDROM image mode) with drivers and utilities to manage the signatures, unfortunately only in Windows platform.

Failed attempts

Sometime in 2017, I tried to make these tokens work for signing GST returns under GNU/Linux, using the de-facto pcsc tool. I got a WatchData PROXKey, which doesn’t work out-of-the-box with pcsc. Digging further brings up this report and it seems the driver is a spinoff of upstream (LGPL licensed), but no source code made available, so there is no hope of using these hardware tokens with upstream tools. The only option is depending on vendor provided drivers, unfortunately. There are some instructions by a retailer to get this working under Ubuntu.

Once you download and install that driver (ProxKey_Redhat.rpm), it does a few things — installs a separate pcsc daemon named pcscd_wd, installs the driver CCID bundles and certain supporting binaries/libraries. (The drawback of such custom driver implementations is that different drivers clash with each other (as each one provides a different pcscd_wd binary and their installation scripts silently overwrite existing files!). To avoid any clashes with this pcscd_wd daemon, disable the standard pcscd daemon by systemctl stop pcscd.service.

Plug in the USB hardware token and to the dismay observe that it spews the following error messages in journalctl:

Oct 06 09:16:51 athena pcscd_wd[2408]: ifdhandler.c:134:IFDHCreateChannelByName() failed Oct 06 09:16:51 athena pcscd_wd[2408]: readerfactory.c:1043:RFInitializeReader() Open Port 0x200001 Failed (usb:163c/0417:libhal:/org/freedesktop/Hal/devices/usb_device_163c_0417_serialnotneeded_if1) Oct 06 09:16:51 athena pcscd_wd[2408]: readerfactory.c:335:RFAddReader() WD CCID UTL init failed.

This prompted me to try different drivers, mostly from the eMudhra repository — including eMudhra Watchdata, Trust Key and even ePass (there were no *New* drivers at this time) — none of them seemed to work. Many references were towards Ubuntu, so I tried various Ubuntu versions from 14.04 to 18.10, they didn’t yield different result either. At this point, I have put the endeavour in the back burner.

A renewed interest

Around 2019 September, KITE announced that they will start supporting government officials using digital signatures under GNU/Linux, as most of Kerala government offices now run on libre software. KITE have made the necessary drivers, signing tools and manuals available.

I tried this in a (recommended) Ubuntu 18.04 system, but the pcscd_wd errors persisted and NICDSign tool couldn’t recognize the PROXKey digital token. Although, their installation methods gave me a better idea of how these drivers are supposed to work with the signing middleware.

Couple of days ago, with better understanding of how these drivers work, I thought that these should also work in Fedora 30 system (which is my main OS), I set out for another attempt.

How to
  1. Removed all the wdtokentool-proxkey, wdtokentool-trustkey, wdtokentool-eMudhra, ProxKey_Redhat and such drivers, if installed; to start from a clean slate.
  2. Download WatchData ProxKey (Linux) *New* driver from eMudhra.
  3. Unzip and install wdtokentool-ProxKey-1.1.1 RPM/DEB package. Note that this package installs the TRUSTKEY driver (usr/lib/WatchData/TRUSTKEY/lib/, not ProxKey driver (/usr/lib/WatchData/ProxKey/lib/ and it seems the ProxKey token only works with TRUSTKEY driver!
  4. Start pcscd_wd.service by systemctl start pcscd_wd.service (only if not auto-started)
  5. Plug in your PROXKey token. (journalctl -f would still show the error message, but — lesson learned — this error can be safely ignored!)
  6. Download emsigner from GST website and unzip it into your ~/Documents or another directory (say ~/Documents/emSigner).
  7. Ensure port 1585 is open in firewall settings: firewall-cmd --add-port=1585/tcp --zone=FedoraWorkstation (adjust the firewall zone if necessary). Repeat the same command by adding --permanent to make this change effective across reboot).
  8. Go to ~/Documents/emSigner in shell and run ./ (make sure to chmod 0755, or double-click on this script from a file browser).
  9. Login to GST portal and try to file your return with DSC.
  10. f you get the error Failed to establish connection to the server. Kindly restart the Emsigner when trying to sign, open another tab in browser window and go to https://localhost:1585 and try signing again.
  11. You should be prompted for the digital signature PIN and signing should succeed.

It is possible to use this digital token also in Firefox (via Preferences → Privacy & Security → Certificates → Security Devices → Load with Module filename as usr/lib/WatchData/TRUSTKEY/lib/ as long as the key is plugged in. Here again, you can skip the error message unable to load the module.

Akademy 2019: new goals, new board, new president

Sunday 6th of October 2019 05:43:53 PM

Akademy 2019 has been over for a little more than 3 weeks now. It’s been a great and eventful Akademy. Let’s take a look at what happened.

New goals

In 2017 we chose 3 goals to work towards together as a community. Those were improved onboarding, usability and productivity of basic software and privacy. For all of them we’ve made great progress and I’m thrilled by the result. But the original idea behind the goals wasn’t just to get work done on some specific goals. The other reason was to give us something to work towards together as a community (as we were starting to lose that uniting factor that binds us all together as KDE grows) and to get in new people by making it clearer what we need help with and where to dive in. Looking back now my expectations were exceeded quite a bit for those. It makes me so happy to see a lot of new people joining and being enthusiastic about contributing to KDE in meaningful ways – even going so far as to proposing 2 of the 3 selected initial goals.

At the beginning of the year we decided it was time to shift our focus to new goals and started the process for proposing and voting on new goals. We started Akademy with a review of the initial goals and then I had the pleasure to announce the new ones:

  • Wayland: We will finalize the transition to Wayland and embrace the future of desktop. This is a necessary step towards a lot of new features and improvements our users want to see, like better touchscreen support.
  • Consistency: As KDE’s software evolved small and large inconsistencies creep in that make our software less pleasant to use. It also means having to maintain different implementations of essentially the same component like a scrollbar. We will identify and remove these inconsistencies in all of KDE’s software.
  • All about the Apps: We want to refocus on KDE’s applications and make them easier to discover and install for our users.

I’m looking forward to the progress on these goals over the next 2 to 3 years. To start helping out please have a look at the goals page and get in touch.

New board

As every year during Akademy we held the general assembly of KDE e.V. and elected new board members for the two open positions. I’m delighted to welcome Adriaan and Neofytos to the board.

After the election it was time to decide on the board positions. I have been on the board of KDE e.V. for 8 years now and the president for 5 years. Leading this organisation has been one of the most important things I have done so far and I believe I have made an impact. At the same time I am convinced that it is not healthy for an organisation to be lead by the same person for too long. That’s why at the start of my current term we discussed how we see the future of the organisation and our role in it. It was clear that Aleix has been doing invaluable work on the board as the vice president and would clearly be a good choice to lead the organisation in the future. We decided that we will have at least one year at the end of our current term where I will be on the board to support and advice and ensure a smooth transition for Aleix. This time has come now. I would like to ask you all welcome Aleix as the new president of KDE e.V. and provide him with all the support he needs. I am looking forward to working with our new Board and see where we will take KDE e.V. together in the next years.

The new board positions we agreed on are as follows:

  • Aleix Pol i Gonzalez: President
  • Lydia Pintscher: Vice President
  • Eike Hein: Vice President and Treasurer
  • Adriaan de Groot: Board Member
  • Neofytos Kolokotronis: Board Member
Next Akademy

We are still looking for a host for Akademy 2020. If you’d like to host the KDE community next year please have a look at the call for hosts which has all the details and reach out if you have any questions.

This week in KDE: apps, apps apps!

Sunday 6th of October 2019 04:02:57 AM

It’s been a big week for Dolphin with some new features, plus various improvements for other apps. Among them, KDE developer Christoph Cullmann went on a High DPI rampage and and fixed visual glitches in Kate and Okular on Windows when using a High DPI scale factor, and made great progress towards fixing the infamous line glitches in Konsole when using fractional scaling. Though still not quite perfect, it’s much better now.

Beyond that, a bunch of great things are in development which I can’t announce yet, but I guarantee that you’ll like them once they land in the coming weeks!

New Features Bugfixes & Performance Improvements User Interface Improvements How You Can Help

Check out and find out ways to 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!

Finally, consider making a tax-deductible donation to the KDE e.V. foundation.

Recently Used ioslave

Saturday 5th of October 2019 08:05:00 AM

With D7446 landing, the new ioslave recentlyused:/ ioslave will become user visible with KDE Frameworks 5.63. This differential revision adds two entries "Recent Files" and "Recent Locations" to the place panel (in dolphin and open/save dialogs)

It leverages the ioslave recentlyused:/ introduced in D22144, allowing to access KActivity data. KActivity is the service that provides "recent" elements to kickoff menu and is activity aware as the name suggests.

So now "Recent Files", "Recent Locations" in the places panel share the same underlining data with kickoff.

But recentlyused:/ can be used to create your virtual folders for recent files or folders. For instance

  • recentlyused:/files?type=video/*,audio/*

To filter recently accessed video and audio files.

  • recentlyused:/files?path=/home/meven/kde/src/*&type=text/plain

To filter recently accessed text files in any subdirectory of /home/meven/kde/src/

  • recentlyused:/locations?path=/home/meven/kde/src/*

To filter recently accessed folders in any subdirectory of /home/meven/kde/src/

You can read the documentation for more details.

When working on this new feature, It was a great time to improve KActivity. So I allowed KActivity to ingest data from gtk applications in differential D23112.

I want to thank Ivan Lukić for building KActivity service and library and reviewing most of this work. And I want to thank all the other reviewers involved.

More in Tux Machines

Games: vkBasalt, Ikey Doherty, Crusader Kings II, Sunless Skies

  • vkBasalt, an open source Vulkan post processing layer for Contrast Adaptive Sharpening

    This is an interesting open source project! vkBasalt is a new Vulkan post processing layer that currently supports Contrast Adaptive Sharpening. Unlike Radeon Image Sharpening, vkBasalt supports Linux and works with both NVIDIA and AMD. This isn't entirely reinventing the wheel though, as it's partly based upon the ReShade port of AMD's CAS. Still, it's fun to see what hackers are able to do with little layers like this, especially when we don't have official support.

  • Ikey Doherty Launches Open-Source Focused Game/Software Development Company

    Well known open-source figure Ikey Doherty who rose to prominence for his work on the Solus Linux distribution and then went on to work on Intel's Clear Linux project is now having his hand at game engine development. Ikey shared with us that he left Intel back in May to begin his new adventure: Lispy Snake. Lispy Snake is a UK software development firm that at least initially is working on a game engine and games. Given Ikey's experience, the firm is focused on leveraging open-source technologies.

  • After making Crusader Kings II free, Paradox are now giving away The Old Gods expansion

    It's been a bit of a whirlwind of Paradox news recently and we have even more to share. With a tiny amount of effort, you can get The Old Gods expansion for Crusader Kings II free. This is after Crusader Kings II was set free to play and Crusader Kings III was announced just like I suggested it would be.

  • Failbetter Games are upgrading owners of Sunless Skies to the Sovereign Edition next year

    Failbetter Games have announced that Sunless Skies is getting a bit of an upgrade with the Sovereign Edition and it's going to be free to existing purchasers when it's release next year. Part of the reason, is that it will be releasing on Consoles so they're polishing the experience up some more. It's not just a special console edition though, it's coming with a bunch of new content and various improvements to the flow of it. To release on PC at the same time as Consoles, free for existing players.

What To Do After Installing Ubuntu 19.10 Eoan Ermine

In this traditional article special for Ubuntu 19.10 Eoan Ermine you will find my suggestions and recommendations in 3 parts, work (including date/time adjustments, productivity tools), non-work (including extensions, podcasts, RSS, codecs), and system maintenance (including CPU-X, repository setup, auto-backup). I also have suggestion for you wanting Global Menu on this Eoan Ermine OS at the end. Adjust it once and use freely everyday. Finally, I hope Ubuntu 19.10 will be your best tool you could imagine to use without worry. Happy working! Read more

Python Programming Leftovers

  • Pylint: Making your Python code consistent

    Pylint is a higher-level Python style enforcer. While flake8 and black will take care of "local" style: where the newlines occur, how comments are formatted, or find issues like commented out code or bad practices in log formatting. Pylint is extremely aggressive by default. It will offer strong opinions on everything from checking if declared interfaces are actually implemented to opportunities to refactor duplicate code, which can be a lot to a new user. One way of introducing it gently to a project, or a team, is to start by turning all checkers off, and then enabling checkers one by one. This is especially useful if you already use flake8, black, and mypy: Pylint has quite a few checkers that overlap in functionality.

  • PyDev of the Week: Sophy Wong

    This week we welcome Sophy Wong (@sophywong) as our PyDev of the Week! Sophy is a maker who uses Circuit Python for creating wearables. She is also a writer and speaker at Maker events. You can see some of her creations on her Youtube Channel or her website. Let’s take a few moments to get to know her better!

  • Erik Marsja: Converting HTML to a Jupyter Notebook

    In this short post, we are going to learn how to turn the code from blog posts to Jupyter notebooks.

Proper Linux Screen Sharing Coming to Chromium & Electron Apps like Discord

A patch to add ‘screen enumeration’ to the Chromium browser is currently pending merge upstream. Once this fix is accepted Chromium and Chromium-based apps (like Discord) will finally support full screen sharing on Linux in a manner similar to that on Windows and macOS. Not being a multi-monitor user, or someone who shares their screen often, I wasn’t aware of this particular limitation until recently. So I’ll explain. Read more