Language Selection

English French German Italian Portuguese Spanish

Kde Planet

Syndicate content Planet KDE
Planet KDE
Updated: 2 hours 8 sec ago

This week in KDE: Features you’ve been waiting for

Saturday 2nd of May 2020 01:24:32 PM

This week we have some big stuff for you, including a rewritten global shortcuts settings page, an option to remember Dolphin’s window state across launches, a fix for longstanding kerning issues with centered text in QML-based software, and much more!

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

Have a look at to discover 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.

Airport Locations in KDE Itinerary

Saturday 2nd of May 2020 10:15:00 AM

In order to navigate you to and from an airport KDE Itinerary needs to know where that airport actually is. That is a seemingly easy question, but surprisingly hard to answer with the level of precision we need. Since the recent work on public transportation line metadata left me with a local OpenStreetMap database, I tried to see if we can improve our airport coordinates a bit.

Where is an airport?

So far we use a simple mapping from airport IATA codes to a single geographic coordinate that we obtain from the airport’s Wikidata entry. That is, we have a single point somewhere in a often multiple kilometers wide area. Typically that’s somewhere around the center of the overall bounding box.

In some cases, such as Munich (MUC) this happens to be exactly where we want it to be, the “entrance” of the airport, ie. the place you have to go to to enter the airport (which is again usually a much larger area than the term “entrance” would suggest).

In many cases however we end up with a location somewhere in the middle of the runway, and thus either with navigation instructions that end with “and now walk 1.5km into an area you are not allowed to enter”, or worse, the routing engine snapping to the “other side”, leading you the opposite side of the airport.

Let’s look at Frankfurt (FRA), the following image marks a few relevant parts:

  • The red ‘X’ is the bounding box center coordinate we git from Wikidata.
  • The blue circle marks the entrance area you’d actually want to go to.
  • The magenta circles mark other railway stations in the vicinity of the airport. In the error case routing attempts to get us to those, and then suggests a bus to somewhere closer to the outer perimeter of the airport.
Frankfurt (FRA) airport showing the center coordinate (red), entrance area (blue) and interfering railway stations (magenta). Where is the airport entrance?

While it’s usually fairly clear for a human looking at a map where to go to enter an airport, it’s not that easy to determine this from OSM data in code. The following heuristics have proven useful:

  • Entrance tags on terminal building nodes. This seems like the obvious thing to look for, but unfortunately there are a few issues with this as data availability varies a lot. On a large airport you can end up with hundreds of those, or none at all (or worse, just one and that being far away from where one would expect it). When available on small airports though, this provides a very precise position.

  • Terminal buildings, after all you have to pass through those at the airport. This turns out to be rather robust on small to mid-sized airports where we don’t have air-side concourses or additional inaccessible terminal buildings (e.g. for government, VIP, military or freight use). To deal with the latter, detailed tags on the terminal buildings help a lot.

  • Railway stations inside the airport boundaries, or at least in very close proximity to a terminal building. Those are more common on medium to larger airports. In-airport inter-terminal transport systems can interfere with properly detecting railway stations though, here we rely again on detailed tagging in the OSM data.

Another aspect that helps humans to spot the entrance area is the structure of the road network leading there. That might offer additional hints, but is unfortunately much harder to deal with in code.


The above approach covers a wide range of airports, and for many of them it provides a significant improvement in navigation precision. This however fails on some of the very large airports, namely those with multiple entrance areas, typically due to having multiple sets of terminals that are largely disconnected from each other, to the extend of even looking like two or more airports close to each other and sharing the same runways.

London Heathrow (LHR) is one of the more extreme examples for this, with three distinct sets of terminals (marked with blue circles below), all with their own railway stations and access roads, and no internal connection between them.

London Heathrow (LHR) airport with its center coordinate (red) and terminal entrance areas (blue).

These cases cannot be modelled by a single coordinate per airport anymore, here we’d need to take the respective terminal into account as well. That is possible, we have that information in the itinerary data model. What I’m still unsure about however is if we should attempt to cluster terminals automatically using the OSM data, or if those are so few cases that a manually created table would be more efficient to build and maintain?

What about trains?

