Language Selection

English French German Italian Portuguese Spanish

Kde Planet

Syndicate content
Planet KDE -
Updated: 2 hours 33 min ago

Search in encrypted content and support for encrypted headers

Monday 24th of February 2020 08:47:54 PM

When most of your email traffic is encrypted there are two things that really start to become a problem:

  • You can’t search for encrypted emails
  • If the sender is using a client that supports encrypted headers, such as thunderbird, your emails will be completely unrecognisable because the subject no longer contains anything useful.

To fix this we’re going to start decrypting encrypted emails when syncing and indexing the encrypted content. That way we can make sure encrypted emails are just as usable as non-encrypted emails, at least as long as you’re using Kube.

This means that in the future you will not only be able to search through all your email, it also means you get a more useful subject displayed than “…” or some other nonsense.

Who doesn’t love a conversation list full of descriptive subjects like “…”

This is of course a trade-off in terms of security; you will have at least parts of your encrypted email in decrypted form on your disk, and so an attacker that has access to your system will have access to the encrypted contents in plain text. However, it’s a reasonable trade-off as an attacker that has access to your system, which contains your private GPG key as well, will have have good chances of obtaining what he looks for anyway. It’s also a necessary trade-off to make encrypted communication usable enough so it can be used across the board.

Of course we could attempt to protect the index, but this is best left to the same tools that protect the rest of your system, such as full-disk encryption.

“Kube is a modern communication and collaboration client built with QtQuick on top of a high performance, low resource usage core. It provides online and offline access to all your mail, contacts, calendars, notes, todo’s and more. With a strong focus on usability, the team works with designers and UX experts from the ground up, to build a product that is not only visually appealing but also a joy to use.” For more info, head over to:

Akademy 2019

Monday 24th of February 2020 04:22:14 PM

Akademy 2019 group photo

Past September the Italian city of Milan hosted the KDE contributors meeting called Akademy, the main KDE conference where contributors from different areas like translators, developers, artists, promoters and more stay together for some days thinking and building the future of KDE projects and community(ies).

Firstly before Akademy I departed from Brazil to Portugal to attendee an artificial intelligence conference in Vila Real, the EPIA conference. After that, I flew from Porto to Milan and started my days in Akademy 2019.

Unfortunately I arrived only in the end of the first morning, so I lost interesting presentations like Qt 6 and KDE’ Goals. But at the afternoon I could to watch the presentations of Plasma for mobile, MyCroft on automotive industry, the KDE e.V. report and the students showcase – nice to see interesting projects developed by the newcomers.

The second day I liked the presentations about KPublicTransportat, LibreOffice on Plasma, Get Hot New Stuffs – maybe I will use this framework in a project of my work –  and the Caio’s presentation about kpmcore.

After the social party (wow, that was a party), next days were full of BoFs, for me the most interesting part of Akademy.

The Gitlab workshop was interesting because we could to discuss some specific stuffs of KDE migration to that tool. I liked KDE move to Gitlab and I expect all our projects can do this migration ASAP. Cantor is there for some time now.

In the KDE websites BoF I could understand a bit more about the new Jekyll theme for our sites. I expect we will have a internationalization approach soon. After attendee this event, I created a new website for Cantor during LaKademy 2019.

The KDE Craft BoF was interesting to see how to build and distribute our software to Windows. I expect to work in this topic during this year and provide a Cantor package in Windows Store.

I attended the QML and Kirigami workshop organized by Maui project. Nice way to learn how to use Kirigami for future projects.

Lastly, I attended the “All About the Apps Kick Off” BoF. For me, this is the future of KDE: a international community of free software producing high-quality, secure and open source software to several platforms, from desktop to mobile. In fact this is how KDE is organized and works right now, but we don’t communicate it properly for the public. Maybe with the changes in our release approach, the websites for specific projects, and the distribution in different application stores can change how the public see our community.

The day trip was in Lake Como, in the city of Varenna. That trip was wonderful, I was every time thinking about spend my honeymoon in that city. I expect to back there in the future, and spend some days tripping across the cities like that.

Me in Varenna

I would like to thank you all the local team, Riccardo and his friends, for organize this incredible edition of Akademy. Milan is a very beautiful city, with nice food, historical spots to visit and discovery more about the Italians.

Finally, my gratitude to KDE e.V. for sponsor my attendance in Akademy.

In this link you can see videos of Akademy 2019 presentations and BoFs.

KDSoap 1.9.0 released

Monday 24th of February 2020 03:44:51 PM

KD SOAP is a tool for creating client applications for web services.

