Writing Plugins for KDE Applications

In the first of what we hope to be an exciting series, Richard Moore has published a tutorial on how to write KPart plugins for KDE 2. In this tutorial, Richard gives us a glimpse into the power of KParts by demonstrating how simple it is to extend Konqueror with a plugin. In particular, he implements a plugin for HTML Validation, but the same mechanism could have just as easily been used to write a plugin for convenient Babelfish translation of the current webpage, or indeed something much more fancy. In general, once you understand what's here you should be able to write plugins for pretty much any application or component in KDE.
The full tutorial can be found on the KDE Developer Site. This story was amended and republished at 04:00 PM. Update: 01/26 04:35 PM by N: Kurt Granroth has made available various modifications to the htmlvalidator example and, best of all, has implemented a nifty BabelFish plugin. See his article for details, download the plugins here. Update: 01/28 07:55 PM by I:
As yet more proof of the power and simplicity of KParts-based plugins, Carsten Pfeiffer has created another plugin, which allows easy configuration (from a light drop-down menu) of Java, JavaScript, cookies and image loading. Thanks, Rich, Kurt and Carsten.


Way to go Richard, this is very cool.

By Shawn Gordon at Thu, 2001/01/25 - 6:00am

I aim to please ;-)

By Richard Moore at Thu, 2001/01/25 - 6:00am

One word: Amazing. I just downloaded and compiled the source code. Works like a charm. I got a new toolbar with the ABC spellcheck icon on it. The toolbar even magically goes away in FileManager mode. It's a wonderful feeling to run a browser that is as easily extendable as this.

How do I add the icon ABC automatically to the main toolbar? I tried editing plugin_htmlvalidator.rc by changing mainToolBar to Main Toolbar but that didn't work.

One funny thing is that the source code is only a few lines long but the Makefile stuff is hundreds of kilobytes. :-)

By KDE User at Fri, 2001/01/26 - 6:00am

> How do I add the icon ABC automatically to the
> main toolbar? I tried editing
> plugin_htmlvalidator.rc by changing mainToolBar
> to Main Toolbar but that didn't work.

The easiest way to do this is to use the standard edit toolbar dialog - the new action is fully integrated with the app framework.

The size of the build system is because it uses the standard KDE scripts - I think the simplicity makes it worth the size. The same scripts can build everything from plugins to complete applications. This is perhaps a slight example of over-engineering for a 100 line program...


By Richard Moore at Fri, 2001/01/26 - 6:00am

Well, I know about that, but can I make it go to the standard toolbar by default when the user installs the plugin?

By KDE User at Fri, 2001/01/26 - 6:00am

Makefiles are usually (esp KDE) automatically generated and so contain a lot of extra features, targets, etc. Theoretically, they prolly could be cut down, but it's not needed. Now a few lines of source code and a beautiful browser with extensible features is what is wonderful as that is a great combonation that I love to see.

Keep up the work KDE!

By Nicholas Hagen at Fri, 2001/01/26 - 6:00am

I'm pleased to see that I had to wait for KDE 2, but not for a bad WM !
It's really great ! It's perhaps more easy to add parts to the "explorer" under KDE in C++, than under Windows, with VB ;-)

I wish a long life to the KDE Project !

By Chucky / Outmax! at Fri, 2001/01/26 - 6:00am


By Soknet at Fri, 2001/01/26 - 6:00am

Thats true...
great work.

By Gunnar Johannesmeyer at Fri, 2001/01/26 - 6:00am

Gnome what is your answer yet?

By steve_qui at Fri, 2001/01/26 - 6:00am

Writing Bonobo components is just as easy.

By ac at Fri, 2001/01/26 - 6:00am

Dispite how you guys all hate CORBA because it's "complex" and "bloated" and "slow", Gnome's implementation is not.
It's a fact, so face it.

By ac at Fri, 2001/01/26 - 6:00am

? ? ? o.k. .... we face it :)

