KWin Effects KCM on Qt5

This year i took part on the GSoC and i was being mentored my Martin Gräßlin. My project was to port the KWin Effects KCM to Qt5. After a bit of research we decide that it will be easier to rewrite them back from the scratch instead of trying porting them.


We wanted to have an application which is written completely in QML and we were able to do it because of the Qt Quick Controls. And in order to do that we had to make a lot of changes into the KWin Effects KCM, because it was based on Qt Gui so all the UI stuff needed to be rewritten from the scratch. So we came down to the conclusion that it would be easier to rewrite it. The name of the new application is KWincompositing. Also some of the KDE4 code did not make any sense on the world of Qt5. Furthermore, KWincompositing is using a more flexible model (QAbstractItemModel for those who are interested for the technical details) for loading the effects. The KDE4 model was coming out of a library which didn’t allow us to modify stuff. For example we didn’t had the ability to add an extra button for removing the effects which had being installed from the Get Hot New Stuff… And more cool stuff can be added, we might add an embedded video which will show the functionality of each effect.


What are the advantages of the new UI?

The new UI comes without any tabs, while the KDE4 version had 3 (General, All Effects, Advanced).  The existence of the tabs was making some stuff harder for the user because he had to remember which option exists in which tab. On KWincompositing all the available options exist on one page.  So you will no more have to navigate through the tabs. Also our new UI comes with more changes. E.X. the about information for the KWin Effect, the KDE4 version was opening a new windows, while the KWincompositing is showing you the information inside from a dropdown menu. At the moment the KWincompositing is under development and it is not consider to be stable.


Contact Info

If you are interesting about KWincompositing you can
contact us at or in #kwin at freenode
How can i build it?
You can download it from here.
After that you will need the kdelibs (frameworks branch), plasma-framework (master branch) and kde-workspace (master).
Our code exists on master branch.
then run cmake -DCMAKE_INSTALL_PREFIX=$KF5 -DCMAKE_PREFIX_PATH=$KF5 . && make && make install
For more information about how to build frameworks, you could take a look at the wiki.

19 thoughts on “KWin Effects KCM on Qt5”

  1. hi
    how does it deal with mutually exclusive effects (like the two virtual desktop switching ones)? Drop down menus with two entries?
    sas euxaristw

    1. Hello,

      we have move those effects to a new category (Virtual Desktop Switching).
      When you enable one of those effects and then you are trying to enable some other effect,
      then the first one is unchecked (automatically)

  2. Hi there. it’s good to simplify this without tabs (+1 for that)
    however the look is awefull. we should make it more sex. s smaler list(1/3 from window) with grouped icons, minimal text but, as you show, expand for more infos.

    the last 2/3 of the windows with normal settings, like the opengl or xrender, use improved window management and the animation speed.

    the more advanced settings unter an own, expendable area.
    with 1 rule Use lists only when there are more than 4 elements in it. because nobody likes them. they are indeed ugly shit xD

    for a better understanding i have made some mockups based on your settings
    normal view ->

    expanded advanced settings ->

    hope you can improve the settings (:

  3. While it might be a good idea to put all the options on the same tab, the effects should be in a separate tab. It looks too messy with everything.

    Also be careful with the sizing and position of the widgets. In the screenshot the rendering and scaling method pulldowns and the animation speed slider should occupy the whole width so it’s consistent with the other widgets.

  4. Once now re-writing the whole thing, please consider adding a feature that every effect/addon has a own speed setting. As a common speed setting is not enough at all.
    For usability reasons there should be change to example make a window appear and close slow but menus and window swap happen quickly.

    1. This has nothing to do with the KCM – it needs support in each and every effect. Thus it’s not just a simple thing and patches are welcome 🙂

  5. So from your point of view a cluttered interface is better than one with clearly separated spots for different kind of information?
    I don’t understand what should be the advantage of having no tabs anymore, but stuffing all information onto one screen.
    From my point of view a lot of newly written pieces of software for KDE has akward UIs these days. The most prominent example might be kscreen. So what happened with the comparative good interface guidelines from the “KDE4 era”?

  6. the GUI and expecially options on the right look really higgledy-piggledy, nice work under the hood but presentation needs improvement!

  7. Good to see some progress in this area. I am going to point you a usability flaw in the current ui design, so you can improve it before the final version:
    This dialog is cluttered. There are a lot of buttons, comboboxes and other controls not directly related between them nor with the effects list. On top of that, they don’t have a clear layout, so then, they appear as a cluttered madness to the user. Please, consider to regroup them again in tabs to reduce visual stress, and in each tab, define a sane layout for their elements.
    That’s all. The other part seems to be ok.

    And now for some good references on UI design, i suggest you (and sadly, to a good amount of kde developers) that read and study the basics of the usabilty (a good start is the wikipedia and some works of Donald Norman and Ben Shneiderman. You simply can’t design good interfaces without this knowledge. Please, at least, read it.


  8. I don’t see all the options previously available, specifically those in the 1st tab (enable desktop effects at startup, setting toggling, etc …, also from tab 3: native vs raster)

    1. “raster vs nativer” or otherwise the Graphics System option has been removed from KWin on Qt5. So it is considered to be deprecated, we don’t need it anymore.

      Yes, some options from the first tab are missing because we are waiting for those patches.
      (Yes, we have a new contributor 🙂 )

  9. Sorry, no praise from me for the UI and “get rid of tabs”. Tabs do have a function and the current implementation makes use of it. This is just a “clusterfuck” of elements in a box. So I agree with Juan.

    “From my point of view a lot of newly written pieces of software for KDE has akward UIs these days”

    I agree. Usability is going down the drain while all devs have good intentions. I guess they want to do it right this time, while porting to QML. But in the end the old screens seem to be better.

    ps. I do like the fact that you are working on KDE. This post is not meant to make you halt 😉

  10. The list looks really nice, especially with the expanding and with video preview – even better. +10 from here.

    But please: don’t remove tabs, just because they are tabs. What has the compositing or Improved Window Managment to do with an effect (from the list)? Nothing! but in your current UI it looks like they are connected, please fix this.

    Thanks and looking forward for improved designs… 🙂

  11. About the tabs – it is good you did not implement that. What should happen is that instead of ONE KCM, we need several.

    Hardware settings should not be combined with behavioral settings should not be combined with usability settings should not be combined with look & feel settings!

    I know that technically, they are all very close. But that does not matter. What matters is where they belong from an users’ point of view.

    So the effects which are only visual eye candy should be integrated in a look and feel KCM in Systemsettings. The behavioral effects (like switchers) should be in a window behavior KCM. And the technical settings should be in a hardware related location.

    Not your fault – the old KCM was probably the worst usability thing ever made in KDE. The mistake was to copy that 😉

  12. I’m sorry but this is one of the worst UI designs ever. Always look at spacing, and dont put slider in animation speed, everything looks so bad like some 7 year old put all those options wherever he found place, i don’t understand why KDE developers can’t design any UI guidelines, because KDE overall is a mess, but now its getting even worse…

Leave a Reply

Fill in your details below or click an icon to log in: Logo

You are commenting using your account. Log Out /  Change )

Google photo

You are commenting using your Google account. Log Out /  Change )

Twitter picture

You are commenting using your Twitter account. Log Out /  Change )

Facebook photo

You are commenting using your Facebook account. Log Out /  Change )

Connecting to %s