Airports are particularly affected by this navigation problem, due to:

  • The enormous size.
  • There is a large area in their center that you cannot actually enter (which is something routing engines don’t like).
  • Navigating to/from airports involves changing the mode of transportation (public transport or car), and usually also the transport operator. That typically implies the use of distinct routing systems, and their focus is usually not exactly airports.

For train stations this applies to a much lesser extend. Besides being smaller, the public transport routing systems usually tend to produce sensible results no matter which coordinate you pick within the station boundaries (as train stations happen to be a very central concept of those systems).

That doesn’t mean everything is perfect there, the possible error scenarios are just different.

You can help!

In the previous post I wrote about how you can help improving OSM and Wikidata data for public transport lines, and the same applies to airports. Verifying airport codes, tagging terminals, entrances and railway stations with all available details, and cross-linking Wikidata and OSM elements are easy ways to contribute.

Creating a serial adapter for PinePhone

Friday 1st of May 2020 09:00:00 AM

The other day I wanted to connect to my PinePhone from my desktop computer. Since USB tethering is not functional yet on KDE Neon that runs on the phone, a wifi connection should have been established on the phone side to get access to a terminal. But if you would like to debug the booting process or wifi is not an option, serial communication is the way to go.

PinePhone offers serial connectivity through the headphones connector. In specific, the earphone jack works as expected -as an audio jack- if the 6th hardware switch on the back of the phone is ON. Switch it off, and the audio jack works as a serial adapter; a USB-to-jack serial console cable is also needed.

Unfortunately, ordering such a cable during the covid-19 lock down would mean long delays. Luckily, after asking on the Plasma Mobile matrix channel, Bhushan suggested I create my own converter cable, using an old USB to serial adapter -which I already had- and a spare audio cable. Let’s see how to make it.

USB to serial adapter

At first, cut the audio cable. What I found after cutting was a copper wire ground sheath wrapped around two insulated audio signal wires. It is easy to bring out the wires by applying some fire.

Audio cable wires

Next, connect the audio cable wires to the USB serial cable endpoints. In my case, there are four connection points on the USB cable side:

  • Red +5 V
  • Black GND
  • White RXD
  • Green TXD

According to the information found at the pine64 wiki, the cables should be connected like this:

  • Left audio to TXD
  • Right audio to RXD
  • Ground connection

I also used some spare jump wires with solid tips to make the construction more stable, but that’s not required. After insulating the connection with some tape, the serial cable is ready to use.

Ready to use cable

So, it’s time to test our construction. A friendly utility for serial connection is picocom. Enter:

sudo picocom -b 115200 /dev/ttyUSB0

Then, switch on the PinePhone, and the booting process is shown on the terminal. It’s also possible to login to an interactive shell. E.g., open another terminal and type:

sudo bash -c "echo phablet > /dev/ttyUSB0" sudo bash -c "echo 1234 > /dev/ttyUSB0"

That’s all. Happy PinePhone hacking!

I don’t want to be patronized and much less by a software vendor

Thursday 30th of April 2020 01:50:20 PM

So it happened again: I feel being patronized by a large SW vendor who forces me to automatically run his software on my system after each login. As an open source developer and advocate I hate if I don’t have control over these kind of things and no option to turn them off. Unix know-how to the rescue, though. Read on.

The members of a project I am currently working on to make a living are now widespread over the country due to the coronavirus pandemic. Project management has decided that the communication should happen over a product called skype. It’s not free and open, but hey, come on, I have to make some money somehow so that I can manage it with KMyMoney. Fortunately, I found out that there is a version for Linux and it even works quite well.

Nevertheless, I wondered why it starts after login without me doing anything. OK, this could be the default setting and I started the KDE system settings to turn it off. Not thinking about it further, I started and stopped skype for a few days until there was a kernel update and I had to reboot my system.

After login, I was surprised that skype started automatically. I thought, I had turned it off. Well, unmark that checkbox again in system settings and guess what: it returned without me doing anything except starting and using the application. That ~/.config/autostart/skypeforlinux.desktop file, which is responsible for the autostart, just re-appeared every time one starts skype manually.

Using the search engine of choice, I learned that this is a known problem and cannot be turned off with an option. This is the time, when patronization starts and I get angry.

