[compiz] Upcoming structural changes to compiz core - HEADS UP

Sam Spilsbury smspillaz at gmail.com
Sat Nov 13 02:35:17 PST 2010


Hi Everyone,

I'm going to make some big structural cleanups to core which is likely
to affect everyone here, but I believe is for the better, so I am
posting this mail now to get some feedback and make sure that we don't
tread on anyone's toes when I merge all of this stuff.

1st Change: Decorators are going in their own repo
=========================================

The decorators are going to be taken out of core and put into
individual git repositories (/compiz/decorators/kde4-window-decorator
/compiz/decorators/gtk-window-decorator) so that we can work on them
individually. Making commits to core when working on these decorators
is annoying when it comes to bisecting other problems in core and in
the decorators themselves too, so we should just move them to separate
repos.

This also helps package maintainers in the long run, since they no
longer need to do 3 separate builds of compiz in order to get a
compiz-kde or compiz-gnome package

2nd Change: GNOME Integration stuff into it's own repo
==============================================

Again, same reasons as above. Also, stuff for gnome-control-center
doesn't belong in a desktop agnostic core and even though you can
disable it by default. And it makes packaging easier.

3rd Change: Moving the following plugins into plugins main
================================================

 * cube / rotate (one of the more well known ones, but still an effect)
 * wobbly

The above reasons and also the semi-obvious ones listed next to the plugins.

4th Change: Moving the following plugins in to plugins extra
================================================

 * annotate (it's for drawing on the screen, not managing windows)
 * blur (it's an effect)
 * ini / inotify (we recommend people to use compizconfig now, but
ini/inotify should still be available in case people don't want to use
it)
 * screenshot
 * water

Same reasons as above

5th Change: GConf Schema Generation moved out of core
================================================

Currently we generate GConf schemas for all the plugins in the
CompizPlugin.cmake buildsystem. Even though you can turn it off, I
still think that keeping this in core as a matter of principle is
wrong. Also, the rest of GNOME is moving from GConf to GSettings and
we will need to write a GSettings backend and GSettings schema
generation. I don't think that we should have both in core when that
happens.

I propose that we move the GConf schema generation into
compizconfig-backend-gconf's buildsystem and out of CompizPlugin. I
have already created a simple way to add build hooks to plugins [1] so
we will install a CompizGenGconfSchemas.cmake into
${PREFIX}/share/cmake/plugin_extensions, which when installed, will
automatically be processed any time a plugin is built (so that schemas
can be built for the plugin). Of course, this leaves the problem that
core needs to be built first and then compizconfig-backend-gconf and
then core again if you want to get the schemas, but I have also found
a solution for this as well, which allows the
compizconfig-backend-gconf to automatically generate schema files for
every single plugin which has already been installed.

6th Change: Split gtk-window-decorator into two decorators
================================================

As everyone probably knows, gtk-window-decorator is really two window
decorators in one - a simple window decorator which uses cairo to draw
a decoration which changes color based on the current highlight_color
of your gtk theme and also a window decorator which uses
libmetacity-private to render the decoration based on your current
metacity theme. If you don't want to build the metacity section, you
can just disable USE_METACITY on build.

This of course, is a mess.

I think that we should split these into two decorators, a cairo one
and a metacity one and have a shared libgdkcompizdecorator.so. This
probably won't happen until the next release though.

I'll do this in about 4 days, so please give me some feedback before I do.

Kind Regards,

Sam

[1] http://git.compiz.org/compiz/core/commit/?id=b45a3a77866e037c90f13f45537187bd8bb30f0f
-- 
Sam Spilsbury


More information about the compiz mailing list