![]() |
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. |
![]() |
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 ;-)
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.
Also, please note that all this is different from the applet API, which is not implemented as shared libraries but as normal applets. |
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.
![]() |
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. |
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.
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.