Visiting a few web pages I learned that people have developed different methods to solve the issue:

  • auto start a shell script that immediately kills skypeforlinux
  • create a directory with the name of the desktop file to avoid creation of the file itself

and maybe some more I don’t remember. All in all, they are not really what I like on my system.

Next, I thought they will recreate the file only in case it does not exist. I changed X-GNOME-Autostart-enabled=true to X-GNOME-Autostart-enabled=false which should do the trick. Guess what: start skype, quit and the setting is back to true. Changing Exec=/usr/bin/skypeforlinux to Exec=/usr/bin/true had the same effect: none.

This is the moment in time when I really get angry and p….: I set options and someone else discards them. OK Microsoft, how about the next ace in my sleeve:

cd ~/.config/autostart sed -i -e 's/^Exec=.*/Exec=\/usr\/bin\/true/' skypeforlinux.desktop chmod 444 skypeforlinux.desktop

and that does it. And if you think you can override that in a future version, I will make root the owner of that file.

Oh, and the Microsoft Teams client for Linux does the same crap but the solution works the same way.

Enjoy login without Microsoft autostarts on Linux!

Update 2020-05-01

As a response to the above blog entry I received a mail that explained how to turn off the autostart using a setting on the General settings tab within skype. The same mechanism applies to teams as well, so at least that is consistent.

BTW: changing the setting withing the application immediately creates or removes the ~/.config/autostart/<MS-application>.desktop file. Well, I think you can call this also a form of desktop integration.

Full Proof that C++ Grammar is Undecidable

Tuesday 28th of April 2020 02:06:40 PM

Most programming languages’ grammars fall into the category of Context-Free Grammar (CFG), or sometimes Context-Sensitive Grammar (CSG). What about C++? It turns out parsing C++’s grammar is literally undecidable. In other words, if you have a compiler that parses all valid C++ sources perfectly, you have solved the Halting Problem.

Relationship between various categories of formal languages

To prove this, we will write a program that is parsed differently depending on the solution to the Halting Problem. But we need to implement a Turing Machine to formulate the Halting Problem, and doing that with only template metaprogramming is a huge pain, so we will instead use the Post Correspondence Problem which is proven to be equivalent to the Halting Problem.

The Post Correspondence Problem’s statement is simple: You are given a set of dominoes which have an array of symbols written on the top part and the bottom part. Can you arrange the dominoes, allowing duplicates, so that the string of symbols on the top part matches the string of symbols on the bottom part?

Three types of dominoes [bba, bb], [ab, aa], [a, baa] arranged so that the top part “bbaabbbaa” reads the same as the bottom part.

Turns out, there exists no algorithm that says “yes” or “no” to the Post Correspondence Problem in finite time, given any set of dominoes as input.

We first define a variadic struct template Row , which represents a “row” of symbols (int s). We add a convenience static member constant that says whether this row is empty.

Now we define a template that represents a domino:

And a handy type alias that concatenates two Row s together:

Now, to exhaustively search through the entire search space, we will use a Breadth-First Search (BFS) algorithm. In the core of BFS lies a FIFO queue, so we first implement that:

Each state of the search space consists of the upper row and lower row of the already-arranged dominoes. We can check if the state is a match by checking if the two rows are identical and not empty.

Two rows are a “partial match” if the shorter one is the prefix of the longer. This is used to prune the branches where expanding more would be useless:

Now we implement the core of the algorithm. First, pop the head of the queue, and check if the popped state is a match. If it is, the problem is solved, and the answer is “yes”; if it isn’t, but going further could lead us to a solution, push all the child states generated by appending a domino at the right end, and keep going. If the queue is somehow empty, that means we looked at the entire search space and did not find a match, so the answer is “no”.

The initial state is two empty rows:

Now, DominoList::match has the solution to the Post Correspondence Problem defined by the template argument Dominos !

We can now define a helper struct ParseThis whose member typeOrValue is a type int if the solution to the Post Correspondence Problem is “yes”, and a value 0 of type int if the solution is “no”, using SFINAE:

Therefore, the following line is a function declaration if the solution to the Post Correspondence Problem with the dominoes [bba, bb], [ab, aa], [a, baa] is “Yes”, and a variable declaration if it is “No”. (In the former case, it is equivalent to int x(int); , and in the latter case, it is equivalent to int x(0); or int x = 0; )

