[Panel-devel] Pager extended for "viewports"

Timothée Lecomte timothee.lecomte at ens.fr
Tue Sep 19 12:51:24 CEST 2006


Dear all,

I have recently worked on extending the KDE pager applet to understand 
"viewports" as they are used by compiz. This is a matter of using 
existing standards called EWMH, defined by the freedesktop group. The 
modified pager actually shows all the compiz viewports, and allows to 
switch to another viewport with a simple click.

The code is somewhat of beta quality since I am not a regular user of 
compiz nor an experienced KDE developper, but I have done it for fun and 
I will continue to improve it slowly. It needs a good lot of cleanups yet.

You can find the source code and additional information on 
www.kde-apps.org <http://www.kde-apps.org>:

http://www.kde-apps.org/content/show.php?content=46021

This is a standalone archive whose content can be installed with the 
usual methods. The modified applet does not overwrite the original one. 
The main modifications with regard to the kdebase archive limit 
themselves to the four following files:

kdebase-3.5.4/kicker/applets/minipager/pagerapplet.cpp
kdebase-3.5.4/kicker/applets/minipager/pagerapplet.h
kdebase-3.5.4/kicker/applets/minipager/pagerbutton.cpp
kdebase-3.5.4/kicker/applets/minipager/pagerbutton.h

Technically, I am using the functionnality offered by the NETRootInfo 
class. I have just corrected the existing code to take into account that 
widths are no longer those of the screen but those of the viewports, and 
that offsets in window coordinates are to be used according to the 
position of the current viewport.

I have not encountered major issues to do this, apart from the usual 
time needed to get familiar with the way things work... I have one 
problem though: of you test the code posted on www.kde-apps.org, you'll 
see that window drag&drops is not completely reliable. In particuliar, I 
cannot drag windows from a viewport other than the current one, although 
the debug output seems to be perfectly consistent. 
TaskManager::findTask() may have a small problem that I need to investigate.

Here is a screenshot:

http://tipote.free.fr/compiz-pager-screenshot.png

After discussion with Fredrik Höglund and Aaron Seigo on #kde-devel, I 
think it is reasonable to think about merging it for a future release. I 
have a KDE svn account, so I will probably host the code in a branch and 
let you informed.

Enjoy, and do not hesitate to share your comments with me !

Best regards,

Timothée


More information about the Panel-devel mailing list