January 26, 2020

With KDE [slowly] moving to gitlab you may probably find yourselves reviewing more gitlab based patches.

In my opinion the web UI in gitlab is miles better, the fact that it has a "merge this thing" button makes it a game changer.

Now since we are coming from phabricator you have probably used the arc patch DXXX command to download and locally test a patch.

The gitlab web UI has a a link named "You can merge this merge request manually using the command line" that if pressed tells you to

git fetch "git@invent.kde.org:sander/okular.git" "patch-from-kde-bug-415012"
git checkout -b "sander/okular-patch-from-kde-bug-415012" FETCH_HEAD

if you want to locally test https://invent.kde.org/kde/okular/merge_requests/80

That is *horrible*

Enter git mr a very simple script that makes it so that you only have to type

git mr 80

P.S: If you're an archlinux user you can get it from AUR https://aur.archlinux.org/packages/git-mr

P.P.S: Unfortunately it does not support pushing, so if you want to push to that mr you'll have to do some work.

Spurred on by the mattemonster (maths monsters – it is available in English and Swedish) app that I created to make my sons homework a bit more exciting (everything is more exciting on a screen), I’ve decided to create another app. This time it is about basic reading and words. The title is ordmonster – swedish for word monsters. As this is work in progress, you can find it on my github. I’ll try to get the alpha play store listing done this week – but with fosdem coming up, I might run out of time.

The game can be run in two different modes – one word / many pictures, or one picture / many words. You can also select if you want four or nine items of the many category. Turns out nine images or four words seems ok. Right now reading nine words is a bit too tedious.

The first thing I’d like to point out that my fluency in Godot as a tool is starting to show of. I’m more happy with the code structure of ordmonster, and I start to feel that I don’t continuously bump into the sharp edges of Godot, but use the engine as it was meant to be used.

I also learned a couple of things. The first one is the Control::mouse_filter property. The GameButton nodes (the ones showing a word or a picture) consists of a Button with a Label for text and a TextureRect for holding the picture. The TextureRect sits inside a MarginContainer. It turns out the MarginContainer stops all mouse events from passing through, effectively disabling the Button. This took a while to figure out.

The second half has to do with how resource files can be traversed on Android. Resources are embedded into the executable produced by Godot. The words available in the game are stored as the filenames of the images, so that I don’t have to create a table and keep it in sync with the file names. Really smart idea – right? This smart idea cost me quite some time.

First up, it seems like you cannot have non-ASCII characters in asset filenames when building apk files for Android devices. Really annoying. The fix was using English for the filenames and having to add the words to my translation tables, so now I have a table to keep in sync with the filenames anyway.

The fun did not end here. Now it worked on desktop (both Linux and Windows), but my Android builds simply crashed on me. It turns out that the Directory::list_dir_begin and friends do not seem to work on Android, or the assets are not included in the apk. I’ll spend some time figuring out what is up, then I’ll probably file a bug report. In the mean time you can follow the current forum discussion. The code in question, including my Android hack (yet another list – sigh) is shown below:

func _init() -> void:
  if OS.get_name() == "Android":
    # TODO This is a really ugly HACK
    _words = ["ant", "apple", ... , "zebra"]
    var dir = Directory.new()
    if dir.open("res://assets/images/words") == OK:
      var filename = dir.get_next()
      while (filename != ""):
        if filename.ends_with(".png"):
        filename = dir.get_next()

When working with internationalization of Godot apps, I really miss the Qt tools for extracting text needing translation. lrelease/lupdate – please come back, I forgive you and regret all my harsh words!

In other news, next week if fosdem. I’ll be there, so make sure to let me know if you want to meet and greet. Drop a mail at hello -at- e8johan.se, or ping me on twitter or mastodon.

Also, foss-north is approaching. The Call for Paper is still open – closing soon. Make sure to mark the dates March 29-31 in your calendar. Ticket sales will open soon.

Plasma has gained its first user of the new notification inline reply feature in 5.18: Telegram Desktop!

Big thanks to Kai Uwe Broulik for venturing forth to contribute a patch to Telegram that made this possible.

Next up, we have a winner for the Plasma 5.18 wallpaper competition: the elegant and soothing Volna, by Nikita Babin!

Let’s all give a round of applause to Nikita for his incredible contribution which will be seen for years to come!

And one more thing: thanks to Niccolò Venerandi, the kde.org website now has a page showing where you can buy devices with Plasma and KDE apps pre-installed!

This is a great way for people and institutions to buy a complete product featuring the end-to-end KDE software experience without having to manually install an OS or worry about hardware compatibility.

As if that weren’t enough, here’s the usual assortment of new features, bugfixes, and UI improvements:

New Features

Bugfixes & Performance Improvements

User Interface Improvements

How You Can Help

Please test the Plasma 5.18 beta release! You can find out how here. If you find bugs, file them–especially if they are regressions from Plasma 5.17. We want to get as much testing, bug filing, and bugfixing as possible during the one-month beta period so that the official release is as smooth as possible.

More generally, have a look at https://community.kde.org/Get_Involved 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.

Nueva charla a la vista en la capital del Turia. Si ayer sábado se realizó la «Introducción a la criptografía»dentro de los encuentros»Hablemos» de GNU/Linux Valencia, en esta ocasión me complace compartir con vosotros el «Taller gratuito de Thunderbird», el magnífico gestor cliente de correo electrónico, de «feed», chats, calendarios y tareas, de código abierto, gratuito y fácil de utilizar a cargo de las compañeras de Critical Switch.

Taller gratuito de Thunderbird, charla Hablemos de GNU/Linux Valencia

Mi mesa de juegos Maker, charla de Noviembre de GNU/Linux ValenciaDe nuevo me complace compartir con vosotros los eventos de un grupo de personas que en Valencia está impulsado el Software Libre gracias a sus reuniones.

Se trata un nuevo encuentro organizado del grupo de GNU/Linux Valencia que el próximo 8 de febrero de 2020 realizarán otro encuentro ligado a la serie de charlas llamadas «Hablemos»que iniciaron el mes de mayo del 2019.

En esta ocasión nos encontraremos una vez más en Las Naves y el tema escogido es un Taller gratuito de Thunderbird a cargo de las compañeras de Critical Switch.

De esta forma nos proponen realizar un taller que seguirá el siguiente guión:

  1. Descarga e instalación de Thunderbird
  2. Explicación básica de su funcionamiento
  3. ¿Qué son los perfiles?
  4. Asistente de configuración de cuentas correo
  5. ¿Qué es la libreta de direcciones?
  6. Extensiones para Thunderbird
    • Enigmail: OpenPGP para cifrar y autenticar correos
    • Lightning: Calendario y planificador de tareas integrado
    • Algunas otras extensiones y complementos de interés.
  7. Otras funcionalidades

Taller gratuito de Thunderbird

Aprovecho para recordar que desde hace unos meses, los chicos de GNU/Linux Valencia ya tienen su menú propio en el blog, con lo que seguir sus eventos en esta humilde bitácora será más fácil que nunca, y así podréis comprobar su alto nivel de actividades que realizan que destacan por su variedad.

Más información: GNU/Linux Valencia


January 25, 2020

I spent a week in Delhi on a trip to be part of conf.kde.org. During the event I twitted a whole bunch, for each of the talks, but here’s a bit of a (short) write-up. First of several, because I want to get the general “I traveled” out of the way, and focus on other people’s work later.

Part of the team

The conference was organized by KDE India, with Piyush and Bhushan acting as MCs. Here’s part of the team, with Rituka, Medha, Bhushan and Shantanu, as well as Arjen who was one of the other speakers. We were hosted at the Maharaja Agrasen Institute of Technology, whom I’d like to thank for having us and granting us an audience with the Director. The conference started with 110 attendees on friday, and the weekend had around 40 people in the benches.

One talk announcement

I gave four talks (Calamares, Transifex, Frameworks, and more Frameworks) and also some impromptu stuff during a technical break (about Rick Astley). I’ll put them up on my site eventually, when I figure out how to do that effectively (they’re generated out of Markdown). There might be pictures of those talks; I took pictures of most of the other talks.

Other talks were about translation, and Open Source migrations, and Plasma deployments, and GCompris, and Plasma Mobule, and .. well, and lots of stuff. I really enjoyed hearing from all the students and other KDE contributors how they work. New student attendees were treated to a show of “here’s how we work, this is how welcome you are”, which I think is a good way to start.

At the door

For years, Kate had a very generic icon. Unlike most other editors, that have very distinctive ones, we went with an icon that represented the use case of the program but provided no branding.

In 2014, we tried to improve our branding by introducing a mascot - Kate the Woodpecker. Thought we used that in some places, like on the web site and in the about dialog, overall, the only thing most people did see was the generic icon (that even differs a lot between different icon themes).

I was not very happy with this and reached out last year to Tyson Tan to improve on this, given he already provided our mascot design. I wanted to have some distinct icon that matches a bit the idea we had with the mascot.

After some iterations this process has lead to a new icon for our lovely text editor as can be seen below.

Tyson “gifted” this artwork to our project, this means we can license it how we see fit.

Therefore I consider it at the moment licensed like the most parts of kate.git or ktexteditor.git, as LGPLv2+ (or, alternatively, to be able to share it without issues e.g. on Wikipedia and Co., as CC BY-SA 4.0).

But please, don’t start using that icon for other applications ;=) Let’s be friendly.

I started to spread the use of the new icon to the about dialogs of both Kate and KatePart and as application icon for Kate. Beside this, I tried to update as many of our web sites as possible with the new icon.

If you spread the word about Kate, please consider to use the new icon. If you contribute/host some web site that shows the old artwork, consider to update to the new one, we have a nicely scalable version here.

Thanks again to Tyson Tan for working on this in his spare time!

And thanks to all people contributing to and using Kate, without them, we wouldn’t need any icon at all :-) I hope you enjoy our new artwork.

Charlas, eventos, anuncios… las Comunidad del Software Libre no paran y lamentablemente se me escapan decenas de noticias que creo que son interesantes dentro del este inmenso ecosistema. Como por ejemplo que Opensouthcode amplía el plazo para presentar charlas, que finalizó ayer pero que como suele ser costumbre se concede una segunda oportunidad para los despistados.

Opensouthcode amplía el plazo para presentar charlas

Opensouthcode amplia el plazo para presentar charlasNo es que ahora me interese Opensouthcode porque se vaya a celebrar allí Akademy-es 2020. En anteriores ediciones ya apareció dicho evento por el blog, pero menos de lo que me gustaría… uno no llega a todo (¿alguien se apunta a ser colaborador para promocionar eventos?).

No obstante, más vale tarde que nunca y es que se ha anunciado que Opensouthcode 2020 amplía el plazo de presentación de charlas. Ahora tienes hasta el 2 de febrero de 2020 para presentar tu propuesta.

Los temas son diversos:

  • Sistemas operativos
  • Desarrollo software
  • Seguridad
  • Aspectos legales
  • Escritorio
  • Educación

y en general cualquier iniciativa que promueva las tecnologías libres.

Se realizará un especial énfasis al contenido digital producido con tecnologías abiertas.

¿Qué es Opensouthcode?