There we have it! We can substitute any set of dominoes in the above line, and a conforming compiler should be able to decide whether x is a function or variable! If such compiler exists, however, we can use it to solve the Post Correspondence Problem for any input, which means we can use it to solve the Halting Problem. But no such program can exist, which means parsing C++ is undecidable. QED

Read the full code here:


In reality, implementations can restrict the maximum number of template parameters, and the maximum template recursion depth. Also the result of an infinite recursion in instantiation is undefined. So you could argue that this doesn’t really prove that parsing C++ is undecidable, since sources that contain inputs to the PCP which is either too large, or leads to a huge (or infinite) amount of template instantiations are ill-formed, thus invalid C++ code.

But the complexity of parsing C++ leads to real-world consequences: It makes writing proper tooling, such as code highlighters, code formatters and refactorers, that works reasonably well on C++ code incredibly complicated. All of them needs to have a working compiler embedded in them, such as clang-format, clang-tidy, etc, which makes them very heavy and memory-intensive.

Cantor 20.04

Tuesday 28th of April 2020 12:00:00 AM

We continue working on improving the usability of Cantor. Another important change in 20.04 is the new feature collapsible cells which allows the user to collapse the results of a calculation. This is useful when doing many calculation in one worksheet and there is the need to hide some of the results temporarily to get more place in the worksheet or to be less distracted by what is not needed right now. For this, we introduced a new control element for every cell in the worksheet. By double clicking on this new element the result part of the cell is collapsed.

Alternatively, the results can be hidden by selecting “Hide Results” from the context menu of the command entry in the worksheet. This step can be similarly undone to show the results again.

The new control element allows for further new and handy features. Via this element the entries can be moved to different positions in worksheet via drag&drop:

Also, multiple selection of different cells by Ctrl+LeftClick’ing on the control elements and actions on multiple entries in one single step are possible now:

To finalize the list of new improvements in Cantor 20.04 we want to mention the ability to limit the size of the result output produced by a calculation. Sometimes, the output of a calculation can be huge (for example printing out the content of a big array) and the worksheet is filled with a lot of information that the user actually wants to avoid rather. For this there is a new option in the application settings allowing to set the maximal number of rows in the result output:

A main change in this release, Cantor drops the support for Python2. It’s a common consensus in the python community that projects should sunset the support for Python2 and move to Python3 in 2020, if they haven’t done so yet. More on this can be found in the Python3 statement. Many well known Python projects committed to this or did this already. Cantor supported both major versions in the past - Python2 and Python3. With 20.04 release there is only one “Python” now being Python3.x:

However, Cantor can open Python2 worksheets yet - so it is possible to save them to Python(3) worksheets version.

KBibTeX 0.9.2

Monday 27th of April 2020 11:37:48 AM

Finally, after a long waiting period, KBibTeX 0.9.2 got tagged, tar-balled, and released! It is a bug fix release, so virtually no new features since 0.9 got released; dependencies have not changed.

The highlights from the ChangeLog include:

Read more... )

Many thanks to the people who supported this release and make the continuous development of KBibTeX possible!


KONTENT GmbH is a New KDE e.V. Supporter

Monday 27th of April 2020 10:47:51 AM

KDE e.V. is very happy to welcome KONTENT GmbH as one of our supporting members.

We from KONTENT are Linux enthusiasts since our beginning, back in the 90s. So KDE was at anytime a well known, high quality brand for us. It was just a matter of time that we would get in closer contact to the community. This moment has come now, and we are very proud of it. Maybe in the future we can not just help in financial matters, but also in an inspiring way.

Uli Klinkhammer, CEO of KONTENT GmbH

Supporting memberships are very important because they help make KDE
sustainable. If you would like to become a supporter as well, you can find more information on our website.

Interview with Joshua Grier

Monday 27th of April 2020 07:45:30 AM
Could you tell us something about yourself?

I’m Josh, and I love design. There’s nothing better than taking people’s stories, thoughts, feelings, wants and needs and responding to them in practical ways.

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

As my full time job I’m a Concept Artist in the video game industry, I spend a lot of my free time practicing as well though.

What genre(s) do you work in?

