Guest Post: A Hello From KWin GSoC

This is a guest post by my Google Summer of Code student Arthur Arlt.

Hello everyone,

in this very first blog post in my life I first want to introduce myself. Then I 
want to give an overview on my GSoC objectives and say some words about code I 
already produced for KDE’s compositor KWin.
My name is Arthur Arlt. I am studying Applied Computer Science (MSc) at the 
University of Heidelberg. I reached my Bachelor degree at the University of 
Mannheim, where I studied Software- and Internet Technology (BSc). I still 
live in Mannheim and shuttle to the university, since all my friends live here 
and Heidelberg is not that far away (and much more expensive to live, as 
well;).
My GSoC project deals with refactoring KWin’s workspace class. In consequence 
of more than twelve years programming work this class grew to a giant 
‘monster’. Very many functionality was just added to the workspace class 
leading to a header file of almost 1500 lines of code. The objective of my GSoC 
project is to refactor this one big class, structuring the functionalities to 
reasonable own classes as modules. On the fly it is possible to rename 
variables and functions to follow a consistent naming scheme.
Doing all this is not only just for fun. The main reason for the 
modularization of KWin is to ease the port to Wayland. Also some 
functionalities are not required for special devices like tablet PCs. E.g. the 
functionality of screen edge handling is not needed for devices controlled by 
touchscreen.
In the past three month I started to code some peanuts for KWin. The first idea 
I had was to extend the quick tiling feature with tiling to quarters. My 
mentor Martin Gräßlin showed me where the changes have to take place and I got 
my first feature implemented :) As a foretaste of my GSoC I moved the outline 
functionality to an own class. This made it possible to easily write an effect 
for outlining windows and replace the old X implementation.
My first GSoC step was to remove the non-working functionality of TopMenu. As 
replacement we now have Kubuntu’s AppMenu. The second step I am currently 
working on is to break out the TabBox (Alt+TAB) from workspace to an own 
class.


Cheers!

=-=-=-=-=
Powered by Blogilo

13 thoughts on “Guest Post: A Hello From KWin GSoC”

  1. One thing you forgot in your quick tiling addition was an option Tor turn it off!
    I use the maximize and left/right tiling excessively every day but I don’t need that 2×2 grid for windows but you cannot turn that of individually.
    Would be nice if you could implement that as well, thanks :) otherwise nice job, dude ^^

    1. I do use the quick tiling in the corner but I think it’s drop area(the length of the side of the screen where it should be dropped) is too large. I think the drop area should be half of what it is now. This is because it is accidentally triggered when I want to go from maximised window to left tiled window. Also making it half the size would still be ok because reaching the corner is quite easy.

      1. +1 to Shafqat and xapient about reducing the trigger area.

        If I want to tile the window to the top-left corner, I aim for the top-left corner (which is very easy to do) – not for the upper-30% of the left edge.

        It makes me accidentally trigger the top-left placement all the time, when actually I want the left (semi-maximized) placement.

        (Note that you usually drag a window by it’s title bar, which is usually in the upper part of the screen even for most non-maximized windows. So when you drag a window to the left screen edge, you will naturally be more likely to hit the upper third of the left screen edge.)

      1. i agree with shafqat in one point… the area that triggers the effect is a little bit too large.. i think its 1/4 of the screen height..

        i would be ok if it was 1/5 or even 1/6 (it even would be ok if it was just the corner – works great with “present windows” for example and does not interfere since it obviously blocks everything that would be triggered at the corner of the screen)

      2. You have an option to disable maximizing or partial maximizing independently, why would a third option to disable that 2×2 grid make it soo much more complex?

        1. Because it makes it more complex – believe me, I know the code (in fact I wrote most of it) ;-)

          1. Quarter screen tiling is too disturbing. Why would it be more complex?

            If it is then, just make drop area adjustable. The left and right half screen drop areas are too small.

            1. I am not going to change my mind by repeating again what has already been said. Pleae believe me that I am able to judge the KWin code better than someone else. In fact I would not even accept a patch which is working.

              1. i totally understand…
                so what’s your statement to the size of the trigger area…
                ok? to big? what’s your opinion about this?

                1. My opinion on that? There is no way to find a size which makes everyone happy. The current size makes sense as we discussed it and thought about it. So no need to change. Final word from my side on that matter.

                  1. discussion and thoughts are nothing compared to real user experience.. with the actual size it obviously gets triggered unintended – but who knows whats better.. my girlfriend triggers “present windows” (upper left corner) unintended all the time ^^

  2. Hey!

    I like the new tiling extension very much!

    Ecpecially when you have a large monitor, it provides a fast way for aligning 4 Konsoles evenly on the hole screen.

    Thanks and good luck, g=

Comments are closed.