Kicker and KWin

 

QuickBrowser

Kicker features a brand new disk navigator which allows you to browse files as menus in the panel. It is ~100 lines of code which is also shared by the application menu. In addition to a browser menu in your main KDE menu that allows you to quickly browse your devices such as floppy and CD drives as well as your home and KDE directories, you can now drop any folder to Kicker and add it as a browser menu. When you drop a folder on Kicker it presents you with a small menu shown below:

Here you can select whether to add the directory as a file manager URL which will open up the directory in Konqueror when clicked, or to add it as a QuickBrowser menu. If you select QuickBrowser you will get a little folder with an arrow on it.

When clicked, you will get a menu in which you can browse and lauch mimetype bound files in that and any subdirectories.

Plugin and component support

Unlike KDE1.x, where the taskbar, clock, dock area, and pager were all hard-coded, in KDE2.0 these are now dynamically loaded plugins and can be reimplemented. This allows Kicker to be customized in whatever way developers can think of. To the left is a small example of this in action. By default, Kicker uses a plugin that displays running applications as buttons inside a taskbar (see the top screenshot). But since this is a plugin, it can be replaced with whatever one likes. I myself prefer an iconbox, so I wrote a little iconbox called "Kasbar" and replaced the taskbar with that in my configuration. Now I get that instead, and the taskbar code is never even loaded. On my actual system Kasbar sits on the top-right and the panel is at the bottom. I cut out the extra space because I run 1280x1024 ;-)

The iconbox is interesting itself. The number on the right is the desktop number, and if you click on a app on another desk KDE will automatically switch to it and bring up the window. The little glyph shows if windows are minimized, and switches between a down arrow for minimized and a rectangle for normal windows. Kasbar can be dragged to any corner, set to vertical or horizontal mode, and has configurable maximum rows/columns. For example, to the right is Kasbar configured with a maximum of 3 rows.

Another small example of Kicker plugins in action I have done is KoolClock. It's a small hack to use LCD numbers for the clock. I got to make it a little prettier once other KDE2 stuff is done, but it still makes a good example. Here is the default clock and the KoolClock.

Normal plugin KoolClock

Also, please note that all this is different from the applet API, which is not implemented as shared libraries but as normal applets.

Easy non-KDE application support

Kicker features an easy shortcut to using non-KDE applications inside the panel. If you drop an executable onto the panel it will automatically bring up a dialog asking for a command line, whether to run it inside a terminal, and let you select a custom icon. Previously this would of required setting up a new .kdelnk file to get the new icons and such.

Recent Document Menu

KDE now features a Recent Document menu accessible from the main KDE menu. This presents a list of documents recently opened by KDE applications and allows you to easily reopen them at a later time. It has settings for the maximum amount of documents to contain, a button to clear all the items at any time, and can be turned on and off.

Extensive and easy applet API

The applet API in KDE is now much more extensive and easy to develop for. Developing an applet is almost identical to using a normal widget, except you get methods to retrieve the geometry of the panel, position, and set "stretch" values to control how big your applet is inside Kicker (in addition to the option of a fixed sized applet).

Kicker also now supports client/server menus for applications to add items to the KDE menu. This is not restricted to Kicker applets but is available to any application. By using a class very similar to a stripped-down version of the normal menu class, KDE apps will internally use the new DCop communication protocol to tell Kicker to add and remove application specific menus. You simply create a instance of the new PanelMenu class, add items, and delete it when done. Kicker and DCop takes care of the rest.


KWin

KWin is a brand new window manager being developed for KDE2.0 and replaces the KWM manager currently supplied with KDE. It's main features are the intent to be complaint with the new WM-SPEC specification being developed by a consortium of free window manager developers once the spec is finished, and a very small and streamlined implementation that is extendable via plugins.

The plugin design is really an innovative thing about KWin. Most modern window managers are stuffed with code for theme capabilities, wacky client window hacks, etc... Sometimes this equals or even exceeds the amount of code to actually manage the windows. KWin allows plugins to take care of all this, so by itself it can remain a very small and optimized window manager while still allowing for the user to select all the features he/she wants. KWin can then load the features the user wants dynamically, while features the user never will use can remain on disk or even be deleted completely.

This leads to all sorts of interesting possibilities, such as being able to load different dedicated plugins for drawing window decorations and having multiple theme engines. For more information on how this is working please visit my widget theme page, which also goes over KWin client decoration plugins.