By thomas at Fri, 2001/01/26 - 6:00am


By kde-rules at Fri, 2001/01/26 - 6:00am

oh, stop this nonesense. bonobo is pretty good.

By kdeguy at Fri, 2001/01/26 - 6:00am

GNOME has bonobo, KDE has kparts. Deal with it. I'm sure there are advantages and disadvantages to both. What's the point it starting a GNOME vs. KDE war every time a GNOME or KDE technology is in a news item?
Whatever works for you, use it!
Might as well just end this thread, because it'll never accomplish anything claiming which technology is better.


By brandon at Tue, 2001/01/30 - 6:00am

I have tried out the libhtmlvalidatorplugin form the tutorial. After installation there was no entry for the plugin in the tools menu of konqueror. After I changed the line
kpartgui name="htmlvalidator" library="libhtmlvalidatorplugin" to
kpartgui name="htmlvalidator" library="libhtmlvalidatorplugin" version="1" in plugin_htmlvalidatior.rc it worked.

By Helmut Zechmann at Fri, 2001/01/26 - 6:00am

Strange. For me I didn't have a problem with KDE 2.1 beta2 as it worked out of the box. Perhaps Rich knows what's going on.

By KDE User at Fri, 2001/01/26 - 6:00am

After reading Rich's excellent tutorial, I was inspired to hack around for a bit. I downloaded the tutorial and starting cleaning things up. For instance:

  • BUGFIX: Put the ToolBar container outside of the MenuBar container. This was why the action created it's own toolbar instead of appending to an existing one.
  • BUGFIX: Put the toolbar action inside of "extraToolBar" instead of "mainToolBar" since that's what the extra toolbar is for.
  • CLEANUP: Got rid of a lot of the old KDE 1.x 'configure' and 'automake' stuff and replaced with new and improved KDE 2.x stuff.
  • OTHER: Created a 16x16 and 22x22 icon just for the validator
  • OTHER: Changed some references of 'spellcheck' to 'htmlvalidator'
  • OTHER: Changed '"&Validate Web Page (plugin)"' to 'i18n("&Validate Web Page")' since no other plugin claims to be a plugin AND it's always good practice to use i18n.
  • But while I was doing that, I wondered how easy it would be to create a plugin to do page translation as suggested in the above article. The result was the 'babelfish' plugin. It puts a KActionMenu list of all of BabelFish's translations (English to French, etc) in the menubar and toolbar. It's pretty slick.

    I'm not 100% sure what to do with all this so for now, I just put it up on the web for anybody to get:

By Kurt Granroth at Fri, 2001/01/26 - 6:00am

thanks a lot for your quick improved sources. The ones provided by Richard let my konqueror crash. Really excellent

Just wundering would another plugin be able to interact with the KDE.com Offers Free Docbook Compilation Service?

By Richard Bos at Fri, 2001/01/26 - 6:00am

I'm not 100% sure what to do with all this so for now, I just put it up on the web for anybody to get:

Seems to me that these might not look bad in CVS or perhaps at www.konqueror.org. Or even better, just like kde.themes.org offers themes, there should be a repository for handy plugins once more follow, no?

By Rob kaper at Sat, 2001/01/27 - 6:00am

I suggest to put at least the Babelfish plugin in CVS (after the freeze) for KDE 2.2

By Marcus Camen at Sat, 2001/01/27 - 6:00am

Would it make sense to write a cd-writer plugin for konquerer?
Or how should something like this look like?

By Michael at Fri, 2001/01/26 - 6:00am

What you want is called UDF, half implemented for linux already.

(packet-cd available here: http://packet-cd.sourceforge.net)

You can the use cdrom-RWs like floppies. What do you need a cd writer pluginsfor?

For music CDs you can't use file manager anyways, you need more settings, than you can put into a plugin.

By Moritz Moeller-... at Sat, 2001/01/27 - 6:00am

Um, apple has implemented it where the cdr is an icon on desktop, u open it, makes a normal window, u drag stuff on to it, then u throw icon in trash and it asks u if u want to burn it.

Sounds kinda stupid tho, i agree with Moritz Moeller-Herrmann :)