Mostly on props, vehicles, toys, mechanical things and environments in my comfort zone. Generally whatever the job requires though in my day to day. Everything is interesting, and drawing is drawing whatever the subject or style.

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

For a long while now it’s been Vaughan Ling, Sinix, Jake Parker and Scott Robertson. By extension though I’d say my friends and peers in the concept art community in general. And going back I have a thing for lithography. Love M.C. Escher and Gustave Dore.

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

Some time during primary school on a really old Corel tablet I got as a present haha. I tried doing some ‘Zoids’ fan art and it was a pretty brutal learning curve. I’m sure everyone has some anime fanart attempts deep in the archives!

What makes you choose digital over traditional painting?

Mostly efficiency as what I create for work needs to be done reasonably quick and needs to be flexible when it comes to making changes and rapidly iterating.

How did you find out about Krita?

I heard about it through some artists I follow. Sinix and Sycra have Youtube videos showcasing the software from a while back.

What was your first impression?

I found the brush engine stood out to me over competing programs. It felt and still feels far more intuitive and more well designed for art and design than other packages I’ve tried to use.

What do you love about Krita?

I love that Krita is accessible to all of the creative community, I love how versatile/customizable it is and how high quality it is and continues to be as it’s improved over the years!

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

Most things have been fixed that bothered me, I’d say that some of the animation tools are a little frustrating sometimes when you’re working on something complex. Text tools also.

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

For me personally I’ve found the brush engine more forgiving than other pieces of software and through working with others I’ve gotten comfortable with creating my own presets and modifying them when I need specific tools. In most other software I just use whatever the default is haha.

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

Ooh always a tough one haha. Of the recent work I’ve done in Krita that I can share I’d say the car thumbnails for my Masters project are my favourite. To me they represent breaking through to a level of confidence in my professional work I’d not experienced to that level previously.

What techniques and brushes did you use in it?

I follow a pretty traditional workflow a lot of the time. For that it was mostly a thick marker brush and a thin marker brush with 70-80% opacity and directional stroke turned on to work in and out of my shapes (erasing with the same brushes too to control values.) I’ve found this to nicely simulate the process of using markers and ink to draft up design ideas.

On my Instagram for smaller regular updates and on my artstation for my
portfolio at

Anything else you’d like to share?

Good luck in your art journeys and feel free to reach out, I’m always happy to interact with the wider community! Check out GD Quest’s Krita brush pack, I helped Nathan work on the updated brush pack (not paid or sponsored or anything I just find it useful)

Oh and hopefully I can share some even cooler design work I’ve done and will continue to do in Krita in the near future soon, thanks!

KStars v3.4.2 is Released

Sunday 26th of April 2020 09:55:00 PM
Glad to announce the latest release of KStars v3.4.2 on April, 27th, 2020 for Windows, MacOS, and Linux.

This release brings even more stability enhancements to KStars in addition to better memory management, especially on embedded devices.

FITS Viewer Memory
Hy Murveit submitted patches to reduce memory usage of FITS Viewer tool, sometimes by up to 50%.

The maximum zoom factor was hard-coded to 400% in the FITS View. However, it now dynamic (On Linux & MacOS, Windows in the next release). On systems with limited memory, the maximum zoom is at 100%, while if you have 16GB+ RAM available, you can zoom in up to 600%.

Testing Framework
This is an under-the-hood improvement in KStars championed by Eric Dejouhanet to standardize unit and GUI tests for KStars in order to ensure reliability and detect any regressions that might affect the code. While this will not affect end users directly, it greatly enhances KStars reliability in the long term.

INDIHub Support
Preliminary support for INDIHub project by Dennis Zaytsev. INDIhub is a global networks of telescopes powered by INDI. You can share your equipment with others, or can opt in for remote robotic operation to help in scientific studies. This is in the very early phases of development and the KStars team shall add more support to INDIHub integration in the upcoming releases.

Improvements & Bug Fixes
  • Correct bug in median computation
  • Re-enabled the Jupiter's Moons tool
  • Add a warning if the dust cap is missing instead of total abort.
  • Fixed KStars deadlock on disconnecting from INDI server.
  • Mount box layout corrected so that everything fits well into the window
  • SEP Focus improvements

Changelog: Nitrux 1.2.8

