Compiz Fusion Plugin Development

compiz-spinner-rimsIn between the massive changes to the site (see my twitter) and setting up new developer relationships, I was inspired to work with Compiz Fusion – or what most now just call Compiz. I’ve always wanted to do some plugins, but the problem is jumping into their largely undocumented API. That’s changing a bit now, since there seems to be a better effort and they’ve got a nice start with the Compiz Wiki. Doesn’t it always seem you can just throw MediaWiki (or in this case MoinMoin) at something and it appears to fix itself.

In the past we’ve all pimped out Compiz to the point where we’re basically expecting a Spinner Rims plug-in, but I want to change that a bit. Firstly I think that many effects use too much blending with Opacity, which can be sluggish on older or low-performance hardware. Plus I think the Dodge focus effect, Show Desktop, and other effects that simply “move” windows look really clean.

A nice developer on the Compiz Forums helped me out in my post about modifying the animations plugins, which led me to this git repository:

git clone git://git.compiz.org/users/smspillaz/simple-animations

From there you can follow the thread on how I simply modified his Fly In effect to be capable of using the Minimize and other events. It doesn’t do exactly what I want, but the point is that the code is already integrated with Compiz, which is easily half the battle. I’m now in the process of doing a couple of neat things:

  • As I decrypt the inner workings of their plugin API I would like to document
  • The best way I can think of to document is to wrap it in Java and provide bindings. This kills two birds with one stone: Java bindings and it’s a lot nicer to use javadoc over something like doxygen. (see our doc/ archive)

The result so far was this:

Flash video haters can download an Ogg Video (1.5Mb)

Let me know what you think. I’m also looking for some help with building 32-bit packages. If you want my code it’s available here:

bzr branch http://santiance.com/bzr/compiz-fusion-plugins-simple

And just for kicks anyone with 64-bit can have this package that seem to be working rather nicely for me.

Update:

Anyone interested in compiz 0.9 docs (C++) see: http://santiance.com/doc/compiz/html/annotated.html

4 Comments

  • Documentation would be very nice!

    Most of the developers are too busy hacking / IRLing these days anyways to do proper documentation :O but there is a start to some documentation as to how things generally work. Dennis was talking about getting doxygen up and running but it hasn’t really happened as of yet.

    Most of the core documentation for the API is around, just not exactly obvious. The internals of plugins though are not well documented _at_ _all_ and neither are a lot of the plugins with extensible interfaces (usually the developer of plugins that would make sense as plugin-plugins write the interface for the original plugin as much as they need to to facilitate their plugin-plugin). Hence the reason why I had to explain how animation extensions worked to you. Fail on our behalf.

  • As I mentioned on IRC we have some starting documentation here:

    http://santiance.com/doc/compiz/

    That’s for the git HEAD as of at least October 20th, 2009

  • I like the video.
    Dodge looks great when you have a bunch of small windows, but when you use maximised windows a lot, it feels very awkward. I use Fade instead.

  • [...] while ago I tweaked Sam’s simple animations plug-in for Compiz, mainly so windows I minimized would slide away to match some of my other settings. This [...]

Post a Comment

Your email is never shared. Required fields are marked *