Valencia beach In June 2019 I went to Usability & Productivity Goal Sprint in the beautiful city of Valencia! As I’m a relatively new KDE contributor this was my very first sprint experience and it was awesome. At the same time the Plasma Sprint took place and it felt more like one big sprint than two separate events. We were kindly hosted by Slimbook which also organized a bus that took us to their office in the morning and back to the hotel in the evening. A big thank you to them!

In the first part of the sprint I mainly worked on continuing to improve Spectacle. You don’t know Spectacle? It is our screenshotting application with many settings: for example to control what should be captured, if you want to include your mouse cursor or to simply set a delay from when you press the button until the actual screenshot is taken.

Showing the remaining time in the taskmanager

The first feature I worked on is based on a cool idea by Felix Ernst. Spectacle now shows the time remaining until a screenshot is taken in the taskmanager like when you copy a file in Dolphin or download a file. Now you don’t have to wonder anymore how much time you have left to arrange everything for your screenshot or if Spectacle is still running or crashed somewhere in the background (even if that does not happen very often).

Configuring shortcuts inside Spectacle
Configuring shortcuts inside Spectacle

Together David Edmundson and I finished porting the Shortcuts configuration of Spectacle from KHotkeys infrastructure to KGlobalAccel. This means, the shortcuts aren’t located in the Custom Shortcuts part of the system settings and duplicated under KDE Daemon in Global Shortcuts but reside in their own Spectacle category in the global shortcut settings. Even more important, we can now show a configuration dialog for the shortcuts inside Spectacle! You don’t have to fear that your carefully assigned hotkeys are reverted to default ones during this transition - they are carefully migrated to the new system. The migration program is longer than the actual required code changes and is run automatically when you receive the update thanks to kconf_update.

Continuing to work with David we investigated why persistent copy to clipboard of screenshots didn’t work - it was supposed to work after recent changes in Spectacle and Klipper after all. It turned out that there was a bug in Klipper but you can now paste screenshots into your favorite image editor or chat prorgam after closing Spectacle. Even if your clipboard history is set to ignore images (of course they will not appear in the history in this case) !

The last days of the sprint I spent on adding the possibility to have your wallpaper slideshow in a particular order in addition to the current random sequence. For now, I implemented sorting in alphabetical order and based on the time the pictures were modified but extending it with others is straightforward. In doing so I simplified the code a bit (it wasn’t touched in a long time) and reduced some duplication by using the same model to show the images in the configuration dialog and in the actual slideshow (before this was done in two different code paths). I didn’t quite finish it up during the sprint but you can have a sneak peek at it over at Phabricator.

Another bigger change I started is porting Spectacle from it’s hand-rolled configuration-managing class to a KConfig XT based approach. You write a XML file and it generates the code for you that manages the settings and their defaults (notice that currently Spectacle has only an OK and Cancel button but no Defaults or Apply button). The main settings already work but I still need to wire some things up like the new shortcuts settings for example.

Aside from that I also worked on investigating and fixing some bugs as always. For example the action buttons now fit into their respective list elements inside the virtual desktop settings, and you can’t get trapped inside Spectacle’s Region Selection anymore.

However the great thing about a sprint is that is not all hacking but you can discuss bigger changes and directions for the future, share ideas and brainstorm together in person. We had a big discussion about discoverability of widget settings and agreed on having a global edit mode where everything on your desktop will be configurable. Other points of discussions were the right click menu of the plasmoids in your panel that can be confusing when they include multiple very similar entries, the behavior of the taskmanager or the multi-screen configuration. One last thing we talked about is the future of the usability goal. We have awesome news to share so stay tuned and have an eye on Nate Graham’s blog as always.

But a Sprint is not only working with others but also meeting the people whose names you know and maybe interacted with textually, talking to them and getting to know each other. And I had a great time, starting from the first day hacking together in a single hotel room with slow wifi, to the last one when we four with the latest flights walked to the beach. So thank you to KDE e.V. that made this possible for me, Slimbook again, Aleix Pol who organized it and lastly to all the nice people who attended and made this a great experience. See you soon.