Sunday 26th of April 2020 07:31:47 AM
Today is the day! — Nitrux 1.2.8 is available to download

We are pleased to announce the launch of Nitrux 1.2.8. This new version brings together the latest software updates, bug fixes, performance improvements, and ready-to-use hardware support.

Nitrux 1.2.8 is available for immediate download.

What’s new
  • We’ve updated the kernel to version 5.6.7.
  • We’ve updated KDE Plasma to version 5.18.4, KDE Frameworks to version 5.69.0, KDE Applications to version 20.04.0, and Qt 5.14.1.
  • We’ve updated the Nvidia driver to version 440.64.
  • We’ve updated all Maui applications and the MauiKit framework.
  • We’ve added appimage-builder.appimage-builder is a novel tool for creating AppImages. It uses the system package manager to resolve the application dependencies and creates a complete bundle. It can be used to pack almost any kind of applications including those made using: C/C++, Python, and Java.
  • We’ve added Feral Interactive gamemode. “GameMode is a daemon/lib combo for Linux that allows games to request a set of optimisations be temporarily applied to the host OS and/or a game process.
  • We’ve added tmate. “tmate is a fork of tmux. tmate and tmux can coexist on the same system.
Known issues
  • Pix shows a red color in the header-bar when “Gallery” is hovered or selected.
  • OpenGL acceleration is used by default, if you use Nitrux in a VM open System Settings>Monitor>Compositor and select XRandr in addition to disabling desktop effects like blur.

The post Changelog: Nitrux 1.2.8 appeared first on Nitrux — #YourNextOS.

digiKam 7.0.0-beta3 is released

Sunday 26th of April 2020 12:00:00 AM
Dear digiKam fans and users, Just few words to inform the community that 7.0.0-beta3 is out and ready to test two month later the second beta release published in February. After a long test stage while this Covid-19 containment, this new version come with more than 670 bug-fixes since last stable release 6.4.0 and look very promising. Nothing is completed yet, as we plan one release candidate version before next summer, when we will publish officially the stable version.

Contributing Public Transport Metadata

Saturday 25th of April 2020 08:00:00 AM

In the last post I described how we handle public transport line metadata in KPublicTransport, and what we use that for. Here’s now how you can help to review and improve these information in Wikidata and OpenStreetMap, where it not only benefits KPublicTransport, but everyone.


Let’s consider Berlin’s subway line U1 as an example on how things are ideally represented in OSM and Wikidata.

As a single bi-directional line, there are three relevant elements in OSM for this:

We have some heuristics to merge route elements without a route_master as well, but things get a lot more reliable if this is set up properly and all route elements are members of the corresponding route_master relation.

On the route_master relation, there’s a number of fields we use:

  • ref for the (short) line name.
  • colour for the line color in #RRGGBB notation. Note the British English spelling.
  • Any of route_master, line, passenger or service to determine the mode of transportation (bus, tram, subway, rapid transit, regional or long-distance train, etc). This is unfortunately not always an exact science, the lines between those can be blurry, and there are various exotic special cases (e.g. the San Francisco cable cars or the Wuppertal Schwebebahn). See the OSM wiki for details.

Editing these fields (called “tags” in OSM speak) is fairly straightforward, compared to setting up entire routes from scratch, and most of the time is all that’s needed.


Next to the information in OSM, we ideally have two related items in Wikidata for each line:

  • One item representing the line, an instance of of a railway line, tram line, etc, or even better, a more specific subclass thereof. Q99691 in the above example.
  • One item representing a set of lines belonging to the same “product”, ie. typically a network of lines of the same mode of transportation in a given city. This is a often an instance of rapid transit, tram system, etc, or anything in that type hierarchy. Q68646 for the Berlin subway network in our example.

On those items we are particularly interested in the following properties:

Linking Wikidata and OpenStreetMap

Once we have elements in both OSM and Wikidata we still need to link them together. Sometimes that’s even all that’s missing, and is therefore particularly easy to contribute.

On the OSM side, there is a wikidata tag that should be set on the route_master relation and contain the Wikidata item identifier (eg. Qxxx) of the item representing that line. In some cases links to the product item exist instead, not ideal but better than nothing, if there are no per-line items in Wikidata.