Tal y como ellos mismos se describen «Opensouthcode es un evento para promocionar y dar a conocer las tecnologías abiertas: software/hardware libre y opensource. El evento es gratuito. »

Este evento se celebra en Málaga, y en la edición de este año será el 24 y 25 de abril en el Polo Digital Málaga, y con esta será su quinta edición.

Opensouthcode destaca por la variedad de ponencias ya que suele disponer de 3 salas para ponencias, lo que le proporciona una gran diversidad de temas y garantiza que tiene cabida todo tipo de público.

En anteriores ediciones la Comunidad KDE tuvo presencia pero este 2020 será muy especial ya que simultáneamente se va a celebrar Akademy-es 2020 con el objetivo de crear sinergias que beneficie ambos encuentros.


January 24, 2020

Por segunda vez la la Comunidad KDE ha organizado un concurso para elegir el próximo fondo de pantalla de la nueva versión del entorno de escritorio de la Comunidad KDE. Volna será el próximo fondo de pantalla de Plasma 5.18, un creación de Nikita Babin que ha sido seleccionado por el jurado y que será recompensado con este granel honor y con un TUXEDO Infinity Book 14 del ensamblador de ordenadores Tuxedo.

Volna será el próximo fondo de pantalla de Plasma 5.18

Ya tengo un nueva imagen y una nueva historia para añadir al listado de fondos de pantalla oficiales de Plasma, la cual deberé actualizar porque la última ya se ha quedado desfasada.

Y en esta ocasión, como comentaba en la introducción, la selección del mismo se ha realizado mediante concurso público donde han participado un numeroso grupo de artistas y donde los miembros de KVDG han tenido la complicada tarea de elegir al ganador.

No lo han tenido fácil, como así lo han confesado en el anuncio del ganador, pero al final solo podía quedar uno. De esta formaVolna, de Nikita Babin se ha llevado el honor y su creación, que sigue con los motivos geométricos pero que en esta ocasión representando un paisaje de playa y mar poco profundo. será utilizada por defecto por el escritorio Plasma 5.18 que será liberado el próximo 11 de febrero.

Volna será el próximo fondo de pantalla de Plasma 5.18

Lo cierto es que en un principio no me ha gustdo mucho, pero una vez puesto en mi monitor el diseño ha empezado a gustarme. No obstante, os animo a admirara los otros finalistas que son (sin ningún orden en particular): Milky Way, Breach/Crystaline, Iridescent Shell, The Grand Canyon y Vera. Cada uno de ellos recibirá un paquete que contiene una gorra de béisbol de la marca KDE, un Tux de felpa, pegatinas de KDE, una taza de café de vidrio templado y más detalles


No puedo finalizar la entrada sin recordar que no solo honor se ha llevado Santiago, también se lleva a su casa un TUXEDO Infinity Book 14 con procesador Intel i7 y con una batería de 12 horas de duración.


Más información: KDE.NEWS

The main workstation running Fedora 31 now, devoid of any trace of python2, I had to either spin up a virtual machine (which I happily did in the past using qemu and kvm [no libvirt or GNOME Boxes]) or get the hands dirty on containers this time to develop on Odoo [1] version 10 which depends on python2. Faced with the challenge^Wopprotunity, I started to learn to use containers.

Never tried to use docker, even though I am familiar with its technology and at times I wanted to try and have hands on experience on the technology. Fast forward, podman and buildah came along with the possibility to run root-less containers and they’re available in Fedora.


Install and setup podman, optionally buildah. Consult documentation at Red Hat developer blog [2] posts [3].

$ su -c "dnf install -y podman buildah
#Make sure your user is present in subuid and subgid
$ su -c "usermod --add-subuids 10000-75535 $(whoami); \
  usermod --add-subgids 10000-75535 $(whoami)"
#Logout and login back for the normal user to take effect.

Setup and run postgresql using podman. The documentation [4] on docker hub and at Red Hat [5] will help, also Dan Walsh’s post [6]. You’d want persistent storage for database and the application.

#Create a persistent storage location for DB
$ su -c "mkdir -p /var/container/pgsql10/data"
#Make sure to give ownership of the directory to 'postgres' user
#in _container_. In host system, id of 'postgres' user is '26',
#which maps to id '10025' in container. 
$ su -c "chown -R 10025:10025 -R !$"  # directory created in previous step
#As normal user
$ podman run -d --name pg10 -e POSTGRESQL_USER=odoo \
  -e POSTGRESQL_PASSWORD=odoopassword -e POSTGRESQL_ADMIN_PASSWORD=postgrespassword \
  -e POSTGRESQL_DATABASE=postgres -p 9432:5432 \
  -v /var/container/pgsql10/data:/var/lib/pgsql/data \
  -m=1g rhscl/postgresql-10-rhel7
#Check logs
$ podman logs -f pg10
#Connect the database and grant privileges to 'odoo' user
$ psql -U postgres -h -p 9342 -d postgres

These steps demand some comments. To setup persistent storage for database, create a directory and give ownership of that directory to the user in container (refer [6] for details) . The user id for chown should be the mapped id of user within the container. For example, if the id of postgres user is 25 in host system and the id of same user in container will usually be 10025.

Next you can pull the postgresql docker image and run it. The environment variables using -e option are passed into the container. The -p option creates a port mapping between host and container. The -v option provides volume (persistent storage) mapping between host directory and container directory. The -m option provides memory restrictions required for postgres to auto-tune. If everything goes well, container named pg10 is created and run as daemon process. Check the status using podman ps -a or logs using podman logs -f pg10.

We are running postgresql as user odoo and this user should be able to create databases. Login to the database using super user postgres and the password specified in POSTGRESQL_ADMIN_PASSWORD, connecting to the IP address of host machine (localhost doesn’t work) on host port 9432. Then grant CREATEDB privilege to the odoo user.

Once postgresql is running successfully, let us create another container to run odoo. We also want odoo container to use the database server running in pg10 container, connected using same POSTGRESQL_USER user. There are couple of ways to connect to another container — one is using host port mapping and the other is using pod, see [7] for details. I chose the first option. Before running the container, create volume mapping for configuration and addons directories.

$ mkdir -p $HOME/odoo10_conf
$ cat > $HOME/odoo10_conf/odoo.conf << EOF 
; podman postgresql communication using port mapping
db_host =
db_port = 9432
db_user = odoo
db_password = odoopassword
addons_path = /mnt/extra-addons
data_dir = /var/lib/odoo
#Create and run odoo container
$ podman run -d -v $HOME/odoo10_conf:/etc/odoo \
  -v /opt/odoo/addons/odoo10:/mnt/extra-addons -p 9010:8069 \
  --name odoo10  odoo:10

We need to be able to control and pass the Odoo configuration from host system. Create a directory and place the configuration file in there and map it to /etc/odoo/odoo.conf in container. Similarly, you would do addons development in your host machine, so map the addons directory which is expected at /mnt/extra-addons by the container. The host port 9010 is mapped to container port 8069 used by Odoo.

That’s it.

Connect to Odoo by going to localhost:9010 and build your next application.

Oh — you can stop the container using podman stop pg10 and start using podman start odoo10 etc.


  1. Odoo, https://odoo.com/
  2. Red Hat developer blog, Introduction to podman, https://developers.redhat.com/blog/2018/08/29/intro-to-podman/
  3. Red Hat developer blog, Podman and buildah for docker users, https://developers.redhat.com/blog/2019/02/21/podman-and-buildah-for-docker-users/
  4. Docker hub, PosgreSQL 10 on CentOS 7, https://hub.docker.com/r/centos/postgresql-10-centos7
  5. Red Hat documentation, Software collections docker images — PostgreSQL, https://access.redhat.com/documentation/en-us/red_hat_software_collections/3/html/using_red_hat_software_collections_container_images/database-images#postgresql
  6. Dan Walsh, Does root-less podman make sense? https://www.redhat.com/sysadmin/rootless-podman-makes-sense
  7. Red Hat, Configuring container networking with podman, https://www.redhat.com/sysadmin/container-networking-podman

Volna by Nikita Babin wins KDE's 2nd Wallpaper contest. Volna will be upcoming Plasma 5.18's default wallpaper.

Congratulations to Nikita for the win. Nikita will receive the Grand prize, a TUXEDO Infinity Book 14 featuring an i7 Intel processor and an all-day battery with a 12-hours capacity.

We would like to extend our congratulations also to the artists that made the finals, specifically (and in no particular order): metalbender and the spacey Milky Way wallpaper; CaceK, who created the dramatic Breach / Crystaline; Luwx submitted the cool looking Iridescent Shell; The Grand Canyon was designed by kevintee; and the winner of the Plasma 5.16 wallpaper competition, Santiago Cezar, also made it to the finals with Vera. They will each receive a package containing a KDE-branded baseball cap, a plush Tux, KDE stickers, a frozen glass coffee mug and more goodies.

We saw many high-quality entries in this contest and it has been difficult to select six finalists and even harder to choose a winner. We are incredibly proud of the great community that decided to contribute in making Plasma a great desktop and we hope that the artists who joined the competition, even if they didn't win, will become regular contributors to the Visual Design Group and help make Plasma even better.

The 5.18 wallpaper contest ends today, but if you still want to try and win some amazing prizes, don't forget about the other two contests that are currently ongoing: the Plasma Video Contest, the winner of which will receive a PC with a powerful Intel core i7, 16GB of RAM, 250GB NVMe SSD, 2TB HDD and an Nvidia GTX1050Ti video card as the prize; and the Applications Video Contest, which has a PC featuring an Intel core i3, 16GB of RAM and 250GB SSD as the prize.

We would also like to thank TUXEDO for sponsoring the competition and for donating all the prizes.

KDE Connect Website

View the Website under work here.

Week 2 Overview

Today marks the end of my second week of Season of KDE. This week had been great for me, I came in contact with many teams in KDE and got to work with many new people who are quite helpful and encouraging. Variety of changes came on the website which are linked above with links to commits.

The Website can be viewed here.

You can check out my proposal here. The repository that has the KDE Jekyll themed site is here.

This week started off by discussion on the Web Telegram chat on how the website behaved weird on devices with large screen and how some users and even my mentor Carl Schwan felt it a bit weird. So I went onto make the website more important. I decided to try the website out on all types of screen provided by the developer tools in Firefox and Chrome and also checked for Portrait and Landscape modes of all those devices. I can assure you that the website looks as it is intended on all these devices. So it should work fine on relatable devices. All this work was done with CSS. Below are images of the website on large screen and the developer tools. OnLargeScreen DevTools Now the user will be able to see the slides as a whole on most of the devices in both orientations.

Then I went off to get myself a Developer account on recommendation from Carl Schwan so that I can store the assets and files for the video on KDE Connect Website on share.kde.org in the Promo Groups Folder. I came in contact with some great people in Promo Group this week and really like what they do and effort they put in. Would love to help the Promo Group and work with them in the future. I am planning to be a active participant there too.

The assets, video files and Kdenlive Project File for the promo video is on share.kde.org

After a lot of discussion in KDE Web Group on the consistency of the Get-Involved Page and its button a variety of changes were made and everyone seems to be satisfied with the current look of it. Check it out. We actually came to the conclusion to use KDE Blue. There is some more work left there like updating CSS to make the edges sharp etc as it goes well with the rest of the Website.

