[compiz] Plugin Interface for Decoations

Patrick Niklaus patrick.niklaus at googlemail.com
Sun Apr 29 11:11:43 PDT 2007


this email is basically the result of a small discussion which made me
think what the real end-goal of my work on Emerald-2 would be. Since
Emerald has already a extensible system (Engines) I thought about
giving the engines wider access, so that they are more like plugins.
However the first thing needed is a nice plugin API. The base for that
is the new settings backend of Emerald-2. Settings backend might not
be the right word here, since it handles a lot more, it could also be
called engines backend. (=> libemeraldengine)

The next step is, taking GWD (which has a proper usage of
libdecoration), port it to that system and also port most of Emerald
features to it. This includes pixmap buttons and usage of the button
interface for libdecoation, which will described in detail in another

Basically we would end up with a better Emerald, working name Emerald-2.
Now, if we got that working properly we need to think about what will
be moved to a plugin and what will stay in core. At this point we also
need an exact definition of the plugin API. A first general definition
can be found below.

It would be really nice if I could get some feedback or suggestions on my plans.

BTW. Please do not start a flame war because of the working name, it
will be probably changed and I don't want to decide about it yet, but
since it shares most of its features I choose this name for now.

==== The Plugin Interface ====

* Settings:
  - make use of libemeraldengien settings backend
    => could cause problems because Metacity and KDE have different backends
  - maybe extent it so it would better fit our needs
  - but keep in mind that we won't need a second implementation of the
compiz options system

* Event handling:
  - provide notifies for plugins for some specific events
  - not sure which one will be needed
  - however resize/move/enter/leave will probably be included

* Integration into Emerald-2:
  - standard button drawing will be probably handled by plugins
  - window title drawing probably too
  - we need a system so plugins can sign up for providing functions
    => wrapping stack like in compiz
    => slot system, so only one plugin at the same time can sign up for it

* Integration into DE's:
  - add a plugin for Metacity support
  - maybe port the KDE decoration also to a plugin (if thats possible)


More information about the compiz mailing list