Sam Spilsbury
2010-Nov-13 10:35 UTC
[compiz] Upcoming structural changes to compiz core - HEADS UP
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