[prev in list] [next in list] [prev in thread] [next in thread] 

List:       kde-core-devel
Subject:    kwin development news
From:       Matthias Ettrich <ettrich () trolltech ! com>
Date:       2000-06-24 10:44:20
[Download RAW message or body]


During the last two weeks, we finally managed to do some things that were
really missing in KDE-2 so far, mainly on the window manager / desktop
integration.

As most of you probably know, we were actively discusing window manager hints
with the other window manager authors and things took (surprise!) much more
time than originally expected. The specs (the NET_WM protocol) is still not
completely settled, but it's stabilizing quickly. 

Bradley Hughes (creator of the black box window manager) contributed two
classes (NETWinInfo and NETRootInfo) that implements the current level of the
specs. Both classes are now in libkdecore/netwm.h. They are written in a way
that they do not depend on Qt or KDE at all but are in fact usable for any kind
of applications / window managers. Currently, they are used in both KWin and
BlackBox. For questions about those classes, talk to bhughes@trolltech.com or
have a look at http:://trolls.troll.no/bhuges/
Note: The classes  may look a bit complex (compared to purely static access
functions), but that's for optimization purposes. Accessing a single property
on X11 is one roundtrip to the server. Accessing 10 properties through static
access functions would be 10 rounctrips to the server. The netwm classes are
designed in a way to make it possible to add clever Xlib-like code later that
can read several properties in one roundtrip. Therefore you have to specify in
the constructor of a win info object what you are interested in.

For KDE applications, there's another class in addition, called KWin (see
kdecore/kwin.h).  Its purpose is to to provide easy access to the
most-commonly used NET-features with a simpler, KDEish interface. Futhermore,
it encapsulates KDE functionality not yet provided by the NET hints.  Currently
that is invokeContextHelp() and setDockWindowFor() as required panel docking.

Now that the hints were done, we could finally add functionality. The taskbar
now works almost completely again and kwin/kicker provide a nifty
iconify/deiconify animation (may remind some people on Windows, but it makes it
much easier to associate the taskbar buttons with their corresponding windows.
I would prefer to add nifty effects in the spirit of MacOS X, but unfortunately
that's not possible in decent speed with the current X11). 
KWin supports again four different focus policies (ClickToFocus,
FocusFollowsMouse, FocusUnderMouse, FocusStrictlyUnderMouse) and the
configuration module features again instant updates without the need to restart
the window manager. The two differnet Alt-Tab styles (KDE / CDE) are also back
in again.

Regarding window manager modules: the class KWinModule (from libkdecore) now
features one explicitely shared common private object. This means, it is no
longer necessary to pass kwin_module pointers to internal applets to save
memory. Simply create a new instance of KWinModule.  For those who wonder:
KWin and KWinModule will indeed work together with all window managers that will
follow the specs (and it seems most will).

Expect more desktop functionality to come during the next days, some
stuff simply isn't finished yet. Example: the icons on kdesktop still don't take
the work area (i.e. the screen minus things like menubars and panels) into
acount.  Stay tuned :)


Matthias

[prev in list] [next in list] [prev in thread] [next in thread] 

Configure | About | News | Add a list | Sponsored by KoreLogic