November 07, 2018

We are pleased to announce that the 3rd bugfix release of Plasma 5.14, 5.14.3, is now available in our backports PPA for Cosmic 18.10.

The full changelog for 5.14.3 can be found here.

Already released in the PPA is an update to KDE Frameworks 5.51.

To upgrade:

Add the following repository to your software sources list:


or if it is already added, the updates should become available via your preferred update method.

The PPA can be added manually in the Konsole terminal with the command:

sudo add-apt-repository ppa:kubuntu-ppa/backports

and packages then updated with

sudo apt update
sudo apt full-upgrade



Please note that more bugfix releases are scheduled by KDE for Plasma 5.14, so while we feel these backports will be beneficial to enthusiastic adopters, users wanting to use a Plasma release with more stabilisation/bugfixes ‘baked in’ may find it advisable to stay with Plasma 5.13.5 as included in the original 18.10 Cosmic release.

Should any issues occur, please provide feedback on our mailing list [1], IRC [2], and/or file a bug against our PPA packages [3].

1. Kubuntu-devel mailing list:
2. Kubuntu IRC channels: #kubuntu & #kubuntu-devel on
3. Kubuntu ppa bugs:

November 06, 2018

Some years ago I added an embedded Twitter feed to the side of Planet KDE.  This replaced the earlier feed manually curated feeds from and twitter which people added but had since died out (in the case of and been blocked (in the case of Twitter).  That embedded Twitter feed used the #KDE tag and while there was the odd off topic or abusive post for the most part it was an interesting way to browse what the people of the internet were saying about us.  However Twitter shut that off a few months ago which you could well argue is what happens with closed proprietary services.

We do now have a Mastodon account but my limited knowledge and web searching on the subject doesn’t give a way to embed a hashtag feed and the critical mass doesn’t seem to be there yet, and maybe it never will due to the federated-with-permissions model just creating more silos.

So now I’ve added a manually curated Twitter feed back to Planet KDE with KDE people and projects.  This may not give us an insight into what the wider internet community is thinking but it might be an easy way to engage more about KDE people and projects as a community.  Or it might not, I haven’t decided yet and I’m happy to take feedback on whether it should stay.

In the mean time ping me to be added to the list or subscribe a bug on to request you or someone you know or or your project be added (or removed).  Also volunteers wanted to help curate the feed, ping me to help out.

Facebooktwittergoogle_pluslinkedinby feather

Welcome to Part 4 of my Blog series about Sharing Files to and from mobile Qt Apps.

Part 1  was about sharing Files or Content from your Qt App with native Android or iOS Apps,
Part 2 explained how to share Files with your Qt App from other native Android Apps,
Part 3 covered sharing Files with your Qt App from other native iOS Apps.
Part 4 implements FileProvider to share Files from your Qt App with native Android  Apps.



FileProvider Content URIs

Starting with Android 7 (SDK 24) you cannot use File URIs anymore to share Files to other Android Apps – you must use a FileProvider to share Files using a Content URI.

To avoid this you could use Target SDK 23 as I did for the first parts of this blog.

But starting November 1, 2018 Google requires for updates to Apps or new Apps on Google Play to target Android 8 (Oreo, API level 26) or higher, so there’s no way to share Files on Android without using a FileProvider.

Here’s the workflow to update your sharing App from File URI to FileProvider with Content URI.

 Android Manifest

As a first step we have to add some info to AndroidManifest.xml :

<application ...>
<provider android:name=""
android:grantUriPermissions="true" android:exported="false">
<meta-data android:name=""

The Provider needs the Libraries. To include them, please add to your build.gradle file:






This will only work if you have installed the Android Support Repository.

In your QtCreator Preferences → Devices → Android, you get easy access to Android SDK Manager. Please check that under Extras the Android Support Repository is installed:


In your Android Manifest you see a reference to resources @xml/filepaths. You have to add a new File filepaths.xml under android/res/xml:


The content of filepaths.xml:

<paths xmlns:android="">
<files-path name="my_shared_files" path="share_example_x_files/" />

This is the mapping to the folder where Android will find your File to be shared. This Folder is inside your AppData Location. Remember: in blog part 1 we used a shared documents location to provide Files to other apps. Now for Android we don’t use a shared location but a path inside our AppData location. Starting the app I always check if the folder exists:


#if defined (Q_OS_IOS)
QString docLocationRoot = QStandardPaths::standardLocations(QStandardPaths::DocumentsLocation).value(0);
#if defined(Q_OS_ANDROID)
QString docLocationRoot = QStandardPaths::standardLocations(QStandardPaths::AppDataLocation).value(0);
mDocumentsWorkPath = docLocationRoot.append("/share_example_x_files");
if (!QDir(mDocumentsWorkPath).exists()) {
// create the QDir


Last important part in Android Manifest specifies an Authority:


This name must be unique – so it’s a good idea to use your package name and append .fileprovider.

 QShareUtils Java Code

As a last step you must do some small changes in

Import FileProvider and ShareCompat from



Reference the Authority as defined in AndroidManifest:

private static String AUTHORITY="org.ekkescorner.examples.sharex.fileprovider";

You must also create your Intents in a different way:

// the old way: Intent sendIntent = new Intent();

Intent sendIntent = ShareCompat.IntentBuilder.from(QtNative.activity()).getIntent();

You’re done ��

As a positive side effect, it’s now much safer to share Files because they are inside your App Sandbox located and not in public shared Folder.


Here‘s a short Overview about the Android FileProvider implementation:



Some issues from Sharing Files to other Android Apps

Android: Sharing to Google Fotos App

If you try to edit an Image in Google Fotos App using the FileProvider, the Fotos App appears in the list of available Apps, but then reports that the File cannot be edited. Viewing works as before.

Only current workaround is to use another Foto Editing App.


Thanks again to Thomas K. Fischer @taskfabric for his valuable input on this topic.

Have Fun

In the first part of this blog series, I told you that I needed sharing between Apps on Android and iOS for a DropBox – like customer App. This App is running very well since some months as inHouse App at customer site, so it’s not publicly available. But my example App is Open Source and now it‘s a good time to download current Version from Github, build and run the Sharing Example App.

This was the last part of this blog series, but stay tuned for some other blogs about „Qt mobile Apps in the Enterprise“ and „QML Camera on Android and iOS“.

The post Sharing Files on Android or iOS from or with your Qt App – Part 4 appeared first on Qt Blog.

This year’s North American stop on the Qt World Summit world tour was in Boston, held during the Red Sox’s World Series win. Most of us were glad to be flying home before celebration parades closed the streets! The Qt community has reason to celebrate too, as there’s an unprecedented level of adoption and support for our favorite UX framework. If you didn’t get a chance to attend, you missed the best Qt conference on this continent. We had a whole host of KDABians onsite, running training sessions and delivering great talks alongside all the other excellent content. For those of you who missed it, don’t worry – there’s another opportunity coming up! The next stop on Qt’s European tour will be with Qt World Summit Berlin December 5-6. Be sure to sign up for one of the training sessions now before they’re sold out.

Meanwhile, let me give you a taste of what the Boston Qt World Summit had to offer.

Strong Community

One thing was clear: after 23 years, Qt is still going strong. The Qt Company and the greater Qt community have contributed 29,000 commits and fixed 5000 bugs between Qt 5.6.3 and the current head branch. Very kindly and much appreciated, Lars Knoll, CTO of the Qt Company, recognized KDAB as the largest and longest external contributor to the ever-growing Qt codebase in his opening keynote. All of this effort – and most of the things discussed in this blog – come to fruition in Qt 5.12 LTS, with an expected release date at the end of November.

Qt is Everywhere

Training day @ QtWS18

Training day @ QtWS18

Another observation is that Qt is everywhere. Lars shared that it has now been downloaded five million times, a huge increase from three and a half million just two years ago. The more than 400 attendees at Qt World Summit Boston came from over 30 industries, representing academia, automotive, bioscience, defense, design, geo imaging, industrial automation, energy and utilities, and plenty more. All the training sessions and the talks were well attended, most to full capacity with eager attendees standing at the back.


Cross-platform Qt

Is there a reason for this upsurge in Qt interest? Multi-platform is now a critical strategy for nearly every product today. Since Qt provides comprehensive support for mobiles, desktops, and embedded, it has become a top choice for broad cross-platform UX development. It’s not enough to release a cool, innovative product – if it doesn’t link to your desktop or provide a mobile-compatible connection, it often can’t get off the ground.

Qt for Microcontrollers

Qt for Microcontrollers

While there weren’t too many new platforms announced that Qt doesn’t already run on, there was invigorated discussion and demoing at the low end of the embedded spectrum. Qt on Microcontrollers is a new initiative, trimming Qt down to run on smaller MMU-less chips like the Arm Cortext-M7. While still needing some optimization and trimming to get to the smallest configurations, Qt on Microcontrollers currently takes 3-10MB of RAM and 6-13MB of ROM/Flash, making it an attractive option to create one code base that can address a range of products regardless of form factor.

Broad Offering

Another reason behind Qt’s increasing prominence is the breadth of the Qt offering. From 3D through design to web, there are many new improvements and components that make Qt a safe choice for teams that need to continually expand their product’s capabilities. While there have been a host of new additions to the Qt portfolio, here are a few of the more notable ones.

Qt 3D Studio

In a programmer’s worldview, design is often a nice-to-have, yet not a must-have. I guarantee that perspective will change for anyone who had the good fortune of attending Beyond the UX Tipping Point, the keynote from Jared Spool, the so-called Maker of Awesome from Center Centre.

Kuesa preview

Kuesa preview

If you weren’t able to attend the conference, I recommend you watch Jared’s video. Once you do, you’ll be glad that the Qt Company just released Qt Design Studio to help build great interfaces. KDABian Mike Krus also gave a tantalizing preview of Kuesa, a new KDAB tool architected to marry the worlds of design and development. We’ve got some info on our Kuesa webpage (and a screenshot here) – keep an eye out for more to come soon.

Qt for Python

As an aficionado of the language, I’ve always found Python seriously missing UX support – there are solutions but none that are ideal. With the release of Qt for Python however, Python finally has a capable, regularly maintained UI tool with a huge community. This includes integration into the Qt Creator IDE; it will now go from a technical preview to officially supported in Qt 5.12 and beyond. I predict that this will soon make Qt the UI framework of choice for Python – happy news for the many folks who prefer C++ be neatly tucked under the covers.


There are some clear benefits to running code within a browser recognized by cloud companies – lightweight (and often no) installation required, access everywhere to centralized, managed, and backed-up data stores, along with immediate and hassle-free updates. Those same benefits have now come to Qt with the support of WebAssembly. This lets you compile your Qt application (and with C++ too, not just QML/Qt Quick, mind you) into a WebAssembly compatible package to be deployed on a web server. This technology is now in tech preview, but it’s an active project that will be able to expand the reach of Qt into the cloud realm.

Building Bridges

Frances and Ann #color4cancerMaybe all this flurry of Qt activity is also because it provides a common platform that can build a bridge between disparate disciplines like art, technology, and research. An example of this is nanoQuill, a collaboration between KDAB, the Qt Company, a biotech company: Quantitative Imaging Systems (Qi), and Oregon Health & Science University that crowd-sources electron microscope images of cancer cells for people to artfully color, thus #color4cancer.

Based on Qi’s vision of merging programming and computer graphics with microscopy, nanoQuill built an application to use machine learning on these human colored images to discern cell micro structures, which in turn helps us understand how tumour cells develop resistance to escape cancer-targeting drugs.

Final #color4cancer cell

Final #color4cancer cell

Currently, nanoQuill allows anyone to #color4cancer and post their artwork via their website gallery, a coloring book, nanoQuill: The Coloring Book of Life published in December of 2017, and will soon be in a form of an app. We had a large nanoQuill poster in our booth that people colored throughout the event, allowing Qt World Summit attendees to truthfully say they were not only learning about the latest Qt developments, they were helping fight cancer with art.

CNC Craftspeople

Shaper Origin in action

Shaper Origin in action

Another great merger of art and technology was seen at our KDAB customer showcase from a company called Shaper Tools. If you think you saw a table full of dominos at the edge of our booth, we weren’t passing the time playing – those “dominos” were actually optical registration tapes that allowed Shaper’s hand-held CNC machine to perfectly cut complex shapes. Look at some of the amazing projects that woodworkers have created using the Shaper Origin, and you’ll see that advanced technology doesn’t have to replace master craftsmanship – it can enable it.


Whether you attended Qt World Summit 2018 to learn about the details of C++ and Qt or the industry trends in medical, automotive, and IoT, there was lots in Boston for everyone. If you care to share in the comments, we’d love to hear what your favourite session was and the best thing you learned.

The post Qt World Summit 2018 Boston appeared first on KDAB.

November 05, 2018

Chrys took up the role of coordinator, fixer and new master of KDE accessibility, which I think is just fantastic. We have been working on what he decided to be most important, mostly chrys fixing issues to make things work with Plasma and screen readers. After getting Orca to read desktop icons he spent quite some time to improve the various start menus.

With so much fresh energy around I started poking at KWin, which was a bit scary, to be honest. It was fun to read code I hadn’t looked at before. In the end, after I spent a while working on a huge work-around, it turned out that we could enable the task switcher to work with relatively little code added. The main issue was that KWin does really not want to give focus to the task switcher. My first attempt was to write sub-classes of QAccessibleInterface for everything in KWin. That started to work, but during some debugging I realized that KWin was actually creating the regular representations for its UI, it was just not properly announcing them to Orca. Thus I threw away my almost complete prototype. At least I verified that it’s possible to create an entire Qt UI for screen readers only, disconnected from the actual UI. Thanks to QAccessible::installFactory it is nowadays pretty easy to instantiate custom representations (subclasses of QAccessibleInterface). Once that was done, I started over and made the task switcher think it’s an active window without letting X11 or Wayland know. That way we get the right dbus messages sent to Orca, when alt-tabbing through the windows. Thanks David, Martin, Roman and Vlad for your input :)

More work is needed on Plasma when it comes to keyboard usability – getting the focus onto the panel and the various notification areas. I’m sure some great ideas are already being worked on, but I can see this easily as a blocker going forward. Configuring the network, checking the battery status and other tasks are really important after all.

I wrote the basics for Kate to work with screen readers in 2014 and it seems like there are some improvements needed when working with Orca, luckily we got some help from Joanie (who maintains Orca) to figure out what goes wrong when navigating by lines. Now it’s just to verify the findings and get the issues sorted out.

If you have a bit of time and want to help, we need someone with good English skills to help clean up the wiki. Good written instructions are really helpful when getting blind users to try Plasma for the first time. We’d also be happy if more people joined in testing and improving things. Join the KDE Accessibility mailing list to join the fun.

Welcome a new kid on the block from Latte land... !

Window Buttons Applet presents its first release to the public. I always wanted to be able to make my top panel to behave as a window titlebar whenever it is needed. To achieve this some special applets are needed and of course specific behavior from the top panel.

- Application name and icon
         (you can find some in the kde store)
- Global menu
         (official plasma applet is perfect for this)
- Window Buttons
         (it was missing so now you can welcome it)

Top Panel Behavior:
- Drag active window by dragging the empty space of the panel
         (Latte Git version supports this by default)
- Double-click on the empty space of the panel it maximizes/restore the active window
         (Latte Git version supports this by default)

slide in/out animation

  • Current mode, in order to automatically update button appearance according to plasma current window decoration
  • Choose the decoration theme you would like to use for the buttons
  • Support Minimize/Maximize/Close/OnAllDesktops buttons
  • Support icon-based Aurorae themes such as .svg and .svgz
  • Identify system's available decorations automatically
  • Option to show buttons only when there is an active-maximized window in the current screen
  • Slide out/in animation for showing/hiding buttons
  • Reorder buttons according to user preference
  • Various appearance settings in order to adjust margins. This way you can also change the button size
  • Automatically discover Aurorae theme settings in order to make buttons look identical to window buttons
  • Support new Latte coloring mechanism from Latte git version
  • a beautiful and easy to use settings window

settings window

Project Page

November 04, 2018

Today we released version 1.10 of the KDE Connect Android app. Therefore it’s time again to share what we’ve been working on.

Targeting Android Oreo

As of this month app updates uploaded to Google Play need to target Android 8. This has several implications. Targeting Oreo comes with an updated Support Library, which forces us to drop support for Android 4.0 and below. According to our Google Play data this will affect approximately 400 users. We are very sorry about that, but these users won’t receive further updates. Furthermore, Android Oreo introduced some restrictions in regard to apps running in the background. In the future in order to be able to run in the background KDE Connect needs to show a persistent notification. The good news is that you can hide the notification. The (slightly) bad news is that we cannot do it by default. To hide the notification you need to long-press it and switch it off. Other notifications from KDE Connect are unaffected by this.

1.10 Changes

These are the main changes of version 1.10. Not mentioned are countless small improvements and under-the-hood changes.

Mouse input now works with the same speed independent from the phones pixel density.

The media controller now allows stopping playback.

Run command supports triggering commands using kdeconnect:// URLs. Useful for integration with NFC tags and 3rd-party apps.

The notification filter allows quickly (de-)selecting all apps.

Several settings scatterd across the UI have been bundled into a single settings screen.

A lot of work has gone into how we handle SMS on the Android side in preparation for something huge. Stay tuned ��

Other changes

The desktop side has improved as well since my last post.

The windows build of KDE Connect gained support for keyboard input.

The plasmoid gained a couple of additions. In my last update I mentioned that it is possible to run commands from there. It is now also possible to lauch the command setup from there. Furthermore it is now possible to select files to share them from there.

The Linux Mobile App gained many visual improvements and features. It now supports sharing files and controlling the system volume.

If you are using Itinerary you can send booking information from the PC directly to the phone via KDE Connect.

It is now possible to send files directly from Pantheon Files (and other Elementary apps) and Thunar via KDE Connect.

Again, there are countless other improvements that I did not explicitly mention.

A big thanks to all people who contributed to this!


The KMyMoney development team is proud to present version 5.0.2 of its open source Personal Finance Manager.

Although several members of the development team had been using version 5.0.1 in production for some time, a number of bugs and regressions slipped through testing, mainly in areas and features not used by them.

These have been reported by many of you and the development team worked hard to fix them in the meantime. The result of this effort is the new KMyMoney 5.0.2 release.

Despite even more extensive testing than usual, we understand that some bugs may have slipped past our best efforts. If you find one of them, please forgive us, and be sure to report it, either to the mailing list or on

From here, we will continue to fix reported bugs, and working to add many requested additions and enhancements, as well as further improving performance.


Many thanks go out to KDE’s sysadmin team. Ben in particular supported us with numerous hours to get daily builds onto the KDE CI system. This even includes MS-Windows installers. Please feel free to visit our overview page of the CI builds at

Thanks also to those users who provided valuable support by sending in test files saved by earlier versions as far back as KMyMoney 4.6.6. Using these files we were able to fix some upgrade problems.

The details

Here is the list of the bugs which have been fixed:

  • 283784 when using the ‘amount entry widget’ in the ledger view, it hangs off the screen
  • 340244 Update the documentation screenshots
  • 340902 Saving anonymous file loses relation between investment accounts and brokerage accounts
  • 343878 investment account does not have key value pair for lastImportedTransactionDate
  • 344409 User is asked to create a new category in splits table if change is aborted
  • 368190 “Update Stock and Currency Prices” doesn’t work when base currency is South Korean Won(KRW)
  • 385180 investactivities.cpp: 8 * Redundant condition
  • 390750 Entering fees in Investment account (ie broker fee) doesn’t appear with transaction
  • 391251 Double free or corruption when creating a new asset account.
  • 392110 Missing 2 .h files in /usr/include/kmymoney
  • 392372 5.0.1 is shown as 5.0.0 in splash screen and about dialog
  • 392407 Home page Net Worth Forecast Not correct
  • 392477 Cannot create new investment
  • 392519 Reports Configure dialog uses a “Find” button instead of an “Apply” button.
  • 392603 OFX – Mapping Account – Last Update Change causing Update Account greying – Online Settings disappears
  • 392735 Crash on viewing or trying to add data into any account
  • 393168 [Patch] Fix working week in 5.x/master
  • 393752 Budgeted vs. Actual report: Budgeted values broken if ticks selected to Bi-Monthly, Quarterly or Yearly
  • 394384 MySQL connection error with dbname “KMyMoney”
  • 394394 problems adding securities to investment accounts
  • 395025 csv writer generates invalid file in case field delimiter is used in any field
  • 395040 CSV Export of Investment Accounts does not issue transactions on non-English kmymoney installations
  • 395100 Last selected view
  • 395291 KMyMoney gitt head master, crash on opening any account
  • 395459 Ledger Input: Category Field
  • 395985 QIF Export manually typing file path adds .qif after every character
  • 396174 Cannot create new investment
  • 396405 Last digit of date field is obscured by “details column” in ledger view
  • 396759 CSV: ordering of buttons when finishing wizard
  • 396886 Online Banking Behavior Change Since 4.8
  • 396987 Payee “Suggest a category” does not work
  • 397020 Opening dates in “all dates” plot
  • 397021 Net worth does not appear
  • 397023 Default color of imported transaction in the ledger
  • 397025 Kmymoney version in help menu, splash screen and apt are different
  • 397436 Net worth forecast graph in new file shows formatting problem
  • 397457 double clicking in ledger activates edit, but does not select transaction clicked on
  • 397675 cannot connect to kmysql database because of prepended slash
  • 97824 Limit in number of securities
  • 398168 écran d’accueil
  • 398394 Account information report crashes
  • 398409 KMyMoney does not prompt for password when connecting to database
  • 399244 KMyMoney does not work properly when changing from one file to another
  • 399309 “show balance chart” does not show 3 months forecast in the future anymore
  • 399378 Unable to Update Prices
  • 399673 importer file selector does not show QIF files and does not remember last import directory

Here are some of the new improvements found in this release:

  • 396797 Online web source “KMyMoney Currency” does not support price pairs without decimal
  • Speedup loading of home page
  • KDE binary factory builds for MS-Windows installer
  • Add color coding of pos/neg amounts for ‘posted value’ column
  • Fix online credit transfer creation
  • Some features have been moved to plugins so that they can be turned off if unused
  • Provide correct version information for all shared object files
  • Improved handling of “Save as…” logic
  • Allow to add a timezone offset for OFX import on account basis
  • Moved GPG key handling to XML plugin
  • Accounts can now take a URL for direct access of the online banking web-site
  • Support more than one online banking provider during update
  • Added option to keep linebreaks in memo of AqBanking transaction imports
  • Remove reference to online balance when unmapping account
  • Added feature to make DB password visible during input

For a full list of the changes please check out the changelog. We highly recommend upgrading to 5.0.2.

The KMyMoney Development Team

The Skrooge Team announces the release 2.16.2 version of its popular Personal Finances Manager based on KDE Frameworks


  • Correction bug 398683: Periodic crashes on dashboard
  • Correction bug 397611: [ERR-5]: Format de date non pris en charge importation boobank
  • Correction bug 399480: Grammar mistake in .po file / - s missing in simple
  • Correction bug 399482: Wrong plural form in .po-File
  • Correction bug 399483: Spelling mistake in .po file "Transfert" should be "Transfer"
  • Correction bug 399672: Modifying multiple selected operations into transfers creates empty category and tracker if not identical
  • Correction: Ofx import must import FEE as debit
  • Correction: Document migration fails if format is "d.MM.yy 'г" (see:
  • Correction: Inconsistency in "Incomes vs Expenditures" on sub operations with trackers
  • Correction: Build on windows
  • Correction: Use CPU instead CPU for QML (needed for printing)
  • Correction: Set background color on print to avoid print preview with black background on dark theme
  • Feature: Selection above, below or parent when delete an object
  • Performances: Solve performance issue due to new feature : More tooltips on "Operations" table

Get it, Try it, Love it...

Grab Skrooge from your distro's packaging system. If it is not yet included in repositories, go get it from our website, and bug your favorite distro for inclusion.

Now, you can try the appimage too !

If you want to help me to industrialise the windows version, you can get it from here:

Get Involved

To enhance Skrooge, we need you ! There are many ways you can help us:

  • Submit bug reports
  • Discuss on the KDE forum
  • Contact us, give us your ideas, explain us where we can improve...
  • Can you design good interfaces ? Can you code ? Have webmaster skills ? Are you a billionaire looking for a worthy investment ? We will be very pleased in welcoming you in the skrooge team, contact us !

Get ready for the flood, because have loads of amazing stuff for you in this week’s Usability & Productivity update! There are a ton of pictures today, so hold onto your hats and be glad you don’t have to access the internet over a 56k modem (unless you do have to access the internet with a 56k modem, in which case, my condolences):

New Features


UI Polish & Improvement

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 my efforts to perform, guide, and document this work seem useful and you’d like to see more of them, then consider becoming a patron on Patreon, LiberaPay, or PayPal. Also consider making a donation to the KDE e.V. foundation.

November 03, 2018

We continue adding support for more data formats that can be imported into LabPlot. As part of the upcoming release we add the support for JSON file and for ngspice raw file format which we want to introduce in this short blog post.

After the selection of a JSON file in the “Import File” dialog, its content is shown in a tree view in a manner that many user will be familiar with from other JSON viewers. The relevant parts in a such a JSON file that one usually wants to visualize are arrays and objects. Once the root element that needs to be imported is selected, LabPlot automatically recognizes its type and the type of its children and generates a two dimensional preview of the data to be imported. This works the same for arrays

JSON array
Preview of JSON array

as well as for JSON objects

JSON object
Preview of JSON object

After such a local file was imported, the plotting of data can be done as usual. The part that is of more practical interest, namely the import of data from online web services like stock prices, weather data, data monitoring services, etc., still needs to be implemented. Such services usually exchange the data in JSON format and the features described above can be considered as the preparational steps also in this direction. This is something for the near future.

In the previous release we made the support for live data available. To demonstrate this feature we used an example based on the results of calculations done in Gnucap – an open-source circuit simulator. The Gnucap simulation was controlled by a small PyQt GUI and the results where written out to an ASCII file which was then consumed by LabPlot (import of live data and its visualization). To further support this community, we decided to add the support for native raw format of ngspiceanother open-source application for circuit analysis. We read both flavors of it – binary and ASCII. When opening such a file, LabPlot auto-detects the ngspice raw format and selects the proper import filter.

To demonstrate this, we use a simple circuit consisting of a junction gate field-effect transistor and of two variable voltages – gate-source and drain-source:


The behavior of such a transistor is usually studied with the help of its “characteristic curves” – the transfer characteristic showing the current as the function of the gain-source voltage and the output characteristic showing the current as the function of the drain-source voltage. This time the calculation is done with ngspice and we read the produced raw files with the new import filter:

Transistor Characteristic Curves

To generate the second plot where a family of Id curves is calculated for different values of Vgs, we had to implement a new feature in LabPlot to allow to only connect points that are monotonically increasing. Since all the curves in this family are put into the same data set, without this options the end points of the lines would have been connected with the origin which is not what the user wants to see for this specific data set.

The idea for this example and the technical input around ngspice was contributed by Orestes Mas from the Technical University of Catalonia.

November 02, 2018

By a strange coincidence the news broke this morning that RHEL is deprecating KDE. The real surprise here is that RHEL supported KDE all.  Back in the 90s they were entirely against KDE and put lots of effort into our friendly rivals Gnome.  It made some sense since at the time Qt was under a not-quite-free licence and there’s no reason why a company would want to support another company’s lock in as well as shipping incompatible licences.  By the time Qt become fully free they were firmly behind Gnome.  Meanwhile Rex and a team of hard working volunteers packaged it anyway and gained many users.  When Red Hat was turned into the all open Fedora and the closed RHEL, Fedora was able to embrace KDE as it should but at some point the Fedora Next initiative again put KDE software in second place. Meanwhile RHEL did use Plasma 4 and hired a number of developers to help us in our time of need which was fabulous but all except one have left some time ago and nobody expected it to continue for long.

So the deprecation is not really new or news and being picked up by the news is poor timing for Red Hat, it’s unclear if they want some distraction from the IBM news or just The Register playing around.  The community has always been much better at supporting out software for their users, maybe now the community run EPEL archive can include modern Plasma 5 instead of being stuck on the much poorer previous release.

Plasma 5 is now lightweight and feature full.  We get new users and people rediscovering us every day who report it as the most usable and pleasant way to run their day.  From my recent trip in Barcelona I can see how a range of different users from university to schools to government consider Plasma 5 the best way to support a large user base.  We now ship on high end devices such as the KDE Slimbook down to the low spec value device of Pinebook.  Our software leads the field in many areas such as video editor Kdenlive, or painting app Krita or educational suite GCompris.  Our range of projects is wider than ever before with textbook project WikiToLearn allowing new ways to learn and we ship our own software through KDE Windows, Flatpak builds and KDE neon with Debs, Snaps and Docker images.

It is a pity that RHEL users won’t be there to enjoy it by default. But, then again, they never really were. KDE is collaborative, open, privacy aware and with a vast scope of interesting projects after 22 years we continue to push the boundaries of what is possible and fun.

Facebooktwittergoogle_pluslinkedinby feather

At the KDE booth at Embedded Linux Conference Europe in Edinburgh the other week you might have seen the Plasma Mobile shell running on a Raspberry Pi 3, similar to what I presented at Akademy in Vienna. Besides showing the flexibility of Plasma and how nicely the Plasma Mobile shell works on touch screens, this was originally built as a demonstration of the KDE Frameworks 5 Yocto recipes.


Making KF5 easily available to users of Yocto is actually a rather old idea, and considering how popular Qt and Yocto are for user interfaces in embedded systems that makes a lot of sense. Johan Thelin started the work on this in 2014. Things went dormant for a while until this was revived during Akademy in Almería last year. By now we have 74 of the 79 KF5 frameworks available in the meta-kf5 layer.

With the KDE Frameworks being mostly libraries, it’s somewhat hard to test and demonstrate their capabilities though. So, we added another Yocto layer, meta-kde, which contains recipes for the Plasma parts needed for bringing up a basic Plasma Mobile shell.


With the monthly release cycle of KF5, sustainable maintenance has been a key focus. Besides automating the recipe updates as much as possible, getting rid of all patches against KF5 has been a priority. With 5.48.0 we finally achieved that, the KF5 Yocto recipes now use entirely unpatched upstream code. That might seem somewhat obvious, but is far from common in the Yocto world unfortunately.

A frequent reason for needing patches (and also the reason for the majority of KF5 patches resulting from this) is fixing cross-compilation issues. While cross-compilation works reasonably well out of the box for simple libraries, things get a bit more interesting when custom code generation tools get involved (example fixes: syntax-highlighting, Sonnet).

The Yocto build however is now continuously verifying that cross-compilation works for KF5, which other platforms needing this benefit from as well, like Android.


There is more to do of course, as the Phabricator workboard shows. This is an interesting playground if you want to understand, explore and tweak every little detail of a Linux-based system, e.g. for minimizing boot time or image size of a Plasma Mobile system.

In case you just want to try Plasma Mobile or do application development for it, there are probably easier ways forward though, Yocto is known to have a rather steep learning curve, which is the price you pay for its flexibility.

If you are interested in KF5 on Yocto or have questions about this, join us on the kde-embedded mailing list.

November 01, 2018

This weekend, Freenode#live is in Bristol, in the UK. It’s a FOSS-community type event. I’ll be there with David, and we’ll be doing a KDE booth to show off our technologies (which are cool) and our community (which I think is a great one). Stop by and see the Pinebook. Chat about the Nextcloud Include project. Or tell us you prefer to use i3 — that’s diversity in action (and i3 works fine together with other software from the KDE community).

October 31, 2018

Last month the X.Org Developer’s Conference (XDC) was held in A Coruña, Spain. I took part as a Plasma/KWin developer. My main goal was to simply get into contact with developers from other projects and companies working on open source technology in order to show them that the KDE community aims at being a reliable partner to them now and in the future.

Instead of recounting chronologically what went down at the conference let us look at three key groups of attendees, who are relevant to KWin and Plasma: the graphics drivers and kernel developers, upstream userland and colleagues working on other compositor projects.

Graphics drivers and kernel

If you search on Youtube for videos of talks from previous XDC conferences or for the videos from this year’s XDC you will notice that there are many talks by graphics drivers developers, often directly employed by hardware vendors.

The reason is that hardware vendors have enough money to employ open source developers and send them to conferences and that they benefit greatly from contributing directly to open source projects. Something which also Nvidia management will realize at some point.

On the other side I talked to the Nvidia engineers at the conference, who were very friendly and eager to converse about their technical solutions which they are allowed to share with the community. Sadly their primarily usage of proprietary technology in general hinders them in taking a more active role in the community and there is apparently no progress on their proposed open standard Wayland buffer sharing API.

At least we arranged that they would send some hardware for testing purposes. I won’t be the recipient, since my work focus will be on other topics in the immediate future, but I was able to point to another KWin contributor, who should receive some Nvidia hardware in the future so he can better troubleshoot problems our users on Nvidia experience.

The situation looks completely different for Intel and AMD. In particular Intel has a longstanding track record of open development of their own drivers and contributing to generic open source solutions also being supported by other vendors. And AMD decided not too long ago to open source their most commonly used graphics drivers on Linux. In both cases it is a bliss to target their latest hardware and it was as great as I imagined it to be talking to their developers at XDC, because they are not only interested in their own products but in boosting the whole ecosystem and finding suitable solutions for everyone. I want to explicitly mention Martin Peres from Intel and Harry Wentland from AMD, who I had long, interesting discussions with and who showed great interest in improving the collaboration of low-level engineers and us in userland.

Who I haven’t mentioned yet is ARM. Although they are just like Nvidia, Intel and AMD an XDC “Gold Sponsor” their contribution in terms of content to the conference was minimal, most likely for the same reason of being mostly closed source as in the Nvidia case. And that is equally sad, since we do have some interest in making ARM a well supported target for Plasma. An example is Plasma on the Pinebook. But the driver situation for ARM Mali GPUs is just ugly, developing for them is torture. I know because I did some of the integration work for the Pinebook. All the more I respect the efforts by several extremely talented hackers to provide open-source drivers for ARM Mali GPUs. Some of them presented their work at XDC.

X.Org and upstream

Linux graphics drivers are cool and all, but without XServer, Wayland and other auxiliary cross-vendor user space libraries there would be not much to show off to the user. And after all it is the X.Org Developer’s conference, most notably being home to the XServer and maybe in the future governance wise also to So after looking at low-level driver development, what role did these projects and their developers play at the conference?

First I have to say, that the dichotomy established in the previous paragraph is of course not that distinct. Several graphics drivers are part of mesa, which is again part of and many graphics drivers developers are also contributing to user land or involved in organizational aspects of X.Org and A more prominent one of these organizational aspects is hosting of projects. There was a presentation by Daniel Stone about the transition to GitLab, what was a rather huge project this year and is still ongoing.

But regarding technical topics there were not many presentations about XServer, Wayland and other high level components. After seeing some lightning talks on the first day of the conference I decided to hold a lightning talk myself about my Xwayland GSOC project in 2017. I got one of the last slots on Friday and you can watch a video of my presentation here. Also Drew De Vault presented a demo of wlroot’s layer shell.

So there were not so many talks about the higher level user space graphics stack, but some of us plan to increase the ratio of such talks in the future. After talking about graphics drivers developers and upstream userland this brings me directly to the last group of people:

Compositors developers

We were somewhat a special crowd at XDC. From distinct projects, some of us were from wlroots, Guido from Purism and me from KWin, we were united in, to my knowledge, all of us being the first time at XDC.

If you look at past conferences the involvement of compositor developers was marginal. My proclaimed goal and I believe also the one of all the others is to change this from now on. Because from embedded to desktop we will all benefit by working together where possible and exchanging information with each other, with upstream and with hardware vendors. I believe X.Org and can be a perfect platform for that.

Final remarks on organisation

The organisation of the conference was simply great. Huge thanks to igalia for hosting XDC in their beautiful home town.

What I really liked about the conference schedule was that there were always three long breaks every day and long pauses between the talks allowing the attendees to talk to each other.

What I didn’t like about the conference was that all the attendees were spread over the city in different hotels. I do like the KDE Akademy approach better in this regard: everyone in one place so you can drink together a last beer at the hotel bar before going to bed. That said there were events at multiple evenings throughout the week, but recommending a reasonable priced default hotel for everyone not being part of a large group might still be an idea for next XDC.

Dear digiKam fans and users, following the first beta release published in September, we are proud to announce the second beta of digiKam 6.0.0. Exiv2 0.27 support With this new release we are following the Exiv2 project which is in release stage for their next stable release to 0.27 planed for December 2018. This library is a main component of digiKam used to interact with file metadata, like populating database contents, updating item textual information, or to handling XMP side-car for read only files.

October 30, 2018

Hell yeah! Today I was updating my LinkedIn account and saw that I have 3 years and one month with KDE. And what a blast! KDE life is responsible for a lot of changes in my life, including my personality. I don't have enough thanks to this amazing community. Today I am part of Atelier,... Continue Reading →

It’s been a while since I posted anything related to the Akonadi EWS resource, but that does not mean that the project is abandoned – development is ongoing, albeit a little slow.

Today’s episode of “what’s going on in the EWS world” is all about authentication.

From the early days of Akonadi EWS interacting with Microsoft authentication mechanisms was a bit on the hard side. Anybody who is wondering why is invited to look into Samba history & development, which should be a good enough indication of the problems we’re dealing with here. This mostly impacted NTLM authentication, which had to be patched in KIO in order to work properly (NTLM version 2).


With the move to the cloud and introduction of Office 365 Microsoft went into more modern authentication methods. One of them is OAuth2, which was already widely used in other services, such as GMail.

One specific thing about OAuth2 is that you need to register an application, for which authentication is taking place. In case of Office 365 this means an Azure account is needed to register an application.

Evolution, which has been supporting OAuth2 chose to let the user to provide its own registered application, which effectively means that the OAuth2 authentication backend is non-functional out-of-the-box. User interaction is needed in order to enable it.

For Akonadi EWS I chose to register my own app, which means that OAuth2 should be working without any further user actions beside supplying a password.

The application registration should be working for everyone as it was registered as a global app. It is however possible that an administrator of a corporate Office 365 account may either explicitly block it or use a whitelist of apps that have access to Exchange. Should this ever happen a back door is left behind in the EWS Resource – similar to Evolution it is possible to configure a different app identifier to be used instead of the default. This can be done by manually editing the ~/.config/akonadi_ews_resource_?rc file (? will be a number starting from 0) and adding a new line:


In case of very stubborn admins, the ultimate way to work around obstacles is to use the app id from Microsoft Outlook (d3590ed6-52b3-4102-aeff-aad2292ab01c).

Strong authentication

Experienced sysadmins have already noticed that using just a username and password for authentication is proving to be not sufficient. For that purpose additional authentication steps, such as MFA (Multi-Factor Authentication) have been deployed.

Another option is to establish some form of trust against the device that is used for authentication, which ensures that access from a company owned or managed device is considered safe.

For the latter purpose Microsoft defined an additional authentication protocol called Public Key Authentication Protocol (PKey) described in [MS-PKAP]. It is used during OAuth2 authentication to prove possession of a device-specific private key. This key is being generated and registered with the Azure Directory during device enrolment into the corporate directory. This can be done by performing a Workplace Join from Windows 10 or using the InTune app on Android.

From what I can find it looks like Akonadi EWS is the first open-source implementation of the PKey authentication protocol.

Why is this so important? Depending on the security policy defined by the corporate administrator it may have decided to block access to Office 365 from outside the company network for unregistered devices or alternatively require additional authentication steps (MFA) when connecting from outside the office. By setting up Private key authentication it is possible to be seen as trusted in the same way as Windows users.

So far there are no open-source tools to register such a certificate/private key with the Azure Directory. Fortunately however the protocol has been published and I will be working on such a tool/script.

Both OAuth2 and Public/Private Key Authentication are implemented and will hopefully be part of KDE Applications 18.12 release.

What’s next on the table


I’m not done with authentication yet. There is one more authentication goodie in the pipeline.

While OAuth2 is a nice and generic solution it brings a slight drawback – you need to type your password and/or MFA token every two weeks or so.

For Office 365 and Azure Directory users there is however another way in – based on ADFS SAML authentication. This method is non-interactive and can be used with just the username/email and password. There is a catch however – if the administrator has chosen to require strong authentication when connecting outside of trusted network this method will not work unless it is used together with PKey authentication.

EWS SOAP API refactoring

In the current implementation all EWS SOAP requests have been written manually. They are in many ways copies of each other with lots of boilerplate code.

The plan is for this to be replaced by generated code.

This is a significant task to do, however when it’s done it will open up possibilities for the long awaited full calendar support and more.

Frank Karlitschek, founder of Nextcloud and recipient of this year's Reinhard von Koenig award.

Frank Karlitschek, the founder of Nextcloud, has won the Reinhard von Koenig award and will be donating the winnings, amounting to € 20,000, to start a fund called "Nextcloud Include".

The fund, set up in collaboration with KDE e.V., wants to encourage diversity in open source. It aims to help underrepresented groups participate in the global Nextcloud community and foster an inclusive and diverse space where the community can continue to collaborate and develop world-class software. Mentoring, travel support, and internships are provided as part of the program. The program is ran in collaboration with the KDE community under the umbrella of the KDE e.V.

Margit Stumpp, Member of the German Parliament (Bundestag) said:

Equal opportunities and diversity are very important issues for the future, especially in technical professions. I am pleased that Nextcloud Include is a new important initiative that is focusing on these issues".

Frank is of course very happy with the prize:

I'm extremely honored to be awarded this prize as a recognition of the incredible impact privacy issues have on our society and the importance of Nextcloud in providing a solution. By donating the prize money to a diversity goal, I hope it will help catalyze another transformation that society needs".

Lydia Pintscher, president of KDE e.V.'s Board was equally thrilled:

We'd like to congratulate Frank on winning this prize and his decision to put the money to a great cause in open source. For us, collaborating with Nextcloud in this way is a bit of a homecoming as it is one of the most successful projects to emerge from our community over the past decade".

It is worth remembering that Nextcloud started life as a KDE project.

Nextcloud, Frank and KDE would like to invite community members who want to get involved in Nextcloud but face significant social hurdles to get in touch with our Include team. You can find more information on Nextcloud Include page.

The Reinhard von Koenig award promotes excellence in progress and technology. Previous winners include notable staff members from Daimler AG and Atlatec GmbH for work on self-driving cars.

Dot Categories:

This blog shows how Qt applications can be built with Cargo. The goal is to make compiling them as simple as installing Qt and running

Rust Qt Binding Generator (Logo by Alessandro Longo)Rust Qt Binding Generator (Logo by Alessandro Longo)

The crates qrep and mailmodel are examples. You can try qrep with

qrep is a minimal GUI for ripgrep.


mailmodel is a proof-of-concept mail reader.


You can get started quickly with your own Rust Qt application by copying the folder templates/qt_quick_cargo from the Rust Qt Binding Generator repository.

Why Cargo?

In previous blogs we built applications with CMake. CMake is probably the most widely used tool to compile Qt software. CMake uses Cargo to build the Rust parts.

CMake is a familiar tool for Qt developers, but not for Rust developers. For them, CMake is an unneeded hurdle. Rust Qt Binding Generator can be used with only Cargo. To do so you use the Rust way of building C++ code: contains Rust code that is compiled and run by Cargo to build an application. Here is a simple file:

This file is placed directly in your project folder. The last command, compile("my_project"), compiles a library called my_project.

Cargo.toml and the name of the library should be added to Cargo.toml:

name = "my_project"
version = "0.1.0"
build = ""    # use for custom build steps
links = "my_project"  # and link to the resulting library

libc = "0.2"

rust_qt_binding_generator = "0.2"

src/ is the entry point for Rust applications. In these applications, two things should happen:

  • include the generated Rust code

  • call into the C++ code.

Qt applications have an event loop. Starting this loop requires some C++ code. We start the event loop in a C++ function. The name of the application is passed to this function.


The template contains one C++ file. That is usually all you need. But it’s possible to add more C++ files by adding more calls to Build::cpp.

This file loads the GUI from a QML file and starts the event loop.


Qt applications can contain resources. These are embedded files that are accessible via qrc: URLs. The template application contains two resources: main.qml and MainForm.qml. Other resources such as translations or application icons can be added as well.


The option to build Qt applications with Cargo should please Rust programmers. I’ve ported my personal projects to build this way. Using CMake is also still supported and is recommended for C++ projects that currently use CMake and would like to introduce Rust.

This feature is new and not widely tested. Bugs can be filed here.

October 29, 2018

A few weeks ago I travelled to the Netherlands to be part of the Krita October Sprint. During this Sprint we decided to focus on bug fixing, my tasks included some simple bugs and a couple of more convoluted bugs. I started fixing the simple ones in order to gain speed: one about modifiers not working on OSX, the bug was simple enough but puzzling as the missing logic shouldn’t make the code work on Linux, but it did. The second bug was related to events logic in the preferences dialog command: My first approach was good but not simple, so talking with the team made me change the solution to something much more simple.

Hard working Krita Sprinters

The next days showed me how deep the rabbit hole goes in Krita’s code, my bug was in the invert color code, some color spaces didn’t show the correct/expected result. A quick dive showed that there was a different codebase for every colorspace invert operation, and the wrong results showed for the missing implementations. However this made the solution not very portable as the combination of colorspaces and color depths suggested I needed to implement 18 color inverters. A short consultation showed me that there was a space invert operation already implemented for the pixel depth, so refactoring to use this convertors in one class to invert the input colors made the invert filter work as expected, except for CMYK and Lab spaces in 16bit float spaces. After a couple of days of digging into the code and testing, we found that there is a a bug in the way CMYK and Lab is values are processed as normalized values are not returned in places they should be.

As my first Krita Sprint I was very nervous, however I was even more exited to meet the team. In a way it was also the first time to work in a code only environment which made it very fruitful as it showed me that code is not made by super coding super geniuses, but by a little changes made by a coordinated team of normal people.

Could you tell us something about yourself?

I’m a comics artist and web developer from Oklahoma City. I’ve been creating comics and artwork for most of my life, though I didn’t seriously start making comics until several years ago. I’ve also worked variously as a writer, editor, layout artist, concert promoter, and art gallery director, among other things.

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

At this point in time it’s mostly something I do for enjoyment, though I occasionally create artwork for someone else. I’d love to make comics my career, but so far that possibility hasn’t presented itself.

What genre(s) do you work in?

I mostly create comic art in the science fiction and/or horror genres, often with a lot of humor in it. My style ranges a bit. While I sometimes enjoy working in a colorful painterly manner, lately I’ve been happier working in grayscale with mostly flat colors. I find it less distracting. It allows me to focus on linework, which I feel is my strongest point. Sometimes color just gets in the way. I also really like how grayscale looks.

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

Jaime Hernandez has probably inspired me more than any other comic artist. His work in Love and Rockets strongly influenced both my design and my storytelling. Christopher Baldwin (Spacetrawler, Anna Galactic) has also been a big inspiration. His science fiction comics prompted me to start making my own. Aaron Diaz (Dresden Codak) and John Allison (Scary Go Round, Bad Machinery) have also been influential to a degree. And I certainly can’t leave out fellow Krita user David Revoy. His tutorials helped me learn Krita and shaped how I approach digital art.

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

When I decided to make comics again in 2011, I initially went the more traditional path of ink and paper, but I quickly saw the advantages of going fully digital, so I bought an Intuos tablet and started learning, using Gimp and Inkscape. I actually got quite good in Inkscape, and most of my earliest digital work was done in it.

What makes you choose digital over traditional painting?

As a comics artist, digital wins hands down over traditional methods. Being able to rearrange things in a panel and quickly change dialogue makes life much easier, especially for me, as I’m always fiddling with things.

How did you find out about Krita?

I took a short break from comics a few years ago, and when I finally decided to start back at it again, I looked around to see if anything new was available other than Gimp and Inkscape. Being a Linux user, my choices are limited in the area of digital painting programs, and I was surprised to learn about Krita. It seemed like a good alternative, so I gave it a try. This was during the 2.x versions. I was pleasantly surprised and decided to stick with it.

What was your first impression?

The first thing that made me love Krita was its focus on drawing and painting, unlike Gimp, which tries to be everything for everyone. The fact that Krita was tailored for what I wanted to do made it more pleasant to work with once I learned how to use it. I always seemed to be fighting Gimp or Inkscape, and Krita felt very friendly in contrast.

What do you love about Krita?

So many things! Especially with the 4.x branch. One of the most important new features for me, though, has been sessions, as I work on multiple pages at a time. Before sessions, I used to keep Krita open for days at a time just so I wouldn’t have to reopen and reposition everything each time I started it. It all happens automatically now, and that’s really saved me some time.

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

I’d really like to see text improved. I’m appreciative of the complexity required in adding custom built vector capabilities to Krita, but the promised text functionality that was announced a few years ago lacks a lot of polish. Even using it for short bits of text, like signs or sound effects, can end up being frustrating, and it’s not useful for dialogue at all, or at least not for the way that I work, as there’s no wrap-around flow. I still use Inkscape for text.


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

At the moment, I don’t really use any other tools for drawing. I use Inkscape and GIMP for various other art related tasks, though, and neither of them are as easy to work with as Krita. Inkscape seems quite buggy, and GIMP just doesn’t have the project management abilities that Krita does.

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

If I had to choose one panel, it would probably be the panel from Jane Smith, Inc. where all four of the primary characters appear together for the first time. I really like the composition. Each character’s personality is on full display, and you can easily see their relationship to each other in their words, expressions and body language.

What techniques and brushes did you use in it?

For flat grayscale work, I keep things very simple. I usually work on an entire chapter or scene at once, so I storyboard the pages first in Krita using a blue pencil and text files created in Inkscape. I then do rough sketches of each panel with a custom pencil, and once I’m happy with how everything is falling together, I go back and clean up the rough sketches.

I use two different brushes to ink: a 12px brush for panel borders and a 5px brush for everything else. I like to hand-ink as much as possible, to give more of an alt-comics feel, rather than using svg for frames and balloons. I also do most of my detail work in the inking phase. All inking is done in two layers: a layer for the frames, and one for everything inside.

For coloring, I mostly use the fill tool and a couple of custom brushes — one large brush for places that need hand coloring and one for detail work. Again, keeping it simple, coloring is all done in one layer.

Where can people see more of your work?

I post comics on my website at I’m working on a couple of different projects at the moment, and I put up new pages from time to time. I don’t keep to any schedule. I consider myself a traditional comics artist and not a web comics creator. My work isn’t designed to be read one page at a time, so I only post when I complete scenes or chapters.

Anything else you’d like to share?

I’d like to encourage any comics artist who hasn’t tried Krita to do so. You might be pleasantly surprised at what you find. It’s very possible to make good quality comics with Krita. Don’t let the fact that it’s FOSS scare you away. And I’d also like to thank the Krita dev team for putting up with all my weird bug reports over the years! You guys do a great job.

The Qt Company has been supporting three different build systems for Qt programs. For Qt users, qmake is currently the most widely used build system. CMake is a clear second and growing in popularity. The third place is Qbs, with significantly smaller adoption. When asked about their preferences, most of our customers said they plan to use either CMake or qmake in the future.

We have decided to deprecate Qbs and redirect our resources to increase support for CMake. Qbs will remain supported until the end of 2019 with the last planned release in April 2019, together with Qt Creator 4.9. Qbs is available under both commercial and open-source licenses, and we are happy to continue providing the infrastructure for further development by the Qt Project community.

To summarize the key points:

  • Qbs will continue to be supported until end of 2019
  • Last Qbs release will come out in April 2019
  • Qbs continues to work with upcoming Qt Creator 4.8 and Qt Creator 4.9
  • Qbs library and tools will be available under Qt Project for possible further development by the community
  • Support for qmake will continue unaffected
  • Support for CMake will improve
  • Longer term, we plan to switch to CMake for building Qt itself
  • CMake support in Qt Creator will be further improved

Deprecating Qbs allows us to significantly improve CMake support. We believe this change will help the growing number of our customers who prefer to use the CMake build system. Beneficial is also CMake’s wide adoption outside Qt and its active development ecosystem.

The post Deprecation of Qbs appeared first on Qt Blog.

Gosh, you just blink and the month is over, eh.Let’s do an info-dump.

FreeBSD bits

FreeBSD ports contain Qt 5.11.2 (except for WebEngine), KDE Frameworks 5.51, KDE Plasma 5.12.7 (LTS, but there’s movement lower in the graphics stack that should allow us to update to the current feature release soon-ish), and Applications 18.08. I just updated deskutils/latte-dock to the latest 0.8.2 release. Tobias has been doing everything, updating stuff all over.

There are also things going away from FreeBSD ports. I’ll repeat for the hard-of-understanding: KDE4 ports are being removed on december 31st, 2018. We’ve notified those maintainers that we can — people using BitBounce deserve a special place and haven’t been informed, although we tried. New is that Qt4 ports are deprecated on FreeBSD and scheduled for removal on march 31st, 2019 (three months after KDE4, the main consumer, is removed). This is a bigger deprecation step, actually, since it touches applications maintained outside of kde@. The issue is simple though: Qt4 went EOL in 2015 and maintainence is increasing (e.g. for OpenSSL 1.1.1, changing C++ compilers, etc.). We have started updating default flavors (for things that have both) and informing maintainers.

KDE bits

Photo of Edinburgh from Calton Hill I went to Edinburgh to staff the KDE booth at the Embedded Linux Conference, along with Jon and Paul. I helped make lots of soup on the weekend and it was delicious. And then I spent three days from 8am to 6pm standing and talking to the 2000-or-so attendees of that conference.

It was exhausting, but worth it. Mostly the message is the same: Plasma has had lots of performance work done (for the Pinebook, among other things) and so Plasma runs on a whole range of devices, from this 2GB-ram low-power ARM64 board, to, over there, the 22-core Power 9 workstation. If you thought KDE was bloated (you mean KDE4, and last looked nearly 10 years ago, right? right) then here’s what we’ve done for you: come back and try it again.

KDE was one of only two “community” booths. The other was from Code Your Future, which is a coding school to give refugees new skills. When you spend three whole days at a booth, you hear the “pitches” around you a lot of times, so by the end of the second day I could do a pretty keen presentation for them as well. On the other side was a stand from Togán Labs, who do Yocto-based board bring-up and stuff .. not immediately our cup of tea, but I did end up talking about late-80s Canadian jazz bands with one of their developers. It’s a small-ish world.

At the end of the row was the stand from the OpenPower Foundation, with a demonstration Power9-based workstations. That’s a whole different ballgame from the low-end ARM boards, and seeing 32 hardware threads (at least, I think it was a 2-CPU times 8-core times 2-threads setup) running is pretty keen. The machine arrived with KDE Trinity installed, which .. well, I was wearing my KDE4 launch event T-shirt on tuesday and lets say that KDE3 looks even more dated than a ten-year-old conference shirt.

Rasterman beat me to it, and the machine was quickly running a gorgeous Enlightenment environment all with fancy bubbling backgrounds and other stuff that would drive me mad quite quickly. But pretty. There is Debian installed on it, so a brief chat with the people at the stand allowed us to install Plasma 5 Desktop (apt install whatever..) to check that it works nicely. And it does! The performance work done really does pay off up and down the stack.

Calamares Bits

The next Calamares release, 3.2.3, is delayed. That is at least partly due to events-preparation and general futzing-about. I was intending to get it done this week, but I can tell already that that’s not going to happen: there was an issue reported just today that definitely needs attention. So it looks like after-the-next-event, mid-november, is a good bet for that release.

October 28, 2018

ELCE 2018 has been a key event each of my 3 years at Codethink. It is an interesting conference from the technical and business point of view. This year the event was collocated again with several others, like the Open Source Summit Europe (OSS EU). It took place in Edinburgh, UK, I city I find particularly beautiful and enjoyable.

CIP, the Linux Foundation Initiative for Civil Infrastructure, has the event as a key milestone. The group organises a booth and a face to face meeting of the Technical Steering Committee (TSC) the day before the event starts. So for me ELCE is a day longer. The other main task for me at this event is supporting Codethink business development and community engagement actions, since I represent the company at the Linux Foundation.

During the CIP TSC face to face meeting, I did a short presentation of one of the projects I am putting effort on lately: BuildStream. I also described the project among several people I know during the event, asking them to try out the integration tool and provide me feedback. The tool has matured quite a lot the last few months and I am interested in collecting feedback from experienced developers and software integrators.

Lukas Bulwahn is leading an interesting effort to create a safety Linux related initiative at the Linux Foundation, including a Safety Critical Systems track at the event. I attended the last day of the conference to these talks. My colleagues Ben Dooks, senior kernel developer and Codehtink’s CEO Paul Sherwood, presented there a couple of topics we have been working on lately. I found the track interesting and learnt a few things. I hope such track consolidates and more automotive companies participate in the future.

Codethink sponsored the event and had a booth to recruit new developers. I backed up my colleague Tim a couple of times during the first two days of the event which allowed me to talk to a couple of of potential hires. It is always interesting to find out what motivates others about the company your are working for.

During the second day of the event I took some time to visit some booths and learn about what other companies are doing, as well as attending to a couple of talks. I also had several interesting meetings and conversations with old friends and former colleagues, visited again the Edinburgh Castle, this time at night, and managed to try a few whiskies from the Highlands. Not everything was to be work, right? is an initiative I feel attached to since it was born during my time as Director at Linaro, promoted by engineers from my department, specially Kevin Hilman. Time has demonstrated that the project has helped the Linux Kernel tremendously. I hope get a successful second life under the umbrella of the Linux Foundation.

At Akademy 2018 a group of KDE people agreed to put effort in showcasing KDE software at embedded events to demonstrate that Plasma Mobile is a credible option as HMI for automotive R&D environments. At ELCE 2018, we showed Plasma Mobile and a couple of applications on top of a YOCTO based system on a Raspberry Pi 3 with a 7″ touchscreen. Showing the same technologies across different form factors (a mobile, a Pinebook, a laptop with openSUSE and the mentioned RPi3) was impressive. Sadly my RPi3 worked only the first day because it burned. I guess I have taken it to too many events. RIP my dear….

I would like to highlight how excited I got when I saw the KDE booth at this event, the fantastic work that Adrian, Jonathan, Kenny and Paul did there and the significant impact KDE had. Getting out of the comfort zone is never easy, but usually worth it. I am looking forward to show further progress at FOSDEM and the Embedded World early in 2019.

Except surprises, this will be the last event of the year for me. It is time to prepare next year’s agenda. I will see you all at FOSDEM 2019. Thanks Codethink for sponsoring my participation at ELCE 2018.

@tetris4 wrote:

Also available in Italian and Taiwanese Mandarin.

Hey Chakra users!

On your next system upgrade you will receive all the latest versions of KDE’s Plasma , Applications and Frameworks , in addition to the usual package updates. All these have been compiled against the latest Qt 5.11.2.

We make available Plasma 5.14 in its second bug-fix release, a brand new series that introduces many new features to our favorite desktop environment.

For more details and the full changelogs on KDE’s software releases, you can read the official announcements:

With this update, we are also removing from our repositories the kde-runtime and kdelibs packages. To achieve this, we had to remove some outdated and nowadays mostly obsolete applications. Make sure to go through both bug reports to find out more on the packages that have been removed, updated or replaced. As always, we are not forcing this removal to our users, so you will have to manually remove these packages if you no longer need them.

It should be safe to answer yes to any replacement question by the package manager application. If in doubt or if you face another issue in relation to this update, please ask or report it below.

Most of our mirrors take 12-24 hours to synchronize with the central repositories on the origin server . Use the mirror status web page to see when your mirror of choice last synchronized.


Posts: 1

Participants: 1

Read full topic

Hey look, there have been 42 of these Usability & Productivity posts. This week there’s a lot of in-progress work I’m tracking or working on myself that didn’t quite make it, but what I can report on is hopefully no disappointment! See for yourself:

New Features


UI Polish & Improvement

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 my efforts to perform, guide, and document this work seem useful and you’d like to see more of them, then consider becoming a patron on Patreon, LiberaPay, or PayPal. Also consider making a donation to the KDE e.V. foundation.

October 27, 2018

Latte Dock v0.8.2   has been released containing important fixes and improvements!

Go get   v0.8.2  from, download.kde.orgor*

* archive has been signed with gpg key: 325E 97C3 2E60 1F5D 4EAD CF3A 5599 9050 A2D9 110E

Fixes/Improvements (v0.8.2)

Version 0.8.2 contains two very important bug fixes for multi-screen environments. The new multi-screen approach from v0.8.1 helped me to track with a user a very annoying bug that could be present from v0.6.x era. During startup under multi-screen environments there were some rare cases that docks in explicit screens were not positioned correctly. More specific the docks were appearing in the middle of the screen or at a wrong screen rather than the appropriate screen and edge choice. The second important multi-screen bug that was fixed is that when the user was unplugging very often its external screens the associated docks were not loaded automatically when he was re-attaching that screens. So as you see v0.8.2 is a very important milestone for multi-screen environments and as such I advice you to update in case you are using multi screens.

Complete Changelog:
  • wrong placement of docks during startup for multi-screen environments
  • show explicit docks automatically when their corresponding screen is added in a multi-screen environment
  • open files properly when dropping them on launchers
  • dont hide previews when hovering player buttons
  • update delete icons to plasma design
  • improve behavior according to Fitt's Law when shrinking panel margins
  • dont break BorderlessMaximized window default value

October 26, 2018

TL;DR Beware of connections to function objects accessing class members which could be triggered during execution of subclass destructor methods.

Oh, those name-based signal/slot connections feel outdated!

So you are a happy embracer of Qt’s new QObject signal/slot connection way of coding based on function-pointer or functor objects, like myself. This compile-time check of signals and slots feels just so much better. And thus you also port any existing code to it. Including some which uses the pimpl approach for some public classes, borrowing Qt’s macros Q_PRIVATE_SLOT, Q_D & Co.:

class MyWidgetPrivate;

class MyWidget : public QWidget
    explicit MyWidget(QWidget *parent);
    // [...]
    // setting a QWidget-subclass to be used as custom form in this widget
    void setForm(Form *form);
    const QScopedPointer d_ptr;
    Q_PRIVATE_SLOT(d_func(), void handleFormDeleted())

// implementation side:

class MyWidgetPrivate
// [...]
    void handleFormDeleted() { /*...*/ }

MyWidget::MyWidget(QWidget *parent)
    : QWidget(parent)
    , d_ptr(new MyWidgetPrivate)
    // [...]

void MyWidget::setForm(Form *form)
    // [...]
    connect(form, SIGNAL(destroyed()), this, SLOT(handleFormDeleted()));

Got some time, let’s modernize the code

The old code calls to be changed into using a connection from the destroyed signal to a lambda expression calling handleFormDeleted() directly on the private object, with MyWidget instance as context object, thus removing the need for that Q_PRIVATE_SLOT:

class MyWidgetPrivate;

class MyWidget : public QWidget
    explicit MyWidget(QWidget *parent);
    // [...]
    // setting a QWidget-subclass to be used as custom form in this widget
    void setForm(Form *form);
    const QScopedPointer d_ptr;

// implementation side:

class MyWidgetPrivate
// [...]
    void handleFormDeleted() { /*...*/ }

MyWidget::MyWidget(QWidget *parent)
    : QWidget(parent)
    , d_ptr(new MyWidgetPrivate)
    // [...]

void MyWidget::setForm(Form *form)
    // [...]
    connect(form, &QObject::destroyed,
            this, [this] { Q_D(MyWidget); d->handleFormDeleted(); });

Looks fine & compiles. Code feels more future-proof with the compiler now warning if some signal or slots got changed/removed.

Ooops, crashing now?

Just… nooos, it sometimes crashes now, in the destructor of MyWidget. How that on this innocent looking change?

Reading once more closely the documentation of QMetaObject::Connection QObject::connect(const QObject *sender, PointerToMemberFunction signal, const QObject *context, Functor functor, Qt::ConnectionType type = Qt::AutoConnection) we notice the remark:

The connection will automatically disconnect if the sender or the context is destroyed. However, you should take care that any objects used within the function object are still alive when the signal is emitted.

Which subtly hints to the problem we now have: if the form instance is set as child widget of the MyWidget instance, it will be deleted when ~QWidget() is run as part of the MyWidget destructor. And then emit the destroyed signal. At that point in time this as seen by the function object no longer is a proper MyWidget instance. And things go *boom*.

The old string-based connection as well as the member-function-pointer-based one handle that case for us, by some QObject magic using virtual methods which catch that the receiver no longer is a MyWidget and somehow then just drop the slot call (got lost in the code details, but it is something like this).
While with the new function-object-based connection that one will only become automatically inactive by being destroyed if the ~QObject destructor of either sender or receiver is reached. So having a longer lifetime, which can come a bit unexpected to some.

Fixing the modern times, unsure how

Lesson learned: do not blindly port code to the context & function object based connection. Instead beware of the additional traps which there are given that the function object is an independent complex object and not just a member function pointer. I will have to revisit quite some code where I might have missed this trap with the subclass destructor methods :/
As I seemed not the only one hit by this, I filed QTBUG-71432: “API dox of context & function object using QObject::connect should hint about destructor issues” so other people like me might be saved from this from the start.

Curious to learn about best practices for private slots and non-string-based connections. Thus happy to hear about proposals/hints in the comments.

(Update: text now using C++ standard lingo term “function object” instead of “functor”)

October 25, 2018

KDAB is proud to announce that for the first time ever we will be present at Embedded Technology outside of Tokyo in Japan.

Every year more than 25000 visitors attend over 3 days!

The event takes place in the Pacifico Yokohama exhibition center and focuses on Embedded AI, IoT Wireless Technology, Smart Sensing and Safety & Security.

KDAB will present Automotive and Industrial customers’ showcases and tools around Modern C++, Qt and 3D.

So if you want to learn more about C++ Modernization, Qt migrations, Qt 3D and OpenGL integration as well as profiling and performance optimization make sure to join us.

We also take this opportunity to announce the incorporation of TQCS KK, a joint venture between KDAB, tQCS Inc., Software Research Associates Inc. (SRA group) and ISB Corporation. This materializes the will of KDAB to bring its expertize in C++, Qt and 3D to the Asian market and to cooperate with already well-established companies to strengthen the existing ecosystem there.

As part of this cooperation we are happy to announce we will be present at two booths this year:

  • Come and see us at the ISB Corporation booth : Hall A, booth 14
  • Come and see us at the SRA Group booth: Hall A, booth 21

Book a meeting with our C++, Qt and Modern 3D experts.

The post KDAB at Embedded Technology, Japan appeared first on KDAB.

Older blog entries

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