On the Wikidata side, there is the OSM relation ID (P402) property that should be set on the item representing a line, and contain the relation number from the OSM side (58767 in our example).

Conflicting Information

Even with everything already set up and linked properly, reviewing the individual information is useful. Since some of the information are duplicated between Wikidata and OSM they might go out of sync. Particularly prone to that seem to be colors and the mode of transportation.

In our example this is indeed the case for the color (at the time of writing):

  • OSM has it set to #52B447
  • Wikidata has it set to #65BD00

At least both some similar shade of green, but sometimes the differences are much more significant than this.

Line Logos

The visually most impactful part are the line and product logos. Those are Wikimedia Commons files referenced via the logo image (P154) property in Wikidata. In our example that’s Berlin_U1.svg and U-Bahn.svg.

KPublicTransport’s code is looking for the following criteria before considering a logo for use:

  • The file type should be SVG or PNG. SVG is preferred, as that has the best chance to scale down reasonably when displayed in an application.
  • The file size should not exceeding 10kB, as we need to download this on demand, likely on a mobile data link. For the commonly fairly simply structured logos done in SVG this is rarely a problem, but there are files out there in the multi-100kB range as well that could benefit from optimizations.
  • A license that does not require individual attribution, such as CC0. That is the majority, however a number of files use variations of the CC-BY license family as well. Sadly we cannot use those, as providing appropriate individual attribution to the author is simply not practical for every tiny icon we display in a list somewhere.

When adding new logos, or improving exist ones, those are probably criteria you want to keep in mind. In cases the logos changed over time, this can be modelled in Wikidata as well. In those cases consider adding start time (P580) and end time (P582) qualifiers to the logo property (if known), or to the very least ensure that the current variant of the logo has preferred rank (the little up/down arrows on the left side).


Reviewing, fixing and completing these information around your home or other places of interest to you is a very easy way to help, all you need is a web browser. Doing this will directly improve the experience of using KDE Itinerary or KTrip for yourself and others, as well as helping everyone else who is building things with this data.

This week in KDE: so many videos for you

Saturday 25th of April 2020 04:41:05 AM

Version 20.04.0 of KDE’s apps has been released! Go check it out; there’s amazing stuff in there.

Work proceeds on the Breeze Evolution task for Plasma 5.19. In particular, the System Tray visual overhaul subtask is nearly complete and our tray popups are looking better than ever:

Other work is proceeding nicely as well!

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

Just keep being awesome, and rest when you need it. These are hard times. Don’t beat yourself up for not doing more; it’s enough. We’ll get through it.

Maui Weekly Report 4

Saturday 25th of April 2020 12:01:57 AM

Today, we bring you a new report on the Maui Project progress.

Are you a developer and want to start developing cross-platform and convergent apps, targeting, among other things, the upcoming Linux Mobile devices? Then join us on Telegram:

If you are interested in testing this project and helping out with translations or documentation, you are also more than welcome.

The Maui Project is free software from the KDE Community developed by the Nitrux team.
This post contains some code snippets to give you an idea of how to use MauiKit. For more detailed documentation, get in touch with us or subscribe to the news feed to keep up to date with the upcoming tutorial.

We are present on Twitter and Mastodon:

MauiKit Controls ToolBar

New properties have been added for better controlling the layout of the toolbar: farLeftContent and farRightContent. The two new features work like the previous leftContent, middleContent, rightContent.

By default, the items inside the toolbar will be placed from left to right using the leftContent property, is no positioning is explicitly used.


The Page component features involving the toolbars: floating and auto-hiding have been improved. The floating properties remain auto exclusive from the pullback toolbar, meaning a toolbar can be either pullback or be floating, but not both.

New features were added to support the same header behavior for the footer:  autohideFooter and floatingFooter, and also new features for better controlling the floating and auto-hiding actions:  autohideFooterMargins and autohideHeaderMargins, autohideFooterDelay, autohideHeaderDelay, etc.


The doodle component has been added and has basic features and still is work on progress, what is it? It allows us to grab an image source or UI item to an image to be able to add doodles and annotations; this can be later on saved as images or just extract the doodles and process those as notes or whatever.

It is being used for testing purposes on Pix to doodle on pictures, on Library to doodle over PDF, and finally on Nota to doodle over text files. It can be expanded and support iPad and tablets with stylus and so on.