The release of 1.9.0 brings a fair number of improvements and fixes, as the following text describes.

  • C++11 is now required. Qt4 is still supported, but this is the last release with support for Qt4. rpath for Unix/Linux/macOS (#181) is now fixed.
  • cmake usage is improved by setting the install interface directories on the library targets (#196). You can just link to KDSoap::kdsoap and you’ll get the correct include paths now.
  • Conan has a new installing file (WIP – see conan folder).
  • Support for selecting WS-Addressing namespace for send messages (#176) has been added
  • WS-Addressing spec compliance (#193) is fixed
  • Support for implementing SOAP-over-UDP clients (see KDSoapUdpClient) is fixed.
Server-side WSDL parser / code generator changes, applying to both client and server side:
  • An override indicator to generated files has been added. This requires C++11 for users of generated files.
  • An option for loading PKCS12 certificates (#190) has been added.
  • All special handling of soap/encoding namespace is removed, which fixes the use of soapenc:string and soapenc:integer for instance (#179).
  • A compilation error due to missing QSharedPointer include in generated code (#170) is now fixed.
  • The holidays examples have been replaced with bank-lookup examples. Less fun, but the holidays web service no longer exists…

Download KDSoap

KDSoap on Github

KDABSoap Releases

About KDAB

If you like this blog and want to read similar articles, consider subscribing via our RSS feed.

Subscribe to KDAB TV for similar informative short video content.

KDAB provides market leading software consulting and development services and training in Qt, C++ and 3D/OpenGL. Contact us.

The post KDSoap 1.9.0 released appeared first on KDAB.

Contributing to KDE is easier than you think — Localization plain and simple

Monday 24th of February 2020 04:06:24 AM

Sup beloved readers!

I’m kinda sick this week as well, but this time it’s not so bad as to hinder me from writing this post. Moreover, this post is way more simple, straightforward and less tiring to write.

This is a series of blog posts explaining different ways to contribute to KDE in an easy-to-digest manner. This series is supposed to run parallel to my keyboard shortcuts analysis so that there can be content being published (hopefully) every week.

The purpose of this series originated from how I feel about asking users to contribute back to KDE. I firmly believe that showing users how contributing is easier than they think is more effective than simply calling them out and directing them to the correct resources; especially if, like me, said user suffers from anxiety or does not believe they are up to the task, in spite of their desire to help back.

Last time I explained the whole process of contributing with Localization to KDE. I’ve also posted a little article I made some time ago on how to create a live-test environment to translate Scribus more easily, given that Scribus might become a KDE application in the future. It’s a major decision for a project to do, so please respect the project’s choices regardless of the outcome, yes? It’s currently one of the main projects I work on, and I’ll continue to work on it regardless of such a decision anyways, especially now that I’ve become a language coordinator for Brazilian Portuguese for Scribus (yay!).

By the way, if you’d like to contribute to the Scribus project with translations, you can contact them over #scribus on IRC (Freenode). If you’re interested in helping with its Brazilian Portuguese translation, you may contact me directly through Telegram, I’m usually in the KDE Brazilian Portuguese Localization group; this way you’ll also get in contact with the localization team. In addition, you may also directly apply to join the team over Transifex.

Today’s post will essentially describe how quick and easy it is to work with localization for KDE software. My latest post might have sounded intimidating or people might have gotten tired from reading it in the middle, which is a shame; hence the reason for this post.

Oh, existing translators should also have a reason to read this post, as I’ll be showing brand new functionality in Lokalize too.

As a brief note, I’m currently using openSUSE Krypton with Plasma from master, meaning it’s as updated as possible. I’m also using the XWayland session, because it’s dope af. It doesn’t affect my workflow at all, either.

But well, let’s keep it short and begin.


Let’s first go to our localization folder. For those who didn’t read my previous post, it’s the folder containing the stable and trunk branches with strings to translate. You can find them through here:

In the case of Brazilian Portuguese, we have a small script that sets everything up for you, regardless of whether you have developer rights or not.

Figure 1 – My main localization folder, with terminal about to execute script.

After executing the script and since I have developer rights, I can simply type my password and download everything I need, with all files perfectly set up in their right place. For those who don’t have such rights, it will just download everything for you without requesting a password.

It takes a while since there are a lot of files to download.

(For those interested, this essentially does the same as the following script:
svn co svn://
svn co svn://
Just replace the pt_BR with your respective language code.)

If you already have developer rights to upload your translations, you should follow your localization team’s instructions to set up your system. After all, by now you should already have contacted them, since you need the approval of an experienced translator to request such rights. This post is to be succinct, and as such I’ll not explain the full procedure here.

Another way we can download everything and keep stuff up-to-date is by using kdesvn, and it’s my preferred method when I just want to translate one file. You can install it from your repository. I love this tool. Take a look on this functionality that is provided by kdesvn:

Figure 2 – Install kdesvn and get two new options in your context menu: Atualizar = Update, Enviar = Send.

Once you get to the folder containing the files you’d like to update, you can simply right-click the folder and select Update (kdesvn). This will update everything for you. The new dialog that appears should look similar to this:

Figure 3 – Update complete.

After that, just open the file you’re gonna work with. In my case, I’ll be using Lokalize to translate www_www.po, the file containing the strings for all KDE announcements.


And now, to work. If you’re acquainted with Computer Assisted Translation (CAT) tools, you’ll handle Lokalize just fine. Left pane shows the strings (or segments) to translate, the upper right pane shows the source text, the one immediately below is the field to input the translated text, yadda yadda. Pretty simple.

Now, one feature to be released soon with Lokalize is the ability to search according to filenames. Let’s take a look:

Figure 4 – Filter per filename.

This is particularly useful with this exact file, www_www.po. Since each release announcement is written in a different file, it follows that searching for all strings present in a specific file should render all strings pertaining to a specific announcement, and so it is very easy to verify whether you’re missing any strings. Here, I’m searching for plasma-5.17, since I want to translate all missing strings for all Plasma 5.17 announcements, namely versions 5.17.0, 5.17.1, 5.17.2, 5.17.3, 5.17.4, 5.17.5 and 5.17.90. Notice how their links are written; all of them contain the string of text “plasma-5.17”.

This is vital because, currently, Plasma announcements require that 100% of the announcement be translated before they show up on the website.

Next I’ll show you a bit on my workflow.

Figure 5 – Needs review.

Another recently added feature is the ability to zoom on of either translation pane and have the other zoom at the same rate. It’s awesome! I do tend to prefer big things, usually the bigger the better, and this makes it easier for you to read too.

As mentioned in my previous post, one interesting feature of .po file localization (Gettext files) is the use of fuzzy strings. These are strings that are pending review by the translator, either because a previously approved string was changed or because it bears a very similar structure to another string.

As can be seen above, it’s the latter’s case; also notice how the translation pane has the same color as the source text. The only differences between this and a previous string are shown in the bottom left pane, Alternate Translations; that is, the presence of \n, which should be removed, and the fact it’s month instead of week.

Figure 6 – After translation.

We can see here an issue with the current translation. This string begins with “This release adds […]”, the previous one too, but I decided to use “inclui” instead of “adiciona” as a translation for “adds”.

Since I saw this inconsistency, I couldn’t ignore it! You shouldn’t ignore inconsistencies in translation either. I took note of it and, after having translated all the remaining segments for 5.17, I turned the filter back to default and searched for “This release adds”. Then I fixed all strings containing this inconsistency issue.

And, since I now had the same word repeated, namely the verb “incluir”, I changed its second occurrence to something expressing a similar idea.

Figure 7 –All strings fixed. Way to go for consistency’s sake!

Now, with all the strings I’m willing to work on for today fixed, and having translated all 5.17 strings, it’s time send my translations!

Don’t forget to save your changes, of course.

Sending your translation!

Now for the section I wanted to show you the most.

If you don’t have developer rights, you won’t be able to use kdesvn to send your translations. It’s quite easy regardless, though: just send the file you just edited to your localization team, and they’ll upload it in your stead, keeping the information that you are the one that authored the commit.

Just open kdesvn using the menu/launcher and either open the folder containing the file(s) you changed, or the main messages folder; it should show all folders in a list afterwards. If you’ve worked with kdesvn before, you can just use Open recent URL:

Figure 8 – Opening the folder containing the translated file.

It’s quite straightforward: kdesvn will identify that you have downloaded the files for translation, will recognize your ssh key and, with your password, it will be able to send the translations for you.

It’s quite the handy tool with a minimal and simple interface.

The next thing we see is this:

Figure 9 – Listing all changed files.

Again, this is quite straightforward. I chose to open the www folder directly. It shows an up arrow since there’s something there you can upload, namely the red file on the right. You can safely ignore most of the toolbar buttons. With the folder selected, we can click on the Send button (just above the mouse in the screenshot).

It renders this screen:

Figure 10 – The changelog dialog.

This is also quite the easy-to-use interface. The upper left pane, “Review affected items”, contains all files that have been changed and can be uploaded. In this case it’s just one, but were you to have dozens of files that you wish to upload with different commits, you can easily choose which files to upload.

The bottom pane, “Define a commit message”, lets you write your commit message, unsurprisingly. This is just a message that will describe the upload of the file. I usually write my commit messages with the structure “Updates to file.po for pt_BR”, but I sometimes forget how I wrote my previous commit messages, and thus the “Or use a previous one” come very useful. Aside from those three things, you can safely ignore the rest and press OK.

Figure 11 – Translated files uploaded! Hurray!

If you see a message saying “Revision #number was sent”, then you’re done!

If your upload fails, then it’s because you’ve missed something in your translation, perhaps you forgot to include a tag or you missed a plural. You just need to fix those issues and try again, and it should upload successfully.

That’s it!

No, really, that’s it. It wasn’t that complicated either; this post just seems longer than it really is because of the number of screenshots, really. And because I like to keep things a bit more verbose than your typical tutorial, I suppose.

To summarize, the general workflow for a translator with developer rights is as follows:

  • Go to folder with file to translate — 10 seconds;
  • Right-click and update your files — 2 seconds;
  • Wait for update to finish — 60~90 seconds;
  • Translate — varies, could take hours;
  • Open kdesvn — 2 seconds;
  • Send files — 30~50 seconds.

And all of that done through the GUI, with windows, dialogs and whatnot.

Here’s the commit referenced in this post.

For the last bit of this post, I’ll add a few links for those willing to learn more or contribute.

Interesting links include the Get Involved wiki page for general contributing and the Get Involved Translation wiki page for a brief explanation on where to get more information; you may find the mailing list for your language in the links available here under kde-i18n or kde-l10n; you may also contact the general i18n team on IRC; if you’re Brazilian or speak Brazilian Portuguese, we have a Telegram group for you, and you can also check out and the KDE-Brasil group; if you’d like to translate widgets instead, you might wanna have a look at and search for the github page for the widget; most things related to KDE localization can be found on the official page, for instance the Translation HOWTO, which is an even more comprehensive guide than this blog post; and this online tool allows you to search already translated strings in KDE software, serving as an interesting translation memory that should even help in other fields. Some localization teams might be more approachable if they have a dedicated website for your country, such as for France or for Russia. If you’d like more information about translation on Linux, you may also be interested in checking TranslateOnLinux or a specialized distribution focused on translation called tuxtrans, made by an Austrian professor at the University of Innsbrück. If you’d like to know about other professional CAT tools, you may want to check the Proz comparison tool; some of the tools displayed there also run on Linux, either natively, using Java (like OmegaT, an open-source CAT tool) or through the browser.

This week in KDE

Sunday 23rd of February 2020 06:33:58 AM

At this point we’ve got nearly all of the significant regressions from Plasma 5.18 fixed (so go file bugs if you have any new ones) and we’re starting to re-focus on fixing longstanding issues and land work for Plasma 5.19. Hopefully you’ll find something in this week’s update to feel excited about!

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

In Plasma 5.19, we really want to make a push on our Breeze Theme Evolution work. It’s proceeding, but would go faster with your help! There are tons and tons of mockups in the linked task and its child tasks, and what we really need at this point is people willing to help implement them. QML skills are helpful, and C++ is also useful for the needed work on the Breeze theme itself. If this sounds interesting to you, don’t be shy, step right up!

More generally, have a look at and find out more ways to help be part of a project that really matters. Each contributor makes a huge difference in KDE; you are not a number or a cog in a machine! You don’t have to already be a programmer, either. 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.

OpenVPN setup

Saturday 22nd of February 2020 11:00:00 PM

For historical reasons, I run a bunch of IT infrastructure at home. Mindful of sayings like the cloud is just other people's computers I’ve installed jails on my home FreeBSD NAS / server / router to deliver a bunch of services. Mail, for instance, and an LDAP server to experiment with, and something for package building.

From the road, I always used a fantastically convoluted SSH setup. A dozen tunnels were set up, so I could SSH from my laptop to my router. This has one downside, that DNS is screwed up. Inside my house, imap.localdomain is, while outside my house, it’s down the rabbit (SSH) hole at localhost:10193. I sort-of had KMail convinced of this, but changing laptops recently meant re-creating that whole setup and I failed at that.

In the end I decided that the SSH-tunneling aspect was just not tenable long-term. I needed something to connect more generally into my home network from afar. Last summer I made good use of Private Internet Access VPNs, which at least introduced me to the VPN and OpenVPN world. I ran into Kifar Unix which has a tutorial written pretty much for my exact scenario:

  • FreeBSD 12 server at home acting as the OpenVPN server
  • a single laptop to connect to it
  • a static IP and a friendly ISP (XS4ALL, although their culture is also changing now they have a large corporate parent)

I now have security/easy-rsa installed on a machine acting as certificate authority, which has spit out certificates for all my in-house services like imap.localdomain. In-house, I can check that all the services are on TLS.

The tutorial from Kifara got me through the rest. I needed to change some specific IP addresses, and punch UDP 1194 through the FTTH modem, and I wrote out some absolute pathnames, but it was remarkably painless. In fact, the biggest headaches came from all the places where I still had SSH-tunneling or /etc/hosts hacks lying around.

Plasma Browser Integration Itinerary Integration

Saturday 22nd of February 2020 08:00:00 PM

(or: “How to do your project a disservice by calling it names”)

For a change, this blog post isn’t about notifications but don’t worry: there’s enough thrilling stuff to come in this area soon. Anyway, during Akademy 2019 in Milan I began adding KDE Itinerary capabilities to my pet project Plasma Browser Integration. The idea was to provide at a glance information about the subject of a website the user is currently viewing. It’s been a while since I worked on it but that of course just means that I’ve been busy doing other awesome things. ;)

Plasma Browser Integration showing details about last year’s Akademy, extracted from our website

Supported workflows for example include visiting a restaurant website where dropping them a call to ask for a table should be no more than two clicks away, or when surfing a trade show website, adding the dates to your calendar should be straightforward. If you want to read more about how the data gathering and processing in the background works, check out my previous blog post on the subject.

If you want to give it a try, install a recent kitinerary library (something along the lines of libkpimitinerary5), check out the itinerary branch of the plasma-browser-integration repository and follow the “How to install” instructions from source code on its wiki page. Once up and running, visit your favorite event, restaurant, and hotel sites and see if they have any structured data we can process! If you click “Inspect Element” in the popup’s context menu, the developer console will have some basic debugging information on the extractor.

Cleaning up the interface

Last week I finally cleaned up the UI code by introducing an HTML templating engine. I decided to use EJS for the purpose since I can relatively easily ship a pre-compiled version of the template, and it allows arbitrary JavaScript code for structuring. However, if you have a favorite templating engine I should check out, please let me know.

The most practical addition are contextual inline actions in the popup. For instance, whenever there’s a location – be it a venue address or departure/arrival airport – there’s now a little button that lets you send said location to your phone via KDE Connect. Alternatively, you could also open it in a mapping application, such as Marble or in any other application registered as “geo” URL handler. By the way, with Plasma Browser Integration you can already right-click any link on a website to send it to your phone!

Viewing OpenStreetMap in Marble to see where we’re headed

Additionally, you can have it just add the entire event or trip to the KDE Itinerary app on your computer or to the one on your phone. It can also convert it into an iCal file for adding it to your calendar. Should you have the kitinerary-workbench development tool installed, a button lets you inspect the structured data with it.

While KDE Itinerary’s raison d’être is for it to be a travel assistant, I believe in the context of a web browser a more common use case is trying to get information about places and events. More so, as I have yet to come across an airline or train operator website where my trip reservation shown on the website was annotated with the structured data we need. I sure can extract boarding passes and train reservation from the browser’s PDF viewer but I think that’s not very helpful when you got your ticket via email already.

Enter Itinerary Travelbird

Speaking of emails, I’ve been experimenting with Thunderbird’s extension API to come up with a solution similar to what KMail offers for booking emails. The inevitable migration of Thunderbird towards MailExtensions API is surely a big break for existing Add-ons, however for someone without a record it made development much more accessible. I could take Plasma Browser Integration’s host process virtually as-is and already had a working Thunderbird add-on talking to an external process.

Thunderbird showing trip information extracted from the email powered by KDE Itinerary

Dealing with the XUL UI stuff was quite a chore, still, and currently the new APIs are very limited. Originally, I planned this project as “Plasma Thunderbird Integration” including KRunner plug-ins for searching your Thunderbird contacts and emails. Unfortunately, there currently isn’t even API to just open an email in a new window – without going the old XUL way, that is – making this idea not very feasible right now. At least getting raw email data is possible from Thunderbird 72 onward, which is why I then focused solely on KDE Itinerary integration.

That said, during FOSDEM Volker Krause (check out his talk btw) overheard that Thunderbird’s future roadmap seemed to include travel assistance features. Given our expertise on this topic, and the fact that Nextcloud Hub already uses KDE Itinerary externally, we believe Thunderbird could benefit greatly from it as well.

If you’re curious, you can find the code on KDE’s GitLab instance You build and run it pretty much like you would Plasma Browser Integration in Firefox, see the wiki for instructions. It’s very early and crude, though, so apart from showing basic trip information, there’s not much else to see. Further, since there’s the chance of Thunderbird potentially having something like this built-in, I’ll put this project on hold for now.

A Tale of Four Laptops, or, How Lenovo’s Digital River Customer Support Sucks

Friday 21st of February 2020 02:33:39 PM

In September, I made a mistake… We needed new laptops for Dmitry and Agata, and after much deliberation, we decided upon Lenovo Yoga C940’s. These are very cool devices, with HDR screens, nice keyboard, built-in pen, two-in-one convertible — everything in short for the discerning Krita hacker.

I accidentally ordered the S940 instead — two of them. These are very awful devices, without a pen, no touch-screen, don’t fold, don’t have HDR, don’t even have normal USB ports. Overpriced, under-powered — why the heck does Lenovo call these Ideapads yoga’s? I have no idea.

Well, no problem, I thought. I’ll just return them and ordered the C940 instead. The C940’s arrived in time for our BlenderCon sprintlet, and were all what one expected them to be. And I filled in Lenovo’s web form to return the S940’s.

That turned out to be a big problem. Here’s what happened:

  • I ordered them September 24th
  • They were delivered September 26th (nice and fast)
  • I filled in the return form on September 26th
  • Not having heard anything from Lenovo or TNT, I called customer support (by “Digital River”) and was promised I’d get a mail the same day with the forms needs to send the devices back; you cannot just send them back, you have to have the forms. There’s no other way to get to know the return address.
  • Not having heard anything back, I called them on October 21st. Same promises
  • Not having heard anything back, I called them on October 21st. I had to call twice, because as soon as she’d heard my name, the first customer support person closed the connection. I got promises of escalation to higher-ups
  • Not having heard anything back, I called them November 4th. I got the same person on the phone, who gave the same promise of escalation.
  • Not having heard anything back, I called them November 19th, and was promised that my money would be refunded immediately and they would figure out a way to get the laptops back.
  • Not having received my money, or heard anything back, I called them December 13th. They promised me they’d do something about it, but that I was very mistaken in supposing I should have had my money back, they hadn’t got the laptops, right? When I asked them for an address to send them to myself, I was told that was impossible, so sorry. I told them I would get legal advice if I didn’t hear from them.
  • Not having heard anything from Lenovo, I called my legal adviser, who called Lenovo to get an address out of them we could send a paper letter to. This is apparently impossible. My legal adviser told me he was shocked at how rude the Lenovo representative was.
  • I sent the required final demand letter by email in January…
  • And not having heard anything from Lenovo whatsoever, my legal adviser told me the only solution would be to sue…

Well, I’m not prepared to bother with that. I’ll take my loss, think black thoughts of Lenovo and find a use for the devices. In fact, I’ve handed one to Ivan who didn’t have a windows machine, and tried to setup the other as a test machine.

But Lenovo is really, really awful. These laptops come with something called Lenovo Vantage, which has only one reason for its existence: it can switch the media keys into proper function keys. That used to be in the bios, but no longer… For the rest it’s a marketing and spyware tool — like Windows 10 itself, of course. And then Lenovo Vantage was updated, this function is gone! People started complaining about that on the Lenovo forums, and as of writing, Google still found those posts, but Lenovo has deleted all of them.

I’ve bought Yoga’s, Thinkpads and even Ideapads in great numbers in the past twenty years… But I think it’s time to make a change.

How not to lose the alpha channel

Thursday 20th of February 2020 02:03:32 PM

Working on color imagery for QiTissue recently, I realized we were accidentally losing the alpha channel in multiple places. For efficiency reasons, we keep colors in memory using the QRgb type, and convert that to/from QString for serialization purposes via QColor as needed. Here’s what I discovered about why that doesn’t work, and some ways I fixed it.

Firstly, be aware there is no QRgba in the Qt API . There is only QRgb, for 8bit color channels. It can hold an alpha value too, despite the lack of a trailing a in the type name. Then there is QRgba64 which uses 16bit per color channel. For our purposes, 8bit per channel is sufficient. So where do we lose the alpha channel, when QRgb can store it in principle?

The first pitfall is QColor(QRgb), which calls QColor::fromRgb internally. Both of these functions silently ignore the alpha channel of the passed QRgb value and assume the color is fully opaque. To get around this, you have to use QColor::fromRgba instead.

QColor toColor(QRgb colorWithAlpha) { // all bad: input alpha ignored, set to fully opaque return QColor(colorWithAlpha); return colorWithAlpha; return QColor::fromRgb(colorWithAlpha); // good: return QColor::fromRgba(colorWithAlpha); }

Then you’ll find that QColor::name() also ignores the alpha channel. Here, you have to use QColor::name(QColor::HexArgb) instead.

QString toString(const QColor &colorWithAlpha) { // bad: input alpha ignored, output is e.g. #112233 return; // good: output is e.g. #00112233 return; }

Thankfully, the QColor constructors and QColor::setName function, which parse a string color name, won’t ignore the alpha channel when you pass an ‘#AARRGGBB’ string.

However, there is one more pitfall: When you have a QColorDialog with QColorDialog::ShowAlphaChannel, and listen to its currentColorChanged signal and set a color with an alpha channel on it, a stray change signal notification will be emitted with a fully opaque color. The reason is that, internally, the color dialog will first set the RGB color components, and then in a second step will set the alpha component. But both will trigger a change notification, where the first step holds a fully opaque color. This should be fixed upstream, but thankfully for now it is easy to workaround by ignoring the signal while setting a color from the outside.

About KDAB

If you like this blog and want to read similar articles, consider subscribing via our RSS feed.

Subscribe to KDAB TV for similar informative short video content.

KDAB provides market leading software consulting and development services and training in Qt, C++ and 3D/OpenGL. Contact us.

The post How not to lose the alpha channel appeared first on KDAB.

Fosdem and Plasma Mobile Sprint

Thursday 20th of February 2020 12:15:53 PM

From January 31st to February 8th I went on a little tour, first at the two days of Fosdem in Brussels, then to Berlin for a KDE sprint about Plasma Mobile.

It was the first time i went to Fodem: it’s an awesome experience, even tough big and messy: which is the awesome of it… and the bad of it at the same time

Even tough there were 800 talks I didn’t attend that many, some about the Elixir language, some about retrocomputing, some about iot stuff. At Fosdem the best thing to do there.. is meeting a lot of interesting people, rather than attending talks, which are very interesting never the less, which you can find videos here.

I stayed most of the time at the KDE booth. in there we had as usual some hardware to show: besides the usual occasional “normal” laptops running Plasma, we had a PineBook pro running Plasma on Manjaro which runs impressively well for such a low resource machine and was in fact a favorite among the visitors.

Yep, there were a lot of people.

Besides that we had some Pinephones running Plasma Mobile, which they were very popular as well. The Plasma Mobile shell was very stable compared to last year fosdem which made me quite happy.

Looking people using it for the first time, was also a very precious feedback on what are the UI problems new users can encounter.

Feedback that turned out to be very useful the next week, when together other people working on Plasma Mobile and two perople from the UBports project few to Berlin for a Plasma Mobile sprint, graciously hosted by KDAB in their spaces.

There will be many points we will be able to collaborate with UBPorts, starting from background technology such as their telephony services, the content sharing infrastructure, and maybe push notifications. Tough in the end, we want their apps running smoothly on Plasma Mobile and our apps running smoothly on UBports as well, to have as many apps as possible.

Personally, the areas that i worked more at the sprint were the Plasma Mobile homescreen and fixes in Kirigami that were needed for some plasma mobile apps to look better.

On the Plasma Mobile homescreen, now dragging plasmoid thumbnails from the widget explorer to the homescreen works properly (fix in KWin, also drag and drop icons in your desktop wayland session should be fine now)

In order to make the homescreen look a bit more “modern” and less busy, I also removed most of the gray background rectangles that were there and in general simplified the homescreen code a bit, here is the result:

In general, it seems to me that Plasma Mobile is actually really start coming together 2020 :: Late Report

Wednesday 19th of February 2020 05:06:31 PM

So we recently held KDE India Conference 2020 in the college where I’m pursuing my B.Tech (CSE) in New Delhi. The conference was held from 17 January 2020 to 19 January 2020.

Photographs from the conference are available here:

Tweets from the conference used #cki2020 tag and are available conveniently through this link:

Day 1 of the conference talked about Open Source, and some of the cool KDE software that has eased many lives across the globe.

Day 2 of the conference talked about KDE software in general and bits about QML.

Day 3 of the conference talked about how specific KDE software and Qt Framework helps developers achieve amazing results with minimal hard-work and maximum smart-work.

Every day of the conference concluded with dinner at various good places in Delhi. We had Chicken Biryani, Butter Chicken, Indian version of pasta, and a bunch of other savories with our speakers while discussing random topics.

Biryani at Bikkgane Biryani, Connaught Place Important Announcement

We have some KDE India hoodies up for sale. If you are interested, feel free to put a comment below and I will get back to you on how we can get the hoodie to you. You might also be able to get one from me at this year’s Akademy if you really want one of these. Hit me up!

The cost for 1 hoodie is INR 650/-, excluding any shipping costs. The hoodies were sponsored originally by the KDE e.V. (massive shout out to Adriaan de Groot for helping me out there). The money collected through the sales will be sent back to the KDE e.V. (the legal body that represents the KDE Community in all legal and financial matters) in form of a donation.

The hoodie design Conclusion

The conference was able to educate 200+ unique attendees throughout the conference. For a free-entry based conference in Delhi, this was definitely a huge success. I had great fun in organizing the conference, and was really glad to see the huge turnout.

Day 1 :: 100+ attendees

Massive thanks to the volunteers for executing the conference in such a smooth manner. All of the volunteers were really helpful and responsible. I am grateful for having such a dedicated team of volunteers at 2020.

Volunteers at Future Notes

For any future iterations, I’d recommend to the organizers to collect a strong promotions and marketing team that can help promote the conference nicely. FB event, remote technical groups on IM platforms, mailing lists of technical communities, posts on social media are just some of the infinite ways that can be used to promote KDE India Conference. The really aware people are well versed with what KDE India Conference is, while those who don’t actually know a lot about Free Software in general are seldom unaware of the KDE India Conference.

The goal of KDE India Conference is not only to unite contributors and enthusiasts of the KDE Community across India, but also to encourage people new to software development that just want to work on real world software and learn valuable lessons about software development.

Thank you

Looking forward to the next iteration of Till, then, Happy Trails!

See you in 2021 ! \o/

Season of KDE Final Report

Wednesday 19th of February 2020 04:10:50 PM

SoK ended finally on 17th February 2020. I am happy to share that I have completed the project "Add multiple datasets to several activities" and passed the final evaluation!!!

It is time for a war on tabs

Wednesday 19th of February 2020 03:18:29 PM
KDE Project:

We (as a UI shell project) see the limits of our territory as the window, when there is the assumption nowadays that MDI tabbed interfaces are where most significant user activity takes place. Yet interacting with different views/documents within those windows is not standardised, so the user has to remember which app they are using, then select the appropriate actions to:

  • recognise the current tab
  • switch tabs
  • move tabs in the current window or between windows
  • notice which tab is being switched to (different switcher UIs, not shown)
  • open/close tabs
  • be warned when closing a window with multiple tabs
  • use keyboard shortcuts to switch tabs
  • persist tabs between logins
  • share sets of tabs between devices

All this causes additional cognitive load/dissonance when using your computing device.

I'm not saying Plasma needs to become a tabbed window manager, but we can do better, and it is definitely time to declare war on the mess above.

Plasma 5.18.1 for Kubuntu 19.10 available in Backports PPA

Wednesday 19th of February 2020 11:14:49 AM

We are pleased to announce that Plasma 5.18.1, is now available in our backports PPA for Kubuntu 19.10. This is the 1st bugfix release of the 5.18 LTS Plasma series.

The release announcement detailing the new features and improvements in Plasma 5.18 LTS can be found here.

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.18, so while we feel these backports will be beneficial to enthusiastic adopters, users wanting to use a Plasma release with more rounds of stabilisation/bugfixes ‘baked in’ may find it advisable to stay with Plasma 5.16 as included in the original 19.10 (Eoan) release.

The Kubuntu Backports PPA for 19.10 also currently contains newer versions of KDE Frameworks, Applications, and other KDE software.

Issues with Plasma itself can be reported on the KDE bugtracker [1]. In the case of packaging or other issues, please provide feedback on our mailing list [2], IRC [3], and/or file a bug against our PPA packages [4].

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

Calindori 1.1 is out: reminders, repeating events and more

Wednesday 19th of February 2020 11:00:00 AM

A new version of Calindori, the calendar application of Plasma Mobile, is now available. In Calindori 1.1, a set of new features has been added as well as the user interface has been improved, following the KDE human interface guidelines.

Event reminders

You can now add reminders to calendar events. To manage event reminders, a separate background application, calindac, has been created. Calindac looks for alarms into the Calindori ical files and triggers alarm notifications. The users may dismiss the alarm displayed or suspend it for a configurable amount of time.

Add reminder

Repeating events

In Calindori 1.1, repeating events can be added. In particular, you can mark an event as repeating on the event editor. An overlay sheet enables you to provide the repeating event details. Then, on the events list view, you can review the repeating information of each event.

Add repeating event

Month view swipes

To facilitate navigation among months, the month shown can be switched via vertical gestures; but you can still change the active month using the buttons on the bottom of the page.

Flat events view

To get an overview of your events, a flat view of all the registered events has been added. The events have been sorted by start date, displaying the upcoming events on the top of the page.

All events page

User interface improvements

The user interface of the event and todo cards has been modified, to make the information displayed more clear. In specific, helper icons have been added as well as page space, which is important on mobile devices, has been saved. Finally, Mathis Brüchert designed a new Calindori icon. Thanks Mathis!

Under the hood

Last but not least, the Calindori code has been streamlined, improving performance and maintenace. Nicolas Fella put a lot of effort into this task.

Installing Calindori

Calindori is available on KDE Neon for Plasma Mobile as well as on postmartketOS. You can also install the flatpak build on any Linux distribution. Finally, the nightly build of Calindori for Android can be found in the F-Droid instance of KDE.

Coming soon

Looking to the future, the most important piece to be added to Calindori is online calendar synchronization. The good news is that there is already work in progress on this.

Meanwhile, if you are interested in getting involved in Plasma Mobile, you can check the Find your way guide and join us on matrix.

PyCon India 2019 :: Late Report

Tuesday 18th of February 2020 09:14:08 AM
Chennai Chennai Convention Centre

Personally, I think the venue choice this year was great again, as we were able to accommodate 20+ sponsor stalls while still not overloading the halls and having ample space to conduct multiple tracks of the conference scheduled for the attendees.

sponsor stalls at the conference

1000+  users and developers of the Python programming language

As have been the regular norm with the annual PyCon India conference, the conference was graced by a footfall of over 1000 attendees from all corners of India. Many international names famous for their contributions in Python programming world also attended the conference.

If you are looking for more photographs from the conference, they are available here:

Videos for the talks from the conference are available here:

Volunteering Experience

Volunteer experience is one of my sought-after reasons to attend any conference in general. Being a volunteer gives you many many perks over a normal attendee: –

  • Easy access to information about all that’s happening and will happen at the conference
  • Unrestricted backstage access at the conference
  • Better networking – meet fellow volunteers and network much easily over common tasks/ jobs

Apart from these, there also are some monetary benefits to volunteering at a conference- registration fee for volunteers is generally waived off at paid-ticket based conferences and some quite generous conferences also have accommodation options for volunteers during the conference days, free of cost.
Also, organizers usually have free goodies to give away to the volunteers at the end of the conference.

The volunteers met at the convention centre a day before the conference to prepare the goodies bags for the attendees. These bags simply consisted of a schedule page, a pen, a notebook and a couple of PyCon India stickers- one for you, and one for sharing with your pal.

full force! all in an evening’s work DGPLUG Staircase Meeting

DGPLUG stands for Durgapur Linux Users Group. While it originated in Durgapur, West Bengal, DGPLUG has evolved into a larger, remote, decentralized community that has members from Bangalore, Pune, Delhi, Punjab, all places of India. As has been the annual convention, we also had DGPLUG’s annual staircase meeting with the past alumni of the Summer Training. We also received an awesome DGPLUG TShirt from Sayan bhaiya!

Translation: Learn and teach others

I really cherish the TShirt, now that the training has been discontinued. The training brought long lasting progressive changes in me and hundreds of other who participated in the summer training every year. I really missed Kushal bhaiya, Shakthi bhaiya, Jason bhaiya some other mentors. I still loved to meet many students from various corners of India that assembled for the meeting. This meeting was my main reason last year to attend the PyCon India 2018. I am eagerly looking forward to the next year’s meeting.

DGPLUG at the annual staircase meeting! Poster Presentation

The next highlight for me at the conference was PyCon India 2019 was Poster Presentation.

As PyCon organizers put it. There are many reasons to present a poster at PyCon India which can be read in the poster below: –

a poster promoting poster presentation

Unfortunately not a lot of people in India are aware of KDE as commonly as some other open source organizations. In a hope to change that, RItuka and I aimed at presenting a poster for KDE Community at PyCon India 2019. Poster presentation was discussed with the KDE family here:

So, at Day 2, we grabbed a poster stand and set up our little poster presentation stall. Some photos from our poster presentation are here: –

Piyush, Rituka, Subin and Kuntal some freebies for our friends at the PyCon India!

Since 1000+ attendees are a lot to cover within a 30 minute window, I planted KDE stickers at every booth – registration, TShirt distribution, help desk, and even planted the Konqui standee right in the middle of the hall to promote KDE as much as possible. People really liked the mascot Konqi and many posted pictures with Konqi online!

KDE at Help Desk KDE in the hall

KDE Stickers and pamphlets up for grabs at the TShirt booth!

Some tweets for the poster presentation are available here:


I really loved attending the conference. Every year I learn new things when I attend any conference, and this one was no different. If anything, I loved attending the different quizzes set up by the sponsor stalls with freebies as rewards. I grabbed most of those, so I’m quite happy with my loot from the conference!

Volunteer squad at the conference

Looking forward to the next iteration of the PyCon India Conference!

Cutelyst 2.10.0 and SimpleMail v2 released!

Monday 17th of February 2020 01:48:22 PM

Cutelyst the C++/Qt Web framework and SimpleMailQt just got new releases.

Cutelyst received many important bugfixes and if you are compiling it with View::Email it also requires SimpleMail 2, the latter got an Async API which is on production for a few months, allowing for a non-blocking send mail experience.

Check them out!

FOSDEM & Plasma Mobile Sprint

Sunday 16th of February 2020 11:42:13 PM

Last week I decided to take KDE Itinerary for a test tour. Between the train rides there was also time for some KDE stuff.


After writing an exam on Friday afternoon I took a train to Frankfurt. I did so not to enjoy the beautiful scenery of the area around Frankfurt central station at night but to be able to catch an early train towards Bruxelles for my first time at FOSDEM.

It has been a great experience to meet so many people interested in what KDE does at the KDE booth. It also was awesome to meet all the folks that are working hard on making Linux on the phone become a thing.

Pine64, Manjaro, UBports and KDE having dinner together Plasma Mobile Sprint

FOSDEM went by in no time and so I found myself on a train to Berlin on Monday. My ride managed to defeat KDE Itinerary’s cancellation notification handling, but Volker managed to fight back.

In Berlin we met for a week-long Plasma Mobile sprint, hosted by KDAB in their offices. This gave us the opportunity to plan, discuss and hack all the things in a much more focused and productive manner than normally.

A particular pleasure was meeting Marius and Dalton from UBports/Ubuntu Touch and discussing how our projects can benefit each other. Most of our interactions was me nagging them to upgrade their Qt to allow KDE apps to run on Ubuntu Touch, but there was also fruitful discussion on sharing content between apps and a common push notification service (codenamed ‘Phushan’).

In addition to the discussion I also managed to get a few things done:

  • We managed to build KTrip using Ubuntu Touch’s clickable build system (only for amd64, since crosscompiling Qt is a little more involved. If you find it easy please consider applying at KDAB).
  • I started revamping the dated code of the dialer UI.
  • Together with the Kaidan team I fixed an issue in KNotifications that was affecting them.
  • Kaidan (XMPP client), Qrca (barcode scanner), Kookbook (recipe manager), Keysmith (OTP client) and Ruqola (Rocket.Chat client) are now available for Android in our nightly F-Droid repository.

On Saturday KDE joined UBports in their regular Q&A where we reported about the whole week and answered questions from the crowd. Check it out!

I left Berlin a bit earlier than planned due to an approaching storm, which was fine given how action-packed the whole week was.

Looking forward to doing it again!

Season of KDE Final Report

Sunday 16th of February 2020 06:30:00 PM

Part 2 - SoK has finally ended yesterday and it’s been a great learning experience for me. In these last 40 days, it really made me lot more comfortable and confident as an open source contributor :). In my previous report - previous report. I mentioned about the completion of smallnumbers and enumerate...

Season of KDE

Sunday 16th of February 2020 06:30:00 PM

Part 2 - Hey Everyone, this is Part 2 of my update regarding my SoK Journey and probably the last since I’m updating my blog on the very last day 😅. Since my last blog, I got really busy with my college and got less time to work on the website. I took...

More in Tux Machines

Best Open Source Slack Alternatives for Team Communication

You are here: Home / List / Best Open Source Slack Alternatives for Team Communication Best Open Source Slack Alternatives for Team Communication Last updated February 25, 2020 By Ankush Das Leave a Comment Brief: Here, we shall take a look at the best open source slack alternatives that you can choose to communicate with your team at work. Slack is one of the most popular team communication services for work. Some may call it a glorified IRC but that doesn’t impact its popularity. It is available for free with additional features offered in its paid plans. Though Slack can be installed on Linux thanks to an Electron app but it is not open source, neither the client nor the server. In this article, I’ll list a few open source Slack alternatives that you can try. Read more

Dual-Boot GNU/Linux and Android

  • Planet Computers' clamshell phone can dual-boot Android and Linux

    Planet Computers' laptop-like Cosmo Communicator phone just became that much more useful to its audience of very particular power users. The Cosmo now supports a promised multi-boot function, letting you run Android (both regular and rooted), Debian Linux and TWRP on the same device without one replacing the other. You'll have to partition your storage and know your way around a boot menu, but this will give you a way to run Linux apps or otherwise experiment with your phone. You won't lose over-the-air updates for Android by installing Linux, Planet Computers said. The multi-boot firmware is available for free, and there are instructions for installing Debian and other software. This still isn't for the faint-hearted. However, it also represents one of the few instances where a phone maker has officially enabled support for operating systems besides the one that ships with the device. The Cosmo is also fairly well-suited to Linux thanks to its keyboard -- you won't have to jump through hoops to use the command line.

  • How can IT manage Android Things devices in the enterprise?

    Recent versions of Google's Android OS support a wider range of devices via the Android Things program's APIs and managing some of the newer devices can seem complicated at first. Thankfully, the underlying OS is essentially the same on all Android devices, so the EMM platform management and enrollment processes are usually similar for Android Things devices. The challenge for mobile admins is to develop a version of Android -- using the Android SDK and Android Things APIs -- that functions on these dedicated devices.

Update on Linux support: creation of a CERN Linux community forum

For those, a CERN Linux community forum has been created. Users will be able to post issues that they encounter when using non-CERN-supported Linux distributions and to post solutions. Users are also encouraged to post articles with comments and ideas that could help make this forum more dynamic and useful to them. Various methods for printing and using AFS, SSH, ROOT and other tools at CERN can be found on the internet. The CERN Linux community forum aims to collect these methods, as well as new ones that may be created directly in it. Read more

Python Programming

  • Introduction to Python SQL Libraries

    All software applications interact with data, most commonly through a database management system (DBMS). Some programming languages come with modules that you can use to interact with a DBMS, while others require the use of third-party packages. In this tutorial, you’ll explore the different Python SQL libraries that you can use. You’ll develop a straightforward application to interact with SQLite, MySQL, and PostgreSQL databases.

  • Introduction to Image Processing in Python with OpenCV

    In this tutorial, we are going to learn how we can perform image processing using the Python language. We are not going to restrict ourselves to a single library or framework; however, there is one that we will be using the most frequently, the Open CV library. We will start off by talking a little about image processing and then we will move on to see different applications/scenarios where image processing can come in handy. So, let's begin!

  • Talking to API's and goodlooking tools

    One of my go-to locations for security news had a thread recently about a tool called VTScan. I really liked the idea of not having to go through the browser overhead to check files against multiple scan engines. Although the tool (which is itself a basic vt-cli spinoff) already existed, I was looking for a new challenge, I decided to roll my own and add a few cool features! I'll have a thorough look at how python talks to API's with requests and I look at turning all this API data into a nice GUI application with click. I hope to give you some idea's for CLI styling in the future so I can see more awesome tools by you all!

  • From a rejected Pycon talk to a new project.

    Like many others, my talk proposal (early draft here) for Pycon US was rejected. So, I decided to spend some time putting everything in a new project instead. (Documentation here.) It is still a rough draft, but usable ... and since I've mentioned it in a few other places, I thought I should mention it here as well.