This is how it looks now. Get-Involved

With the help of the Promo Team and especially Paul from Promo, I was able to host my video on Peertube channel of KDE Community and update the website to use that video.

This is the video on peertube.

The rest of the week was filled with fixing css for get-involved page, changing the icon for User Base as the old one didn’t fit in well. The new icon is shown below.


The home page was also updated to alternating Dark and White Cards since it is aesthatically pleasing.

Waiting for an awesome next week too. Don’t forget to checkout the website. So with that I conclude this post. See you in the next one. “Happy KDEing!!”

January 22, 2020

KDevelop 5.5 beta 1 released

We are happy to announce the release of KDevelop 5.5 Beta 1!

5.5 as a new feature version of KDevelop will bring half a year of small improvements to features across the application. Full details will be given in the announcement of the KDevelop 5.5.0 release, which is currently scheduled for in less than 2 weeks.


You can find the Linux AppImage (learn about AppImage) here: KDevelop 5.5 beta 1 AppImage (64-bit) (verify by: GPG signature, keys linked on Download page)
Download the file and make it executable (chmod +x KDevelop-5.4.80-x86_64.AppImage), then run it (./KDevelop-5.4.80-x86_64.AppImage).

The source code can be found here: KDevelop 5.5 beta 1 source code

Windows installers are currently not offered, we are looking for someone interested to take care of that.

kossebau Wed, 2020/01/22 - 22:51

January 21, 2020

Plasma 5.18 LTS Beta has been released, which brings many exciting new features to a computer near you, especially if you’re upgrading from our previous LTS release, Plasma 5.12. Of course for us developers this now means that a stable git branch has been created and we can work on new stuff on master to eventually become Plasma 5.19, scheduled for an early June 2020 release. This blog post is less about KDE code, though.

Plasma notification popup with a chat message and a text field to send a reply from inside the popupNo need to rub your eyes: Quick reply with Telegram on Plasma 5.18!

One of the things I enjoy most about working in open source is venturing out into other projects, doing things that are unfamiliar, and the challenge of finding my way around foreign code bases. You know, sometimes you’ve just gotta do things yourself, no matter what part of the stack they’re in, if you want your overall vision to become a reality.

With Plasma 5.18 I finally implemented quick reply in notifications. Something I’ve been wanting to have for many years. But what’s a feature without an application using it? Since Telegram appears to be quite popular in our community and its Linux desktop client hosted on GitHub, I decided to give it a go.

Telegram’s notification implementation had recently been ported from libnotify to use plain DBus calls instead, which made adding support for quick reply really straightforward. I browsed their git repository and found the necessary infrastructure for handling notification replies was already in place for their other supported platforms. The patch itself took me basically a minute to write (which means there’s no excuse for you not adding this feature to your messenger!) and my pull request was merged after only minor tweaks.

Once released, I’m sure you’ll enjoy this added productivity when having to deal with lots of chat rooms and conversations! Many thanks ilya-fedin for helping me build and test my patch, which unfortunately turned out a lot more difficult than I had hoped.

OBS Do not disturb

Plasma features a “do not disturb” mode where notifications are suppressed so you can focus on your current task or keep others from seeing private messages. The upcoming Plasma 5.18 release also gained a configurable global shortcut for quickly enabling this mode any time. An idea I had a few weeks ago was to write a plug-in for Open Broadcaster Software Studio to automatically inhibit notifications while streaming or recording – so I did just that.

Plasma notification center stating "Do not disturb while OBS is active (recording in progress)"Quiet please, recording in progress!

It uses the OBS Studio Frontend API for detecting streaming/recording start and stop events and then places a notification inhibition via DBus. This was a good exercise in build systems for me as I wrote the, admittedly tiny, CMakeLists.txt from scratch without any of the ECM convenience you normally get when working on a KDE project. Moreover, to keep dependencies super minimal by using libdbus as opposed to Qt’s powerful DBus wrapper was quite interesting. I tried to save myself from any tedious C memory management by wrapping the objects in smart pointers with custom deleters, of course.

Some more notification things

Now that quick reply API found its first user, I made some minor tweaks to how it behaved: if the only visible action in the notification would by a lonely “Reply” button, the text field is shown right away instead. This also provides a visual cue that a reply is possible from within the popup.

An application can already provide a “default” action which is invoked when the notification bubble itself is clicked. For applications that don’t, for instance Thunderbird, there is now a fallback mechanism in place which, when clicked, at least brings the application window to the front and dismisses the notification. There’s also a new “Other Applications” category in settings so you can again have shell scripts spawn notifications that remain in history.

On my computer I have applications I daily need for work, such as web browser, web radio, IRC client, IDE, etc in my autostart. With all the startup performance work we did in the past months, my session starts so fast that Chrome is launched before Plasma’s notification service is fully up and running. This causes Chrome to fall back to its custom notification implementation until restarted. To fix this I submitted a patch to have it also check for DBus-activatable services before assuming there’s no notification service available.

I did some icons!

Finally, over the holidays I toyed around with the Inkscape vector graphics editor to create some Breeze icons I was sorely missing. I’m a huge fan of KDE Itinerary, our digital travel assistant. One of the many things it supports for managing boarding passes, train tickets, and exhibition passes is Apple’s .pkpass file format. While you typically get them in your Email client and import them directly, I still felt a proper file icon was missing.

Four file icons, different colored paper sheets with an icon in the middle: Apple Wallet (skyblue with a stylized wallet), Audacity (dark blue with audacity logo (headphones with lightning between them)), Windows link (LNK) file (dark gray with stylized chainlink), XHTML (purple with a globe)Four new Breeze mime type icons

Another set of files I regularly encountered without an icon were Audacity projects. Thanks to Carson Black / jan Pontaoski for finalizing a draft icon I created for that purpose. I also noticed that XHTML files looked more like XML than HTML. While generally icons that differ only in color are bad for accessibility, in this case I changed it to a purple HTML icon to keep the XML connection (Breeze XML icon is purple) but put the main emphasis on the globe, i.e. it’s basically still a website. I also changed the file icon for Windows .lnk files to follow Breeze’s general paradigm for links.

To conclude, why not start the new year doing something you’ve never done before? Go start something from scratch, go make some artwork, go fix a bug in an application you use all the time but never contributed to! :-)

So, today I got finally so tired of navigating (or explicitly stepping over) all the internal functions in gdb (you know, all the inline functions from STL containers, from Boost, from this pointer wrapper class, that string class) that I finally googled 'gdb skip system functions'. And guess what, it's been there since gdb 7.12, from 3 years ago, and it's almost trivial, just adding something like this to ~/.gdbinit:

