I realized some major problems with this approach. To give you a
better idea of what I'm actually talking about, take a look at this
schema:
http://media.beryl-project.org/Decoration-Schema.png

As you can see KWD, GWD and Emerald would run in the same
applications, as plugins.
This might cause problems because the main loops of Qt and Gtk are
conflicting here, which was actually one of the reasons why the
decorator was not a own plugin in compiz.

Another problem is the settings backend. To integrate into the desktop
each plugin uses its own backend. For example the emerald plugin uses
ini/gkey files + libemeraldengine but GWD gconf + metacity functions.
So basically we would end up with a complete window decorator, ported
to a plugin, which is not really what I had in mind.

An alternative would be, remaining the current structure of having
several decorator running as an own application and expand emerald to
an highly-customizeable and extentable decorator, which relies on
plugin architecture. The main goal of that decorator would be to
provide an independently theme and other rather experimental things
like animations.

This architecture is shown in this schema:
http://media.beryl-project.org/Decoration-Schema2.png

I'm not really sure which one would fit our needs best here (or if
there would be other solutions), so it would be the best if we could
discuss that here.

Regrads,
Patrick

2007/4/29, Patrick Niklaus <[EMAIL PROTECTED]>:
Hi,

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
mail.

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)

Regards,
Patrick

_______________________________________________
compiz mailing list
compiz@lists.freedesktop.org
http://lists.freedesktop.org/mailman/listinfo/compiz

Reply via email to