By Jason Katz-Brown at Sun, 2001/01/28 - 6:00am

I want to have a filemanager, were I can do the following:

* I drag the cdrom-icon onto the cd-rw icon and the CD gets copied.

* I drag a file onto the cd-rw folder and it asks whether I want to create a music/data cd.

And this has to be done in the filemanager:

* it's about files

* you have a filemanger, which replaces netscape, ghostview,... but can't even get along with /cdrw,.... that can't be! It has to satiesfy all my needs related to the filetree!

By Michael at Mon, 2001/01/29 - 6:00am

Excellent. And it looks way better than the ugly Gnome UI.

By Kirby at Sat, 2001/01/27 - 6:00am

So Gnome looks ugly? Ha!
Have you seen this yet:

By Anonymous at Sat, 2001/01/27 - 6:00am

OK, that's a nice screenshot. All right, very nice. But it has one serious flaw; the maximize/minimize/close buttons in inactive windows looks disabled (grey). There is no reason they should be -- you can use them, can't you?

And Gnome's triangular back/forward buttons are ugly. And so are KDE's blue arrows...

By Anonymous at Sat, 2001/01/27 - 6:00am

no, there is no need to make the buttons active. with the same reason you could draw everything of the border active, but that would be quite senseless. ;)
i like it that way.

By Spark at Mon, 2001/01/29 - 6:00am

That's very nice. Their panel is looking more and more like Kicker. In fact the whole desktop looks very much like KDE now except the icons look more multimedia-ish if you know what I mean.

Are there any themes like this for KDE?

By KDE User at Sat, 2001/01/27 - 6:00am

That's a very nice window border theme in that shot. It reminded me that I have not seen ANY kwm themes out there. Have I been looking in the wrong places, or are there really no themes out there except for the ones that come with KDE? I've seen some widget themes on kde.themes.org, but no window manager themes.

By not me at Sun, 2001/01/28 - 6:00am

Hm, I assumed you would post a screenshot making gnome look good, but you just posted something pretty ugly. The windowmanager sucks (who wants their close box near maximise/minimise, that's asking for trouble), the gtk 'theme' is less than inspired, and the panel looks like a chintzy kicker ripoff. I would be ashamed to have that as my desktop.

By Joe KDE User at Wed, 2001/01/31 - 6:00am

Try using a theme on the ugly GNOME UI.

By robert at Sun, 2001/01/28 - 6:00am

Thanks Rich, due to your nice tutorial I finally implemented qwertz' suggestion to configure Java/Javascript/Cookies/Image loading in a small dropdown menu, so you don't have to open the config-dialog for those often-changed settings.

Grab the plugin here.
For the cookie settings to work, you need a current kdelibs snapshot (beta2 is not sufficient), but the other settings should work just fine with 2.0.


By gis at Sun, 2001/01/28 - 6:00am

Thanks to you programmers, what a nice world you create.

An old man's wish; a plugin that brows' all the man-, info- and docu pages.

Beatiful thanks

By guran at Mon, 2001/01/29 - 6:00am

khelpcenter can do that IIRC.

By caatje at Mon, 2001/01/29 - 6:00am

please try....

open konqueror
typ in the url-field man:mount

it's a cool feature......

By steve at Mon, 2001/01/29 - 6:00am

hey, that even works with galeon! :)
gnome and kde both rock.

By Spark at Mon, 2001/01/29 - 6:00am

Anyone knows any __SIMPLE__ example of plugin app + ex. plugin? or is willing to write one?

By anon at Tue, 2001/01/30 - 6:00am

Is it necessary for the plugin's factory method to be called 'create ()'?

By Smith at Fri, 2005/04/15 - 5:00am