skip -gfi /usr/include/*
skip -gfi /usr/include/*/*
skip -gfi /usr/include/*/*/*
skip -gfi /usr/include/*/*/*/*

 I feel so stu^H^H^Hproud for catching up only 3 years late.

We are excited to announce that KDE e.V. has received a donation of 880,000 HNS coins (roughly 79,000 euros) from the Handshake Foundation.

This is the not the first time Handshake has made a substantial donation to the KDE Community. Back in 2018 Handshake donated approximately USD 300,000 to KDE which was used to finance projects and fund activities.

"The Handshake Naming System is a child of the Open Source Community", says Andrew Lee from the Handshake Foundation. "Just like Handshake, KDE has championed privacy and freedom since the beginning and has paved the way forward in creating usable tools made for the masses.

"Personally, I've used KDE software since the early 2000s, and I've seen it grow and flourish. I think, many people today would be surprised to hear that Apple Safari, for example, was based originally on Konqueror, a web browser created by the KDE Community. The Handshake Naming System is proud to be able to make a donation to the KDE team. It is our way of showing appreciation for KDE, as much of the development in the Open Source world would not have been possible without it."

KDE would like to thank the Handshake Foundation for their continued generosity and the support they offer to FLOSS communities across the spectrum. This contribution will help KDE continue with its commitment to create Free Software for everyone, finance events and sponsor community members.

You can help KDE too! All you need to do is join the Community and be part of our mission to help people maintain their privacy and their control over their digital lives with Free Software.
Photo by Cytonn Photography on Unsplash.

With everyone getting back into work, we have managed to control the number of bugs. There are 2 fewer bugs than what I reported last time. I know it is still not a lot, but with Dmitry not available for most of the time and team having to divide its time between the resource rewrite & bug fixing, it is pretty good that the number is decreasing.

Have you ever noticed code highlighting disappearing in Qt Creator for some projects, without any apparent reason?

Can’t get Ctrl+Click to work on any class name or function name anymore?

Maybe you have ignored it at first, got used to it, and decided it’s just one of those things that just “happen sometimes”; or maybe you have tried opening other projects and seen everything was fine there.

Screenshots of broken and working syntax highlighting in Qt Creator

Broken vs working syntax highlighting in Qt Creator

My colleagues and I have been there ourselves, we know how puzzling this can be. Luckily enough, the issue is as elusive as it’s easy to fix.

Check your project and see if it falls into one of the following two scenarios:

1. You are using spaces in a compiler option

Some of Microsoft’s “cl” C++ compiler options have a syntax that allows for spaces between the option and its associated value, that is usually a directory or a file path. This is the case for other compilers too, think about -isystem /path/to/include/dir in GCC or Clang.

However, these parameters aren’t always well processed by Qt Creator, specifically when using the MSVC compiler; the rare examples where blanks are accepted work fine for GCC and Clang.

The only solution for this as I’m writing this post is to remove such spaces from compiler arguments.

So, for instance, if you are using /FI C:\force\included\file.h then you need to change it to /FIC:\force\included\file.h or even better /FI"C:\force\included\file.h" to avoid issues with paths containing spaces.

Note also that, although the official documentation doesn’t explicitly state it, some compiler options such as /wd xxxx and /we xxxx work fine even with a space between the option name and the compiler warning code. However, Qt Creator’s Clang code model will break also in this case.

2. You are using some “exotic” MSVC flags

Sometimes, even if no spaces are around, code highlighting may still be broken on your project.

This can happen if you’re using some options that aren’t currently handled by Qt Creator, but will be starting from Qt Creator 4.11.

One example above all is the set of experimental options such as /experimental:external and its companion options /external:I and /external:W.

The main reason why this is happening is that the option is passed to Clang to build the code model of the project being developed.Clang doesn’t support argument syntax starting with a forward slash (/), and will interpret such options as file names instead. These “files” won’t be found and clang will consequently fail to parse the codebase.

Note that some compiler options are already being ignored by Qt Creator itself, and therefore you don’t see the issue if you use for instance /wdxxxx, which is a valid cl option but not a Clang one. This is however not the case for the options mentioned above.

There are two ways to fix this:

  • Replace forward slash (/) with a dash (-) when passing the option to the compiler: this way Clang will correctly interpret it as a compiler option and if it doesn’t know it it will just ignore that option.
  • Add any option breaking your code model to the QTC_CLANG_CMD_OPTIONS_BLACKLIST environment variable. This way bad options won’t be forwarded to Clang at all and your code highlighting will be ok. For instance QTC_CLANG_CMD_OPTIONS_BLACKLIST=/experimental:external;/external:I;/external:W

You can see how the fixes work in real qmake and CMake projects in the screenshots below:

Screenshots of a qmake file which breaks syntax highlighting and one who doesn't

Bad vs good qmake file

Screenshots of a CMake file which breaks syntax highlighting and one who doesn't

Bad vs good CMake file


Did you find this post useful for a project you are working on? Have you ever had to deal with elusive bugs like this one? Let us know in the comments below!

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 Fix Qt Creator code highlighting on Windows/MSVC projects appeared first on KDAB.

We continue working on the plotting capabilities of LabPlot. In the next release we will be adding two new worksheet objects to provide more flexibility and features to create attractive looking visualizations. In this short blog post we want to report on this recent development.

Reference Line

Reference lines are placed on the plot to attract the attention to certain values and patterns in the visualized data. The reference lines can have both orientations, horizontal and vertical, to highlight x- and y-values. The lines can be positioned either by dragging with the mouse or, for a more precise positioning, by entering the exact position value in the properties widget of the reference line.

Image Element

The image element allows to add an image to the plot or to the worksheet. Several properties of the image like the size, position, the style of the border line and the opacity of the image can be adjusted to get the desired result.


The worksheet below demonstrates the usage of these two new objects. It shows some statistics about the amount of debris created and left floating in space since 1961:

Space Debris

The largest contributor to space debris is the breakup of satellites. The first plot shows the number of breakups starting with first occurring in 1961 and then all of the rest until 2018.

The next two plots show the density distribution of objects for near Earth altitudes as well as for the altitudes around the geosynchronous orbit.

The two red reference lines on the plot for the spatial density of objects for near Earth altitudes are used to highlight two peaks in the density distributions. These two peaks correspond to the accidental collision of Iridium 33 and Kosmos 2251 spacecrafts in 2009 and to the anti-satellite missile test conducted by China in 2007. These two events caused a substantial amount of debris at the corresponding altitudes.

The image elements besides the plots show the graphical distributions of the biggest trackable objects around the Earth.

The data is taken from History of On-Orbit Satellite Fragmentations provided by the NASA Orbital Debris Program Office (ODPO), the images are taken from ODPO’s gallery.

Wondering how the data for the spacial density was extracted from the PDF document provided by ODPO? Check out the the release announcement of 2.7 and the video demoing the recent improvements in LabPlot’s data picker – our tool to digitize the data values on images:

January 20, 2020

The last time I blogged about the Titler, I promised that the next update would be when we have some sort of a backend ready – and I’m happy to announce now that now we have some sort of a backend ready!

The QML MLT Producer


Find my MLT fork here 

Let us try to run it! Starting with something simple – take a sample QML file: test.qml

With the content –

import QtQuick 2.0

Item {
  Rectangle {
    id: rectangle
    y: 0
    width: 155
    height: 160
    color: "#5cd037"

After you have done building, run: melt qml:test.qml , we get:

rendered QML frame

and voila!

Which we can confirm (from running “qmlscene” on command line or from the Qt Designer Studio) which looks similar –

qmlscene rendered QML

And we can have images with fancier text and images, like this one I recently tried creating –

complicated QML frame

Although it’s not at animations yet, this works well enough for our initial testing.

A brief explanation

qml_wrapper files handle the generation of the rendered images.
In order to render images, this file makes use of QmlRenderer which has endpoints to render a QML file into a given QImage.

producer_qml.cpp is the main producer file.

When melt qml:test.qml is run, the registered producer (in this case, “qml”) is queried and initialised, and then a QApplication window with the rendered frames is launched and played ( which is what we see )

I refactored a lot of code in the QmlRenderer library comparing it with the code in the last blog post, for the convenience of the producer. For starters, only one method needs to be called for rendering now – render(&image). The constructor takes cares of the input file and other params (height, width, format) are fed in by the &image param.

What’s Next?

Test this producer in Kdenlive and see if we can play “qml” files in Kdenlive. So far, there are some issues with mishandling multiple OpenGL contexts and threading, which we are looking into right now. And if that goes well, we can then start worrying about the interface. We will let you know how it goes!

Will we have the new Titler for 20.04?

We don’t know yet. If the producer integration goes without major hiccups, 20.04 might or might not be a feasible deadline but we hope for the best.

Chromecast devices in the sound settings

This morning, while browsing the web, I wanted to listen to a Podcast from my laptop, and thought “Hey, can I stream this to our stereo?”. As it turns out, that’s rather easy to achieve, so I thought I’d share it here.
The media devices in our home are connected using Chromecasts, which are small dongles that allow playing media on them, meaning you can play for example a video from your phone on the projector in the living room: very convenient.

I didn’t know if that was easily achievable with audio from my Plasma/Linux laptop and a quick search turned up “pulseaudio-dlna” which adds Chromecast devices on the local networks as output devices.

On my KDE Neon laptop, it’s as easy as installing pulseaudio-dlna from the standard repositories and then starting “pulseaudio-dlna” from the commandline. Then, I can pick an output device from the panel popup and the audio stream changed to my stereo.

$ sudo apt install pulseaudio-dlna
$ sudo pulseaudio-dlna
Added the device "Stereo (Chromecast)".

The KMyMoney development team today announces the immediate availability of version 5.0.8 of its open source Personal Finance Manager.

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

Besides the software itself, the KMyMoney website was refurbished and now has a more modern clean look. Thanks to all who were involved in the process.

The details

Here is the list of the bugs which have been fixed. A list of all changes between v5.0.7 and v5.0.8 can be found in the ChangeLog.

  • 326212 Editing split memo when there is only one split does not update the record memo
  • 361865 In German, the dialog uses “share” if it is actually shares and/or bonds (i.e. securities).
  • 395052 No documentation available for csv exporter
  • 398982 Opening Balances in forecast are wrong
  • 399364 SKR03 account template does not contain a flag for an opening balance account
  • 406403 Tags within Split transaction not reporting correctly
  • 411015 Investment doesn’t show correct value after switching investments
  • 412429 No display of transactions in the tags view when tags are specified in a split
  • 413325 Problem with Web addresses at financial institutions
  • 413555 Reconciliation of Credit Card
  • 414333 Investments – Edit and New investments – Unable to display online source list for Finance::Quote
  • 414932 Incorrect “opening balance” in daily and weekly “Investment Worth Graph”
  • 415257 Changing status of an investment transaction clears bank ID
  • 415409 False detection of a matching investment cash dividend transaction
  • 415548 The character < as part of a matched transaction which was imported causes load to fail
  • 415668 Networth by month shows incorrect values for investment
  • 415793 Creating multiple tags in a row does not correctly adjust the name
  • 416052 AppImage is missing the account/category templates
  • 416269 Changed name of loan account is not saved
  • 416274 Investment reports show incorrect annualized return percentage
  • 416410 Add a recuring transaction – loss of input if we forget the source account

Here is the list of the enhancements which have been added:

  • 415411 No support for check forms with split protocol

January 19, 2020

Hello all!

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.

This time I’ll be explaining how the localization workflow looks like for contributing to KDE; this should also immediately enable you to translate your favorite third-party Plasma widgets (if the project supports it), and generally allow you to translate any PO file with your preferred localization software. I will also explain a bit about CAT tools in general and how professional translation is done since it’s my field of expertise, but that will serve only as optional reading for those interested.

Don’t get scared with how lengthy this blog post is: by the end of this text, you should be perfectly fine to start working with localization, that’s the point. The localization process is quite straightforward, I simply put a lot of explanations in-between so you don’t have many (or better yet, any!) doubts about how stuff works.

This article should be timely in that a new Plasma version, 5.18, will be released in about two weeks. Contributions to the stable branch would be quite appreciated in the following days!

If you’re already acquainted with git, svn, Phabricator and KDE Identity or if you would simply like to skip the explanations, understand the CAT tool and go to the how-tos, click here.

If you think you already know enough of translation software interfaces and you don’t need to get acquainted with the default KDE localization tool, Lokalize, you can skip the explanation about its interface and work immediately by clicking here.

The KDE localization infrastructure

Currently, KDE’s infrastructure is divided between several places, which is something I particularly like.

We have bugs.kde.org for reporting bugs, phabricator.kde.org for discussion and patch reviewing, identity.kde.org for centralized account management, cgit.kde.org and invent.kde.org for active git repositories, github.com/KDE for a git mirror, etc.

To understand the KDE infrastructure, first we must understand a tiny bit about version control software.

Git is the most popular version control software, or so I’ve heard. Subversion, or SVN, is also version control software, and both serve as a means to store code and data in such a way that we end up having multiple versions of the data stored, meaning three things: one, if a specific version is problematic, it can be reverted, two, there’s always a backup/record of what was done, and three, multiple people can suggest changes for a new version of the software.

These suggestions are called commits and, if you’re a developer, such commits would go through a review as patches to the code. For translators, however, it works a bit differently: if you do not have the rights to send translation commits directly, it must be sent to either the mailing list or to a translator with commit rights through any means, such as Telegram, IRC or Matrix. If you do have such rights, you are an experienced enough translator who is also trusted by your more experienced peers. With this, your submissions will be available for everyone to see, and your task will be easier and faster.

Some websites provide a frontend for version control software, such as Github or Gitlab, whose names clearly indicate they handle git. KDE intends to migrate code handling to Gitlab, but SVN will still be used for translation and some other stuff.

Both repositories can be seen in Phabricator, which means any translation commit uploaded to git or SVN will show up there. Even if you don’t submit the commit yourself, the translator who submits it for you will be able to assign (and should assign) your name as the author of that commit.

You can see the SVN repository on Phabricator here, it’s just one of many repositories hosted by KDE: https://phabricator.kde.org/source/svn/.

In addition to Phabricator, another place that is relevant to translators is Bugzilla, which serves to report bugs. There is a specific section for managing translation issues, namely the i18n product: https://bugs.kde.org/describecomponents.cgi?product=i18n.

And yes, translation issues are also reportable bugs, as weird as that might sound for someone who is not acquainted with bug reporting. If a specific string of text (a segment, sentence or any amount of text in a sentence) is not in the target language of a given application or if it is incorrectly translated, you can report it to the localization team responsible for working on the translations into your mother language.

The reason the Bugzilla product is called i18n is because, long time ago, there was some confusion pertaining to how internationalization (i18n) and localization (l10n) were supposed to be handled. It is a complicated matter, one which I won’t adventure within in fact, but to simplify things I prefer to use the definition provided by Qt:

The internationalization and localization of an application are the processes of adapting the application to different languages, regional differences and technical requirements of a target market. Internationalization means designing a software application so that it can be adapted to various languages and regions without engineering changes. Localization means adapting internationalized software for a specific region or language by adding locale-specific components (such as date, time, and number formats) and translating text.

The important part here is that i18n is generally handled by software developers and l10n is generally handled by translators. These definitions may vary a lot if you search for them, though, especially considering internationalization and localization can easily be mixed together.

However, the i18n product in the KDE Bugzilla is a general place to report any issues pertaining to translation, including internationalization and localization issues.

The last important place we need to talk about (briefly) is identity.kde.org.

A KDE Identity is a common login which can be used on Phabricator, Bugzilla, the Wikis, Invent and some other places. There, you can apply for different kinds of account, among them a developer account, which is required for translators to commit directly to SVN.

Since a developer account provides commit rights, this is only provided by sysadmins to trustworthy contributors who have several public contributions and are referred by one of the main contributors in their specific field, which in this case would be a member of the localization team which you contacted and are collaborating with.

This may sound scary but it really is not. It is a mere formality, as long as you fill the two main requirements of referral and enough public contributions.

The first contact

The first thing you must do in order to start translating is contact the localization team responsible for the language you want to translate KDE software into.

The main, formal way of doing this is by subscribing to the respective mailing list and sending an email showing your interest in contributing, whereas the main informal way of contacting your team should be by IRC, such as the #kde-i18n channel.

A few teams, like mine (Brazilian Portuguese), have other means of contact, such as Telegram and Matrix, two different Instant Messaging software similar to Whatsapp and Discord, respectively. So if you’re unacquainted with IRC or mailing lists, you may contact your team this way. The KDE Community has a wiki for Telegram and a wiki for Matrix, which I’ll try to update later with Telegram/Matrix rooms I find.

Your localization team should instruct you both on how to start translating and on commonly-agreed terminology.

The first thing you’ll likely have to do is install three very useful utilities called Lokalize, subversion and kdesvn. Lokalize is the main Computer Assisted Translation (CAT) tool we’ll be using to translate KDE software; subversion allows us to download the files for translation, which are hosted through SVN and accessible through a web interface which you can see here: https://websvn.kde.org/; and kdesvn is a tool used by translators with a KDE developer account to easily submit any translated files.

The three main places we as translators should care about are as follows:

The folder l10n-support contains folders respective to each language available to translate, and within each folder there are scripts, glossaries and other such things that are used by each team to ease the translation process.

The respective trunk/l10n-kf5 folder for your translation team contains two main folders of interest: docmessages and messages. This is also true for stable/l10n-kf5.

The folder docmessages stores the documentation for a given application, a.k.a. its respective usage manual, whereas the folder messages stores translation files pertaining to the interface of a given application; that is, text strings appearing in the application itself.

Docmessages have a few differences compared to software translation and the translator should at least know a bit about the documentation team and its workflow, so I’d recommend you start with the messages folder instead. It’s not that complicated either, though.

Both the stable and trunk folders may also contain some pertinent scripts or glossaries for quick access.

Trunk includes versions of applications that are still in development between major/point releases (such as 5.17.0), in addition to the www file, which pertains to KDE website strings; stable includes a specific version of applications as frozen in time (more specifically, a major release). Once trunk reaches a major release, its current state will be the new stable, and so it is of primary importance to translators; however, stable should also be a priority so that distro releases may benefit from translations. At this exact moment, the current stable will be used for the new Plasma 5.18, which makes this article quite convenient, as I might catch your interest in translating KDE software for this Long Term Support release! 🙂

The barebones

After that, the one thing you need to do is get the files needed for translation.

For that, you may first check on websvn for the correct folder you want. For instance, trunk/l10n-kf5/pt_BR/messages, the folder containing only interface-related files for Brazilian Portuguese, should show an SVN link: svn://anonsvn.kde.org/home/kde/trunk/l10n-kf5/pt_BR/messages. To download the entire folder, you may simply type the following in a terminal:

svn co svn://anonsvn.kde.org/home/kde/trunk/l10n-kf5/pt_BR/messages

And it should start downloading files into your home folder.

You can also just download the specific file you want from websvn and work on that if you want.

Likewise, you may also create a simple bash script for downloading your desired folders automatically, if you’re able to do so.

The files you just downloaded, as you will see, are PO files.

They follow a standard widely used in localization named GetText. Typically, translators would receive PO template files (those with a .pot extension), translate them and rename them as .po files. Many CAT tools also provide automatic conversion for ease of use. However, since we will translate incomplete files, we’ll likely not need to do such a conversion at all.

Let’s take a look on how a PO file looks. Here’s kontact._desktop_.po just as an example, since it’s quite short.

# Translation of desktop_kdepim.po to Brazilian Portuguese
# Copyright (C) 2003-2016 This_file_is_part_of_KDE
# This file is distributed under the same license as the PACKAGE package.
# Antonio Sergio de Mello e Souza <asergioz@bol.com.br>, 2003.
# Lisiane Sztoltz <lisiane@conectiva.com.br>, 2003, 2004.
# Lisiane Sztoltz Teixeira <lisiane@conectiva.com.br>, 2004.
# Lisiane Sztoltz Teixeira <lisiane@kdemail.net>, 2004.
# Henrique Pinto <henrique.pinto@kdemail.net>, 2005.
# Eduardo Habkost <ehabkost@conectiva.com.br>, 2005.
# Eduardo Habkost <ehabkost@raisama.net>, 2007.
# André Marcelo Alvarenga <alvarenga@kde.org>, 2008, 2009, 2010, 2011, 2012, 2013, 2014, 2015, 2016.
# Luiz Fernando Ranghetti <elchevive@opensuse.org>, 2008, 2009, 2010, 2011, 2012.
# Marcus Gama <marcus.gama@gmail.com>, 2012.
msgid ""
msgstr ""
"Project-Id-Version: desktop files\n"
"Report-Msgid-Bugs-To: https://bugs.kde.org\n"
"POT-Creation-Date: 2019-07-22 01:21+0000\n"
"PO-Revision-Date: 2016-04-06 08:00-0300\n"
"Last-Translator: André Marcelo Alvarenga <alvarenga@kde.org>\n"
"Language-Team: Brazilian Portuguese <kde-i18n-pt_br@kde.org>\n"
"Language: pt_BR\n"
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n"
"Plural-Forms: nplurals=2; plural=(n > 1);\n"
"X-Generator: Lokalize 2.0\n"

This is the header section of PO files and it can be safely ignored: that section will be filled automatically for you later by Lokalize, as long as you fill your information properly.

#: src/data/kontactconfig.desktop:14
msgctxt "Name"
msgid "Kontact Configuration"
msgstr "Configuração do Kontact"

#: src/data/kontactconfig.desktop:61
msgctxt "Comment"
msgid "Default KDE Kontact Component"
msgstr "Componente padrão do KDE Kontact"

#: src/data/kontactconfig.desktop:108
msgctxt "X-KDE-Keywords"
msgid "kontact"
msgstr "kontact"

#: src/data/org.kde.kontact.desktop:2
msgctxt "Name"
msgid "Kontact"
msgstr "Kontact"

#: src/data/org.kde.kontact.desktop:73
msgctxt "GenericName"
msgid "Personal Information Manager"
msgstr "Gerenciador de Informações Pessoais"

The body section contains strings to be translated.

The first line shows which file contains the string we are going to translate, that is, the context of the string, which is useful to determine which component of the software contains that string; the second contains a generic name for that specific string.

The third and fourth lines are the ones that matter most to translators. The corresponding text for msgid, contained between quotation marks is the source text to be translated, and msgstr is the translated string that the translator enters.

Let’s see how it looks from within Lokalize. But first, let’s get acquainted with its interface.

The Lokalize interface

If you recall, we originally downloaded the required trunk files with svn co svn://anonsvn.kde.org/home/kde/trunk/l10n-kf5/pt_BR/messages. They will be found on your home folder, so in ~/messages, that is, /home/yourusername/messages. You can then go to whichever file you want and open it directly through Lokalize. But that’s not practical: there are, literally, hundreds of files to navigate to, and you don’t even know which of these is incomplete! That’s where Lokalize comes in. Here’s how it looks like when you open it directly for the first time:

Figure 1 – The Lokalize welcome screen.

If we click on “Configure Lokalize”, we’ll see the Settings dialog. Lokalize attempts to fill your Identity data based on the default language set up for your user, but it doesn’t always get it right, so it’s best if we fix it. Mine, for instance, came with kde-i18n-doc@kde.org as mailing list when it should be kde-i18n-pt_br@kde.org, as stated here. A simple peek on Google, DuckDuckGo, Searx, Ecosia or whatever search engine you prefer should show you the proper mailing list.

Figure 2 – The Identity dialog.

Alright, now closing the dialog, you may click the “Translate Software” button. It’s quite straightforward, and it works the same as going in the menubar and selecting Project > Create software translation project…

A new dialog asking for the location to create an index.lokalize file will appear. There, you can select the messages folder we downloaded before and press Save. This file serves to store your project info and will be opened automatically every time you start Lokalize, which is quite convenient.

On the next dialog, you just need to fill the Target Language field and the mailing list accordingly, then press Ok.

What you will see afterwards is something like this:

Figure 3 – List of files to translate without titlebar in order to fit into one screenshot and with the kdewebdev folder open.

Now we have all files perfectly sorted in alphabetical order and displaying the level of completeness of each folder and file.

If you have a keen eye, you may have noticed I focused the “Hide completed items” up above. Its very useful functionality allows the translator to pick which file to translate easily.

Figure 4 – List of incomplete files to translate.

I deliberately didn’t open the extragear and playground folders to mention a little something.

The extragear, playground and www folders are special. Extragear corresponds to any KDE software that do not follow the KDE Frameworks and KDE Applications release schedules; playground contains only KDE software that’s incubating, that is, software that has recently been added as part of KDE applications and is still being integrated. That’s the case with Subtitle Composer, for instance; the www folder isn’t related to software text, but rather contains all translatable text found in kde.org within the www_www.po file, such as the kde.org/announcements page, and as such it includes content which must be handled and reviewed with more attention, as it’s essentially the face of KDE. The latter is an ever-growing behemoth of over 10,000 strings—yeah, strings, not words or characters.

Core KDE software and www should receive special attention, especially when a new release is coming, but you shouldn’t dismiss other applications either. As a matter of fact, when contributing to something you like, you should be having fun. And I do mean having fun, choosing what looks the most interesting to you and working with what you would like to translate, at the very least initially. If you have seen a little mistake in the interface or somewhere in your favorite software, maybe fixing the translation should render that petite joy you might want on the specific day you started translating something.

Now, let’s finally take a look on how the interface for translating looks like. Click on any .po file you’d like; I’ll use subtitlecomposer.po as an example.

Figure 5 – The translation interface.

If you are already acquainted with Computer-Assisted Translation (CAT) tools, you might recognize most components on this screen almost immediately.

On the upper left section, Translation Units, you’ll see a list of strings available to translate containing lots of data over each string. The most blatant are the text and its corresponding translation state.

A green check mark icon indicates the string has already been translated; a purple question mark indicates a string that has some text translated but hasn’t been approved yet for some reason (fuzzy), and the gray X shows the string hasn’t been translated or edited yet.

A string marked as fuzzy is generally quite important. It may contain a note explaining any doubts you might have so other translators may contact you later or take into consideration when translating. It may simply be a string that has been moved somewhere in the application code and thus might be slightly different. It may also have been detected automagically by Lokalize because of another branch; say you’re translating a file on the stable branch and the string looks exactly the same as one that has already been translated in trunk, you’d get a dialog prompting you to check the corresponding trunk string, showing up as fuzzy for you to either change or accept. This is also true for similar strings.

Notice in Figure 5 the bottom left pane, Alternate Translations. The referenced translated string is “Check for errors in the current subtitle”, and the current string is “Clear detected errors and marks in the current subtitle”. Thus, the previous translation, “Verificar erros na legenda atual”, shows up automatically, so even if it is not correct, this at least means you don’t need to type the entire sentence for translation, only specific sections.

A better example of this can be seen in www_www.po:

Today KDE releases a bugfix update to Plasma 5, versioned 5.3.1. \n
Plasma 5.3\n
was released in January with many feature refinements and new modules to
complete the desktop experience.\n

Today KDE releases a bugfix update to Plasma 5, versioned 5.3.2. \n
Plasma 5.3\n
was released in April with many feature refinements and new modules to
complete the desktop experience.\n

Notice how the only thing that needs to be changed here is the months (January and April) and the version (5.3.1 and 5.3.2) . This feature is incredibly useful for automating the translation of www_www.po.

As for the other panes, Unit Metadata contains notes and the previously mentioned context of the string, that is, in which part of the code it is located. With the context, you can sometimes sort of guess where in the interface the string is, and so you can more easily verify whether your translation is appropriate or not.

If you click the “Add a note…” button, you can add a small note that should appear in your PO file as # Some note. See how it looks like if I edit this string, keep it fuzzy and add a note:

#This is a note.
#: src/application.cpp:673
#, fuzzy, kde-format
# | msgid "Check for errors in the current subtitle"
msgid "Clear detected errors and marks in the current subtitle"
msgstr "Limpar erros e marcas detectadas na legenda atuals"

The first line is the note itself. The third line includes the word fuzzy in it, indicating its fuzzy status. The fourth line starts with a |, which indicates the string referenced in a previous translation.

You can see a tooltip explaining the role of Alternate Translations by hovering your mouse over the pane’s titlebar.

The Translation Memory and Glossary panes are common to all CAT tools. Translation Memory works similarly to Alternate Translations, but only with strings that were translated by you ever since you started translating; it grows together with the number of translations you do. There’s even a tab in the interface dedicated to looking into translation memories.

The Glossary, also known as the Term Base, serves to store any terms you’d like to keep for future reference, with additional notes and whatnot. Depending on your localization team, you might have a shared glossary which you can add to Lokalize in order to guarantee a certain level of consistency between translations.

In the professional translation world, glossaries are quite useful for beginners and, well, forever, if well kept. Translation memories are nevertheless very well-regarded by highly-experienced translators (by this I mean several years, possibly decades), as all of the data they contain facilitate the translator’s job immensely. Another use for the Translation Memory is to contain only strings pertaining to specific subjects or to specific clients, which is quite desirable. You may have a dedicated translation memory that accounts for all documents pertaining to the internal management of a company, but it might contain specific terminology that only that client requests and that is not canon within the field; using such a translation memory could potentially be detrimental if you’re translating for another company insofar as you utilize non-appropriate terminology for that company’s documents.

Last, but not least, there’s the unnamed translation pane on the upper right. It’s no surprise at all: its upper section contains the source text, that is, the text to be translated, and the bottom section contains the target text, the translation per se. That’s where you’ll be working the most.

The translation workflow

Now that we’ve gotten ourselves familiarized with the interface of Lokalize, I’ll show you the default workflow for translating and a few tips by me.

For those who skipped this wall of text, you can download the files for translation using the method described in the beginning of this section.

After you’ve opened your desired file, you can select a string that hasn’t been translated yet and translate it. It is recommended that you keep the line size on the translated string similar to the source text, but it is generally a cosmetic change for better readability of PO files. Going forward with the explanation: if the cursor is on the last line of the translation, you can simply press Down to jump to the next string. Likewise, pressing up when you’re on the first line will send you to the previous string. The same can be achieved by pressing PgDown and PgUp, respectively.

The next string may already be translated, so other useful keyboard shortcuts are Ctrl+Shift+PgUp/PgDown, which go to the previous and next non-ready strings. Non-ready here means both untranslated and fuzzy, of course.

If you find a fuzzy string that doesn’t need to be changed, you may simply approve it; similarly, if you don’t feel like you want or is currently able to translate a specific term, you might want to translate most of the sentence and set it as fuzzy. In the toolbar just below the menubar and high above the Lokalize interface, you should see the Approved button. Clicking its arrow should allow you to choose which status to set as true for that specific string; clicking directly on Approved will approve the string. You can also toggle this state by pressing Ctrl+U. This only works when there’s text in the text target field, of course.

If you’re a minimalist and want to clean your interface and arrange it to make it as comfortable as possible, you can do several things:

One is right-clicking on the bar containing Source, Target, Notes, Context etc. on the Translation Units pane and deselecting whatever field you don’t want to display. Another is click-and-holding the corresponding titlebar for each pane and moving it. You can arrange them however you’d like, even relative to each pane; it’s an advantage of Qt applications, you see. This is the same with the proprietary CAT tool Memsource, also developed using Qt. You can also change the size of each pane like how you can resize windows in any application: by grabbing its borders.

If you have a multi-monitor setup, one thing you can do is unpin a pane from the interface by clicking the diamond icon to the left of the pane’s close button and put it on your secondary monitor. Removing panes you don’t find useful is also quite handy; in my experience, the Translation Memory pane hasn’t been very useful when localizing software even though I’ve used it periodically, so I often remove it.

If you think a specific string is worth future consideration, say, if you think a dubious translation should be reviewed after you translated the rest of the file or after terminology research, you may also press Ctrl+B to bookmark it. You can then later check the Go > Bookmarks section on the menubar.

Unlike other CAT tools (and similarly to Memsource), Lokalize doesn’t abstract tags by transforming them into icons; tags are kept as is, and in the case of PO files, they are usually html tags, such as in <b>Some string that is bold.</b>. For those used to traditional translation with professional CAT tools (as opposed to localization software), tags usually correspond to formatting (italics or bold, for instance) in .doc, .docx and .odt document files, and they surround the text that is modified by said formatting. Software doesn’t usually contain this kind of formatting though, which is why GetText is a standard that utilizes plain text.

Since Lokalize keeps tags as is, including multi-line links, it is kind of a pain to add them by copy-pasting. You may have the idea of copying the source text to the target text field with Ctrl+Space and then working upon that, but that’s not really convenient at all, now is it? Instead, you can use keyboard shortcuts such as Ctrl+T to add tags from a list, or Ctrl+M to add tags sequentially, that is, in a sequence based on which tag has already been added.

I strongly recommend that you explore the Settings > Configure Keyboard Shortcuts… dialog if you’re already used to some CAT tool, though. Setting the most used keyboard shortcuts to something you prefer or are used to is incredibly more productive than trying to learn a completely different set of shortcuts which are highly customizable. I tend to set Ctrl+Enter for jumping to the next non-ready string and Ctrl+Shift+Enter for the opposite direction, Ctrl+i for copying source to target and Ctrl+Up/Down for previous/next string. The three first ones come from Memsource, whereas the latter two ones come from Matecat.

One of the last things I should mention and that you absolutely must pay attention to are plurals. Let’s take a look on Figure 6 for a bit:

Figure 6 – Plural Form.

This was a mistake I made on one of my first translations.

Note that the sentence to be translated contains:

An error occurred while renaming %1 image.\n

Originally, I had translated it like so:

Ocorreu um erro ao renomear a imagem %1.\n

I know most people reading this post won’t know any Portuguese, so I’ll translate what I assumed the source text meant:

An error occurred while renaming image ImageName.\n

I hadn’t noticed the upper tabs mentioning Plural Form 1 and 2 on my first time. Additionally, I didn’t notice the lack of an article between renaming and %1, and it’s generally a silly error. For comparison, see how Plural Form 2 looks like for the source text:

Plural Form 1: An error occurred while renaming %1 image.\n

Plural Form 2: An error occurred while renaming %1 images.\n

This essentially means that, in the first case, the variable %1 stands for the number 1, and in the second case it corresponds to any number higher than 1, that is, anything that requires “image” to be instead plural “images”.

Variables are something unique to localization compared to other translation variants: they stand for text whose position may vary according to the context and language that it is being translated into. Translators should be quite wary of them. They are usually represented by some symbol (%, &, #, @) and a number.

Thus, in Brazilian Portuguese, the proper translations would be:

Plural Form 1: Ocorreu um erro ao renomear %1 imagem.\n

Plural Form 2: Ocorreu um erro ao renomear %1 imagens.\n

When one of the experienced translators of my localization team tried to upload my translation, he met with an error provided by a script that checks all PO files before proper upload. By verifying the error with the command msgfmt -c, he found out what the error was. The script noticed that Plural Form 2 was missing, and the command specified what string in what file had that error.

Out of curiosity, let’s check how it looks like on the PO file:

msgid ""
"An error occurred while renaming %1 image.\n"
"Do you want to rename this image again or rename this image by overwriting?"
msgid_plural ""
"An error occurred while renaming %1 images.\n"
"Do you want to rename these images again or rename these images by "
msgstr[0] ""
"Ocorreu um erro ao renomear %1 imagem.\n"
"Você prefere renomear essa imagem novamente ou sobrescrevê-la?"
msgstr[1] ""
"Ocorreu um erro ao renomear %1 imagens.\n"
"Você prefere renomear essas imagens novamente ou sobrescrevê-las?"

There are two things of note here: msgid_plural now exists and corresponds to Plural Form 2, and msgstr now contains [0] and [1], which are array notation used to correspond strings: [0], the first entry in a typical array, corresponds to Plural Form 1, the first form, whereas [1], the second entry in a typical array, corresponds to Plural Form 2, the second form.

This string also allows us to verify another particularity of PO files: multi-line text is shown below msgid/msgstr and after a “” in front of msgid/msgstr.

One last thing to mention is that, if you’ve followed this article and you installed kdesvn, you should now have a right-click entry on the KDE file manager Dolphin that is named “Update (Kdesvn)”. You don’t need to run svn co or svn up whenever you want to re-download your translation files anymore, you can simply go to the folder where you translated them, right-click an empty space and select the option “Update (Kdesvn)”. It should show a dialog mentioning it’s complete almost immediately, depending on your internet connection.

It is important that you always update your translation files before working on them, since during the time interval in which you’ve been away or not translating someone might have already changed the file you intended to translate. It’s no use working on an old file, you see.

Now, if you take a look on the kdesvn tool, you’ll notice how streamlined the interface is.

Figure 7 – The kdesvn interface.

It is incredibly useful for translators with proper permission to submit translations themselves: kdesvn detects the repository whose folder you open, organizes all files in tree view, highlights the folders and files containing changes, allows to update the repository quickly, and if you already have configured your environment, uploading only the files changed are a breeze. I know svn is quite old and most people acquainted with code will prefer git, but this fine tool that is integrated in Dolphin is precisely what made me like svn in the first place, and I am quite satisfied with it. If KDE ends up migrating the localization infrastructure to git in the (not near) future, I’d strongly appreciate a similar tool that is simple and easy to use even for people not that acquainted with repositories, as well as integrated to Dolphin.

Today will not be the day I explain how translators with permission can upload translated files, though. I still don’t know that much about the process, either, to be honest. So if you’ve finished translating a file, you may send it either directly to a translator with upload permissions or to the mailing list. Initially I sent my translated files to the Brazilian Portuguese Telegram group, and now that I have a developer account I upload files directly to SVN, though I’ve slacked with that in recent times.

To summarize

This was a fairly lengthy article, but it should clarify most things necessary and not-so-necessary for potential contributors to make their first step into localization involving KDE software. I wrote it so that it was quite comprehensive, but in practice the workflow isn’t complicated at all. On the first time, it boils down to:

  • Download the files to be translated
  • Create a project to list them easily
  • Translate them
  • Send them for upload

And after the first time:

  • Right-click the file manager and update your existing files
  • Open Lokalize (it opens the previous project automatically)
  • Translate
  • Send them for upload

And that’s not hard at all. In fact, from the second try onwards and aside from translation itself, the rest of the procedure is so easy and straightforward it ends up becoming part of muscle memory!

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; if you’d like to translate widgets instead, you might wanna have a look at store.kde.org 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 fr.kde.org for France or kde.ru 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.

A ton of features, bugfixes, and and user interfaces have landed for Plasma 18, and a beta release is now available for adventurous types to test out ahead of the release next month.

I think this is the Plasma release that a lot of people have been waiting for. It’s faster, more stable, more beautiful, and more feature-filled than any previous release, and it comes with a Long Term Support guarantee. Nothing is perfect, and we can always do better (and always strive to), but I think Plasma 5.18 is going to hit a sweet spot for a lot of people. Look for it in the next LTS releases of Kubuntu and openSUSE Leap, as well as all the rolling release distros of course.

New Features

Bugfixes & Performance Improvements

User Interface Improvements

How You Can Help

Please test the Plasma 5.18 beta release! You can find out how here. If you find bugs, file them–especially if they are regressions from Plasma 5.17. We want to get as much testing, bug filing, and bugfixing as possible during the one-month beta period so that the official release is as smooth as possible.

More generally, have a look at https://community.kde.org/Get_Involved 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.

January 18, 2020

KDE is running a competition in search of the next great promotional video for KDE's Plasma desktop and KDE's applications.

The prizes are two fantastic TUXEDO computers, one per category, which will undoubtedly boost your film rendering capacity. There are also 12 goodie packages for runner-ups, and who doesn't need more Linux shirts, caps and stickers?

Although we have already received some interesting entries, we feel it may be time to help video artists out there with ideas from the judges themselves.

Below, Julian Schraner, Ivana Isadora Devčić, and Paul Brown from the Promo team and Farid Abdelnour from the Kdenlive team give their views on what a KDE promotional video should look like, where to find resources, and which pitfalls may hurt your film if you fall for them.


I have five simple recommendations for participants:

  1. Avoid videos that contain only screencasts
  2. Break the mold, be creative
  3. Use motion graphics techniques (have a look at animation nodes)
  4. Choose a good catchy song and work on that editing
  5. Make it short, make sure there is something happening in every single frame. Cut out lulls -- they're boring


Here's my list of things I would recommend doing, as well as what to avoid:

  • No slideshows, please! Don't make the video look like someone animated a PowerPoint presentation with zoomed-in screenshots sliding into view and fading out. That just looks cheap and low-effort.
  • Don't overdo it with memes and attempts at humor. As amusing as it may be to you and your 3 friends, things like that do not always translate well across cultures and generations. It's OK to add a cheeky moment if it's appropriate with the general theme of your video, but trying to make the entire video "funny" might send the message that you think Plasma is a joke.
  • It's OK to include real, actual people in the video. Anyone can easily make a screencast, but it takes effort - and shows that you made an effort! - to film people using Plasma. Including clips of people using Plasma can make a much stronger impact than just showing the desktop, even if the clips are short.
  • This is very, very basic and Captain Obvious-style, but: background music can have this cool thing called volume. Playing with volume can add depth and variety to your video. Make the background music louder in some parts and softer in others, depending on the effect you're trying to achieve. If it's always the same, the entire video can easily seem monotonous, even if it's only a minute long.
  • If possible, don't use computer-generated voices for voice-overs in the video (that is, if you're going to have any at all). 98% of them sound really fake and distract from the actual content, or just make the video sound boring. Even if you don't have a particularly radio-friendly voice, it will still sound more natural and normal if you record yourself (or try asking someone to help).
  • Great videos tell a story; they're not just a semi-connected list of clips with background music tacked on. Try to develop a little story that sends a specific message instead of just showing random Plasma features. It's also very easy to fall into the trap of comparing Plasma to something else and disparaging other DEs, so please try to avoid that.
  • Personally, I do not want to see "wobbly windows" in any of the videos. Plasma is more than just KWin effects; we're looking for videos that will make people think "wow, this could be really useful to me, I wanna try it", not "haha that's a cool gimmick, I bet I can move the mouse fast enough to break it".

Another important thing - if the video does have any narration/voice-over, I would ask that you include subtitles (at least as a separate file, if hard-coding them is a bad practice). Accessibility is a must!


I've split my recommendations into 3 parts: the footage you can use, the music (and other sounds), and the editing; that is, the raw materials and how you put them together.


Like Ivana, I would personally like to see some live action mixed in with the screencasts. You can grab your phone, and go and film something you can then work into the story. Or you can also take some public domain footage from the Internet Archive.

If you look at Real LifeTM advertisements, they don't only show the product, they also show people doing stuff with the product. Most of our videos are already a bunch of screencasts chained together. I want to see something different.

That said, when you do insert screencast footage, make sure you show something interesting happening in the applications. Don't show an empty folder in Dolphin, a blank square in Krita, or a boring, text-only document in Okular. Make sure there's some color in there and that you can see the user doing something.

As for footage of people, try to avoid stock footage, especially those clips that show smartly dressed white people looking at a computer screen, pointing and smiling. It's like the stock photos of women laughing at salads: you see that kind of stuff everywhere and it looks soooo fake. It is nearly as bad as stock music. Nearly...

"My salad is hilarious!"

Another thing to take into account is that you have to be careful with copyrights! Anything that has not been published before 1924 and doesn't have an explicit free license or isn't explicitly in the public domain, is under a regular copyright and may not be used without the authors' or the copyright holders' express written permission. Also, make sure the person distributing the work is the owner of the work. Don't blindly trust a random Youtuber!

TIP: Apart from the Internet Archive, many public institutions publish footage for free on the Internet. One such organization that comes to mind is NASA.


The best way to make me switch off a video after a few seconds is by choosing the "wrong" music. Ironically, "the wrong music" is often that heartless, bland music used in nearly every single corporate video. I swear I would prefer to have hot wax poured into my ears rather than listen to another hokey, fake-quirky ukulele theme in my life.

The best kind of ukelele.

Conversely, sometimes what may seem the wrong music is in fact the right music. Stuff that you can't imagine going together, goes together. Salsa for Spectacle, flamenco for Falkon and power-pop for Plasma? Why not?

Again, be careful with copyrighted stuff. The same thing that applies to footage, applies to music. Besides, just because Johann Sebastian Bach died 300 years ago, doesn't mean that you can use that Von Karajan recording of his Cantatas: the recording itself will be copyrighted.

Most artists on Jamendo release their music under a liberal license as long it is not used for commercial purposes. And making a video for a competition organized by a non-profit that will not generate any money for you or for the non-profit IS NOT a commercial purpose. Also check out Free Music Archive and especially Juanitos: They make great, fun retro pseudo-ethnic music and distribute it under very generous terms.

On the other hand, go easy with Incompetech -- his music can be lovely, but it is EVERYWHERE. If you must use one of his tracks, make sure you poke around and go for his less obvious stuff.

TIP: If you need a voice-over but are not confident that your own voice will sound okay, try Fiverr. For a few dollars, you can have a professional actor read out your script.


Avoid canned transitions that come as standard with your video-editing software (Kdenlive, right?). They may impress your parents, but everybody else thinks they're lazy.

Related to the above, avoid excessively flashy transitions, even if they are original. I am personally guilty of using animations to transition from one scene to another, but if they are not part of the story, they can draw attention to themselves and away from the real content, distracting the viewer. Most of the time, nothing beats a good clean cut.

The same goes for effects: don't overdo them! Effects are great to confer atmosphere, but if they are not doing that, they are just distracting from the story, and more often than not, make the action harder to follow. Here's looking at all those "editors" that place a screencast into the picture of a monitor! Yes, I get it: you do masks. So does everybody.

TIP: If you do need effects for your video, don't limit yourself to the catalogue supplied by your editing software. Check out things like Blender and Natron -- these programs are used a lot for effects and filters for a reason.


Apart from everything mentioned above, I would encourage participants to look into using motion graphic techniques rather than sticking to simple transitions when possible. For that, you can use tools like Blender's Animation Nodes addon.

Something that is often overlooked is the matter of typography. Choose your fonts wisely! If you have text on the screen, avoid the default bland fonts. Go to Font Squirrel or Google Fonts for a great selection of free and open types to choose from.

Same goes for video titles.

If you need footage, check out Pexels it contains a lot of high quality clips for free.

About KDE's Video Contest

KDE is looking for talented videographers and filmmakers that will help promote our free software through the medium of video. There are two categories in this contest: in the Plasma category we want participants to create a video that will promote KDE's Plasma desktop to the world. The Applications category is to help promote one or several KDE applications.

Submissions must be sent in before the 20th of February 2020. To find out more, check out the full rules.

Nextcloud announced their latest release and among the many new features is itinerary extraction from emails. That’s using KDE’s extraction engine, the same that powers similar features in KMail as well.

Nextcloud Hub

Yesterday Nextcloud turned 10 years, so that was a good date to announce a big new release, Nextcloud Hub (which I erroneously called Nextcloud 18 on Twitter). Nextcloud Hub now has email support built-in, and with it support for extracting booking information from train, bus or flight tickets as well as hotel and event reservations. Besides an easy to read summary of the booking data on top of the mail, there’s also the ability to add corresponding calendar entries.

Frank presenting itinerary extraction in Nextcloud Mail. Frank presenting itinerary extraction in Nextcloud Mail.

Those are very nice and useful features of course, but obviously I’m particularly happy about this using the same technology we implemented over the past two years for KMail and KDE Itinerary, thanks to a collaboration started at FOSDEM 2019.


How to get a C++ extraction library and a PHP web application together isn’t entirely straightforward though. We ended up doing this via a separate command line extractor tool, similar to how the Plasma Browser Integration interfaces with the extractor as well.

During the Nextcloud Hackweek last week we also extend the command line tool to produce iCal output, to avoid some code duplication for the calendar integration and ensure compatibility with the KDE Itinerary app. These changes didn’t make it into the current release packages, but should become available with the next update.

That leaves the question of deployment, for PHP applications that’s usually just unpacking an archive, but for native executables things are a bit more complicated. The installation packages therefore contain a full static build of the extractor. As a side-effect of this itinerary extraction is currently only supported on 64bit x86 platforms.

A Deutsche Bahn train ticket display in Nextcloud Mail (screenshot by Nextcloud). Nextcloud Mail showing a Deutsche Bahn train booking.

Using the same technology everywhere of course also means improvements benefit everyone. So I’m very much looking forward to the increased user base resulting in more data sample donations and contributions in general :)


If you are visiting FOSDEM in two weeks, there will be plenty of opportunity to learn more about all this, for example by visiting Jos’ Nextcloud talk, my KDE Itinerary talk, or by dropping by the KDE stand in building K and the Nextcloud stand in building H. See you in Brussels!

January 17, 2020

In a product like Plasma, knowing the kind of things our existing users care about and use sheds light on what needs polishing or improving. At the moment, the input we have is either the one from the loudest most involved people or outright bug reports, which lead to a confirmation bias.

What do our users like about Plasma? On which hardware do people use Plasma? Are we testing Plasma on the same kind of hardware Plasma is being used for?

Some time ago, Volker Krause started up the KUserFeedback framework with two main features. First, allowing to send information about application’s usage depending on certain users’ preferences and include mechanisms to ask users for feedback explicitly. This has been deployed into several products already, like GammaRay and Qt Creator, but we never adopted it in KDE software.

The first step has been to allow our users to tune how much information Plasma products should be telling KDE about the systems they run on.

This mechanism is only integrated into Plasma and Discover right now, but I’d like to extend this to others like System Settings and KWin in the future too.


We very well understand how this is related to privacy. As you can see, we have been careful about only requesting information that is important for improving the software, and we are doing so while making sure this information is as unidentifiable and anonymous as possible.

In the end, I’d say we all want to see Free Software which is respectful of its users and that responds to people rather than the few of us working from a dark (or bright!) office.

In case you have any doubts, you can see KDE’s Applications Privacy Policy and specifically the Telemetry Policy.

Plasma 5.18

This will be coming in really soon in the next Plasma release early next February 2020. This is all opt-in, you will have to enable it. And please do so, let it be another way how you get to contribute to Free Software. 🙂

If you can’t find the module, please tell your distribution. The feature is very new and if the KUserFeedback framework isn’t present it won’t be built.

Are you using Kubuntu 19.10 Eoan Ermine, our current Stable release? Or are you already running our development builds of the upcoming 20.04 LTS Focal Fossa?

We currently have Plasma 5.17.90 (Plasma 5.18 Beta)  available in our Beta PPA for Kubuntu 19.10.

The 5.18 beta is also available in the main Ubuntu archive for the 20.04 development release, and can be found on our daily ISO images.

This is a Beta Plasma release, so testers should be aware that bugs and issues may exist.

If you are prepared to test, then…..

For 19.10 add the PPA and then upgrade

sudo add-apt-repository ppa:kubuntu-ppa/beta && sudo apt update && sudo apt full-upgrade -y

Then reboot. If you cannot reboot from the application launcher,

systemctl reboot

from the terminal.

In case of issues, testers should be prepare to use ppa-purge to remove the PPA and revert/downgrade packages.

Kubuntu is part of the KDE community, so this testing will benefit both Kubuntu as well as upstream KDE Plasma software, which is used by many other distributions too.

  • If you believe you might have found a packaging bug, you can use a launchpad.net to post testing feedback to the Kubuntu team as a bug, or give feedback on IRC [1], Telegram [2] or mailing lists [3].
  • If you believe you have found a bug in the underlying software, then bugs.kde.org is the best place to file your bug report.

Please review the release announcement and changelog.

[Test Case]

* General tests:
– Does plasma desktop start as normal with no apparent regressions over 5.16 or 5.17?
– General workflow – testers should carry out their normal tasks, using the plasma features they normally do, and test common subsystems such as audio, settings changes, compositing, desktop affects, suspend etc.

* Specific tests:
– Check the changelog:
– Identify items with front/user facing changes capable of specific testing. e.g. “clock combobox instead of tri-state checkbox for 12/24 hour display.”
– Test the ‘fixed’ functionality or ‘new’ feature.

Testing involves some technical set up to do, so while you do not need to be a highly advanced K/Ubuntu user, some proficiently in apt-based package management is advisable.

Testing is very important to the quality of the software Ubuntu and Kubuntu developers package and release.

We need your help to get this important beta release in shape for Kubuntu and the KDE community as a whole.


Please stop by the Kubuntu-devel IRC channel or Telegram group if you need clarification of any of the steps to follow.

[1] – irc://irc.freenode.net/kubuntu-devel
[2] – https://t.me/kubuntu_support
[3] – https://lists.ubuntu.com/mailman/listinfo/kubuntu-devel

January 16, 2020

This week we added KPatience to flathub.

That makes for a quite a few applications from KDE already in flathub

Which one do you think we should add next?

Plasma 5.18 LTS Beta

KDE Plasma 5.18 LTS Beta

Thursday, 16 January 2020.

The Plasma 5.18 LTS Beta is out!

This new version of your favorite desktop environment adds neat new features that make your life easier, including clearer notifications, streamlined settings for your system and the desktop layout, much improved GTK integration, and more. Plasma 5.18 is easier and more fun, while at the same time allowing you to do more tasks faster.

Apart from all the cool new stuff, Plasma 5.18 also comes with LTS status. LTS stands for "Long Term Support" and this means 5.18 will be updated and maintained by KDE contributors for the next couple of years (regular versions are maintained for 4 months). So, if you are thinking of updating or migrating your school, company or organization to Plasma, this version is your best bet. You get the most recent stable version of Plasma for the long term.

Read on to discover everything that is new in Plasma 5.18 LTS…


Emoji Selector

Emoji Selector

Customize Layout Global Settings

Customize Layout Global Settings

GTK Apps with CSD and Theme support

GTK Applications with CSDs and Theme Integration

Night Color System Tray Widget

Night Color System Tray Widget
  • Emoji Selector that can be opened through the application launcher or with the Meta + . keyboard shortcut
  • New global edit mode which replaces the desktop toolbox button and lets you easily customize your desktop layout
  • Improved touch-friendliness for the Kickoff application launcher and widget editing
  • Support for GTK applications which use Client Side Decorations, adding proper shadows and resize areas for them
  • GTK apps now also automatically inherit Plasma's settings for fonts, icons, cursors and more.
  • There's a new System Tray widget for toggling the Night Color feature and by default it automatically appears when it's on
  • More compact design to choose the default audio device in the Audio Volume System Tray widget
  • Clickable volume indicator and tooltip item highlight indicators in the Task Manager
  • Circular Application Launcher menu user icon
  • Option to hide the lock screen clock
  • It's now possible to configure keyboard shortcuts that turn Night Color and Do Not Disturb mode on or off
  • Windy conditions shown in weather widget


Draggable Download File Icon

Draggable Download File Icon

Low Bluetooth Battery

Bluetooth Device Battery Low Notification

  • The timeout indicator on notification popups has been made circular and surrounds the close button
  • A draggable icon in the "file downloaded" notification has been added, so you can quickly drag it to places
  • Plasma now shows you a notification warning when a connected Bluetooth device is about to run out of power

System Settings

User Feedback

User Feedback

Application Style

Application Style

  • Plasma gained optional User Feedback settings (disabled by default), allowing you to give us detailed system information and statistics on how often individual features of Plasma you use
  • Added a slider for the global animation speed
  • Redesigned Application Style settings with a grid view
  • Improved the search in the system settings sidebar
  • An option to scroll to clicked location in the scrollbar track has been added
  • The System Settings Night Color page has a clearer user interface now


Reading and Writing Review Comments

Reading and Writing Review Comments

  • Discover's default keyboard focus has been switched to the search field
  • It's now possible to search for add-ons from the main page
  • Added nested comments for addons
  • Made design improvements to the sidebar header and reviews




  • Decreased the amount of visual glitches in apps when using fractional scaling on X11
  • Made it possible to show NVIDIA GPU stats in KSysGuard

New Since 5.12 LTS

For those upgrading from our previous Long Term Support release here are some of the highlights from the last two years of development:

  • Completely rewritten notification system
  • Plasma Browser Integration
  • Many redesigned system settings pages, either using a consistent grid view or just an overhauled interface
  • Global menu support for GTK applications
  • Display Management improvements including new OSD and widget
  • Flatpak portal support
  • Night Color feature
  • Thunderbolt Device Management

Full Plasma 5.18 LTS Beta changelog

Live Images

The easiest way to try it out is with a live image booted off a USB disk. Docker images also provide a quick and easy way to test Plasma.

Download live images with Plasma 5
Download Docker images with Plasma 5

Package Downloads

Distributions have created, or are in the process of creating, packages listed on our wiki page.

Get KDE Software on Your Linux Distro wiki page

Source Downloads

You can install Plasma 5 directly from source.

Community instructions to compile it
Source Info Page


Discuss Plasma 5 on the KDE Forums Plasma 5 board.

You can provide feedback direct to the developers via the Plasma Matrix chat room, Plasma-devel mailing list or report issues via bugzilla. If you like what the team is doing, please let them know!

Your feedback is greatly appreciated.

KDE Connect Website

View the Website under work here.

Week 1 Overview

  • KDE Connect Promo Video made
  • Implementing Liquid and Jekyll for Easy future expansion of the site
  • Implementing Webp file format with fallback for unsupported browsers
  • Implemented fetching Developer Blog Posts
  • Worked with the Promo team to fix the wording on the website
  • Worked with the KDE Developers to make the video and website better by taking feedback

It had been great fun working with KDE Community on my SoK 2020 Project that is making a Website to promote KDE Connect. I started early off making the website from December by having a lot of discussion with my mentors Carl Schwan and Piyush Aggarwal, and the KDE Connect Developers. They were all very supportive and provided very constructive feedback. So when the project got accepted last week a lot of the work was already over. My proposal included the more work that is required on the website and taking the website to as much perfection as possible.

The Website can be viewed here.

You can check out my proposal here. The repository that has the KDE Jekyll themed site is here.

This week I decided to make a video to put on the homepage to show off KDE Connect in real as the site only had illustrations and no real image of KDE Connect after a lot discussion with my mentors and Connect Developers.The final video is shown below.

When I started off I had no idea on how to make a promo video. At one point I thought I won’t be able to do it as I had never edited a video in my life except for some family videos on my phone using some simple apps. But I took the challenge and Carl helped me by recommending KDE’s Own Video Editor Kdenlive. With the resources I had own the wiki and youtube, it was easy to pick up Kdenlive. I started by making the Screen recordings I required. Then I edited the video out in Kdenlive. Kdenlive surprised me with its powers. I would like to take this oppurtunity to thank the Kdenlive Developers for such an awesome video editor. (After I am done finishing with this website I want to start contributing to KDE Connect and Kdenlive!). Before using Kdenlive I actually used a paid software to make a mock video and after Carl’s recommendation switched to Kdenlive and I am in love with it. It is much better and powerful than the paid software. The Dropbox Containing the Kdenlive files and assets is here.


I made many versions of the video and each time I posted them on the Connect Developer group. Since the Connect Developer Group is very active, most of the developers provided valuable feedback and recommendations and I continued to work on the video during the week to make it as perfect as possible and reach the expectations of the community. The feedback from the community made me excited and I worked with that motivation. I also contacted the Promo team and took their advice. They were very supportive and they also helped with the text on the website. The week went by fast while I was constantly making changes to the video as feedback came. It was a lot of fun and such constructive critisism motivates you. I also went on to implement Webp image support for faster webpage loading, Jekyll to support easy expansion and fetching Developer Blog Posts from RSS feeds on to the site using Jekyll-Planet Plugin. Currently the website looks like shown below. Developer




It was a great learning experience this week and I learnt a lot of new things from the community. Waiting for an awesome next week too.Don’t forget to checkout the website. So with that I conclude this post. See you in the next one. And as my mentor says : “Happy KDEing!!”

Older blog entries