Season of KDE 2006

Tabs (window groups) support in KWin (KDE Window manager)

A Season of KDE 2006 project by Martin Böhm
Mentored by Lubos Lunak

Project Details

 I'd like to work on the KDE feature that is described on the KDE Ideas page – "Tabs support in KWin". That means I would like to implement grouping support and grouping windows management in the KDE Window manager called "KWin" and included in the KDE . The feature should allow users to easily group windows into other windows, moving groups of windows instead of one by one etc. This feature should be fairly eas y to use (dragging the window on top of the other holding the middle mouse button as in Fluxbox or maybe using a shortcut to group the window with the closest one). This feature could be configured through kcontrol – this way the user can choose default window groupping of certain applications (e.g. the mail client and the web browser) and other options as well. The implementation should have almost no effect on over all performance of KDE.
 I'm applying for this certain task because I think it would help users to organize their workplace in a more efficient way. I use this feature in the Fluxbox window manager every time I'm working with it. I would use it in KDE, too. I know many users who see the benefit of tabbed windows in browser or terminal emulators (Mozilla Firefox users, Konsole users). I think a more general approach to tabbing would be convenient because the management of windows and groups of windows is clearly the window manager's job (and not the application's).
 I don't have any vacation or summer classes planned. I'll be able to work throughout all summer. The amount of time spent depends on the progress of my work (more pressure, more time). I'd prefer to work around 6-8 hours a day (6-7 days a week).
 I'm skilled at both C and C++ programming. I've read a lot of open-source code, although I haven't contributed much code yet (I want to change that this summer and SoC is really a great opportunity to do so). As for scripting languages, I prefer mostly Python, although I programmed in others too (PHP, bash, basics of Perl). I develop in UNIX environments (GNU/Linux, sometimes BSDs) only. As for Qt/KDE libraries , I don't know them very well yet, but a) I would gladly (and fast) learn them if I got accepted and b) the KDE Ideas page explains that KWin doesn't use much functionality from the libraries anyway. I also have web development experience (PHP, X(HT)ML,CSS) but that`s not essential for this assignment.
 As a GNU/Linux "power user" and former server administrator, I have tried and compared many UNIX programs, including window managers. I've used,configured and checked to source code of Blackbox,Fluxbox,Enlightenment,XFCE and KDE. The only window managers that are still in my system are (incidentally) Fluxbox and KDE. I use KDE a lot and I know a lot about its functionality and features.
 I don't think there will be any language barrier. I speak English and German quite well, so I can communicate with the German KDE developers if necessary. Even better, the developer who is supposed to men tor this project (according to KDE Wiki) is Lubos Lunak, also a Czech citizen (as far as I know) – that not only eliminates the communication barrier, but also gives the chance of meeting the mentor in person.< br>  I think I will work under my mentor's supervision without a problem. I'm used to working at home because I worked for a small Internet provider company as a system administrator (and partially as a web de veloper) last year. The communication between me and my superior was similar to the communication with the mentor of my project, too.
 I haven't applied for any other Google Summer of Code projects because I want to concentrate on this task and accomplish it without delays or, preferably, before the end of the Summer of Code. If I had ti me after this feature is complete, I'd work on other KDE features which my mentor suggested (I have some humble ideas about superkaramba, but the mentor has the last word).
 Why do I think I am the best programmer for this work? It's because I really believe in the usefulness of this feature in KDE, because I am willing to spend almost all of my free time working on it and I won't participate in other SoC projects, because I know how this feature works in other window managers and (last but not least) because I have no problems working independently and under a foreign mentor.

[ Edit ]