The TabBar is now scrollable by a mouse wheel on desktops when the number of tabs does not fit the available width.

Apps Pix

I am testing the new doodle component.

All clickable items now respect the single click property from the system.

A detailed view was added by using the MauiKit control AltBrowser, which allows switching between a grid and a list view.

Below is a video showing Pix using MauiKit Pages with auto-hiding and floating toolbars and the new details view. Cinema

Cinema is a new video player and collection manager. The app development will be documented in a series of tutorials.

You can follow the tutorial here. A first post has been published at:

A MauiKit App. Episode 1


All the clickable items now respect the system single-click property.


The split views handles are now more clear and easy to discover for resizing the split views.


Now each tab with the editor can have its embedded terminal. This increases productivity when using nota for hacking In Progress

CSD is being tested on Station, Buho and Vvave

The implementation for drawing the window controls correctly based on the system for integration is going to be refactored by making use of psifidotos work; you can read about it here:


The optional CSD property is now being loaded from a global config file at  ~/.config/org.kde.maui/mauiproject.conf with group GLOBAl and key CSD(bool). It can still be overridden by the app, forcing to use CSD or not.

Doodles for iPad and other tablets with a stylus or pencil, for quick taking notes and share them, the doodle can take an image as the source or an item that get captured as an image: the doodle and the source can be converted and saved into an image or just take the doodle to do whatever like image processing to extract the text and save it as plain text(for class notes, etc.)

The post Maui Weekly Report 4 appeared first on Nitrux — #YourNextOS.

More in Tux Machines

Today in Techrights

Android Leftovers

LibreOffice 6.4.5 finally for Slackware 14.2

The Document Foundation recently released version 7.0.0 of their Libre Office suite of applications. The packages for Slackware-current can be found in my repository. But the situation for Slackware 14.2 used to be different – I got stuck after LibreOffice 6.2 because the newer source releases (6.3 and onwards) require versions of system software that our stable Slackware 14.2 platform does not offer. From time to time during the last year, when there was time and the build box was not compiling packages, I messed around with the libreoffice.SlackBuild script in futile attempts to compile recent versions of LibreOffice on Slackware 14.2. I failed all the time. Until last week. After I had uploaded the new KDE Plasma5 packages to ‘ktown‘, I had an epiphany and decided to use a new approach. What I did was: question all the historic stuff in the SlackBuild script that got added whenever I needed to work around compilation failures; and accept that the compilation needs newer versions of software than Slackware 14.2 offers. The first statement meant that I disabled patches and variable declarations that messed with compiler and linker; and for the second statement I stuck to a single guideline: the end product, if I were able to compile a package successfully, has to run out of the box on Slackware 14.2 without the need to update any of the core Slackware packages. Read more

Web Browsers: New Tor RC, Firefox/Mozilla Trouble, and Web Browsers Need to Stop

  • New release candidate:

    There's a new alpha release available for download. If you build Tor from source, you can download the source code for from the download page. Packages should be available over the coming weeks, with a new alpha Tor Browser release likely in the coming weeks.

    Remember, this is a release candidate, not a a stable release: you should only run this if you'd like to find and report more bugs than usual.

  • Mozilla is dead

    If Mozilla wants to survive, the management will be fired with unearned compensation, the most important departments will be strengthened, products that nobody ordered will be discontinued and the organization will be limited to its core competence. Browser, email, security, adaptability and the fight for a free Internet. And they work with all their might to ensure that the products will become an integral part of everyday life and all operating systems.

    Three months. That’s all the time they have for a clear signal. After that, users have to make a decision. Unfortunately, it will probably only be something with chromium.

    Poor Internet.

  • Web browsers need to stop

    I call for an immediate and indefinite suspension of the addition of new developer-facing APIs to web browsers. Browser vendors need to start thinking about reducing scope and cutting features. WebUSB, WebBluetooth, WebXR, WebDRM WebMPAA WebBootlicking replacing User-Agent with Vendor-Agent cause let’s be honest with ourselves at this point “Encrypted Media Extensions” — this crap all needs to go. At some point you need to stop adding scope and start focusing on performance, efficiency, reliability, and security5 at the scope you already have.