Manuel Kehl

Open Source Contributions

While this website serves mainly as portfolio of projects I have created myself or contributed major parts to, this post aims to keep track of various contributions I have made to different open source projects.

Budgie Desktop

I have added support for multiple batteries to the Budgie panel, which comes in handy for users of laptops like mine (Thinkpad t450s) who want to see the charging state of all batteries.

Budgie features the side panel Raven which contains an overview of all desktop notifications the user has missed. While this makes sense for private messages, calendar reminders and emails, most users do not want to be reminded that they “missed” a notification from a music player. I have created a pull request that makes it possible to edit a dconf key with applications to be ignored by Raven.

In addition to the above changes I have made a few contributions to the budgie next desktop, which has served as unstable development and experimentation sandbox and eventually lead to what we now know as budgie desktop. Most notable is the ability to collapse music player widgets in Raven.

Deepin Window Manager

The Deepin window manager is a fork of elementary’s window manager Gala with a somewhat different approach to multitasking and workspace management. I encountered and fixed a bug related to broken animations when switching workspaces in certain situations. The video below was created for the bug report and explpains the problem.

Lollypop Music Player

Lollypop is a modern music player for GTK desktops and as such makes use of so-called client side window decorations, i.e. the ability to place custom elements like toolbars in window title bars. Unfortunately not every window manager/desktop environment supports this, which is why the application determines the active desktop via system variables (similar to how I solved the same issue for Go For It!).

However this does not always lead to the desired behaviour. For example, older versions of XFCE did not support CSDs, while recent releases do. So I created a pull request which lets the user specify manually whether CSDs shall be enforced, regardless of the detected desktop environment.

Inkscape Android Icon Export Plugin

If you are an Android developer/designer working on a Linux box, chances are you create your vector graphics with Inkscape. I found a very handy plugin which handles icon exporting for different resolutions according to the standard Android drawable directory naming scheme.

However, when creating launcher icons, the files are to be placed in directories prefixed with mipmap instead of drawable, so I added an option for this behaviour.

Pantheon Files

I made it possible to navigate using forwards and backwards buttons with elementary OS’s file manager. While the changes are of minor nature, this was one of my first contributions to a project that popular and significant which has shown me that submitting changes to major open source projects is “nothing to be scared of”.


Variety is a wallpaper changer for Linux desktops with a lot of advanced features, such as automatic, keyword-based downloading. When I switched from Gala to Deepin window manager, I added support for this window manager to Variety.


While most desktop environments feature handling of media keys out of the box, people like me, who run a highly customized collection of modular components on a “DIY distro” like Arch often and up needing to perform media key handling using something like xbindkeys.

The AUR package gnome-settings-daemon-compat features a patched variant of an older version of the gnome-settings-daemon that allows to run the media key handler as a standalone service with nice on screen displays for volume and screen brightness levels.

I fixed a bug which caused the screen brightness level not to be displayed correctly. The hardest part was not fixing the bug as such, but properly formulating the pull request, because the PKGBUILD downloads the original tarball from a Gnome FTP server and applies patches to it. Thus I had to replicate these steps manually to get started with development. After finding the fix I had to formulate the diff to apply to the patch file and not the actual source code, which felt slightly cumbersome.


This application makes the creation of .desktop files, i.e. application launchers on Linux desktops, easy and convenient. I created a pull request for specifying the StartupWMClass parameter which is commonly used to match windows to their corresponding launcher files. Not setting this parameter properly can lead to issues like icon mismatch in docks or program launchers.

GetSimple CMS

I have created a few plugins, themes and tools for the GetSimple CMS.

comments powered by Disqus