I've spent a few days building compiz The hardest part was getting all the build info needed to build a complete working set of the compiz package. The main web site is www.compiz.org, but unfortunately the documentation on building the software was sparse and a bit cryptic. It's enough for the developers to figure out how to build it, but was too sparse for a "newbie" to grab source tar balls and start building.

There is, what seems to be a popular, build script call git-compiz, which you can find here
http://forum.compiz.org/viewtopic.php?f=85&t=7744. But since I didn't read the documentation to its full detail, the script did not work for me. I looked at the script and its a very complicated script which hides the details on how to build the compiz system. So I ended up writing my own build script. Its a very dumb script, which made use of lots of cut and past coding technique. The idea is that it should show you clearly how to build the software, if you want to do so yourself on your system, without relying on embedded script functions to make the scripting more clever.

The other bit which I found confusing, was where to find all the relevant source code. I finally ended up going to git.compiz.org and ended up pulling tarballs from their repository. In the process I ran into their newest release and thus I ended up building that one with some odds and ends thrown in.

The build includes the emerald theme decorator, which seems to be obsolete or deprecated. The only officially supported decorators are the gtk and kde ones, but since one of the main reasons for my using compiz is to enjoy the eye candy of cool borders, and being able to switch between a whole bunch of new ones. It could be that there are a bunch of gtk themes, (I use gnome) but since I'm not familiar with them, and I am with the emerald ones, I spent time getting the emerald theme window decorator to build.

As for starting up compiz, I had a bunch of trouble getting that to go correctly. One frustration is that the fuzion-icon tool present in the 0.8.x series does not work in 0.9.x. So I had to rely on the compiz-manager script. And that turned out to be buggy and I had to hack it a bit.

Finally, I ended up created three tar balls. One is the binary for the build rhel6, on is a binary for the build on fedora 14, and finally there is the source tar ball, which include tar balls of all the component software packages. This is for gnome only, and I didn't bother with the KDE configuration stuff.

to use the binary tar balls, do the following. These are for x86_64 systems only

cd /usr/local
tar xvf /usr/local/tar/compiz-[[rhel6,fedora14].tar.gz
cp /usr/local/compiz- /etc/profile.d
yum install metacity-devel
yum install control-center-devel
yum install libwnck-devel
yum install librsvg2-devel # for fedora 14
yum install Cython # for fedora 14

note: I'm not sure if you'll need the yum install steps, but I needed them to build the code. When I installed both rhel6 and fedora 14, I requested a "software developers" (Or something to that effect) installation, when the installation system asked me what kind of system to install. You may have a different distribution set up so you may need to install other packages.

to build the software, do the following.

mkdir /usr/local/build
cd /usr/local/tar
tar zxvf /usr/local/tar/compiz-
cd /usr/local/build
mkdir compiz-
cd compiz-
cp /usr/local/tar/compiz- .
# Review the first couple of lines of BuildCompizFusion.sh for sanity sake.
cp /usr/local/tar/compiz- /etc/profile.d
cp /usr/local/tar/compiz- /usr/local/compiz-

I believe that should do it. When you execute the build script, you may want to redirect the output to a file and look through it for any errors. The script is rather stupid and does no error checking and just builds along blindly.

To run compiz for the first time, you need to do the following. After install the compiz.sh into /etc/profile.d, log out and log back in again. Next open up a terminal and run the command ccsm which will fire up the compiz configuration program. Next you need to enable the following,

window decoration
move window
resize window
desktop cube
rotate cube

I also enabled all the components in the "General" section except for commands and KDE Compatibility. I also enabled Animations and Animations Add-on. I also enabled all the options in the Image Loading section.

after doing that, run the command compiz-manager and that should fire up the compiz system for you.

I'm not sure how emerald gets started up, but it did for me by default when running the compiz-manager script. You can run the emerald-theme-manager to choose different themes.

Finally, I created a custom application launcher in my top gnome panel which runs compiz-manager. So when I log out and log back in again, I click on the launcher, which in turn runs the compiz-manager script for me and starts up compiz. I don't know of another clean way to get compiz to start when you log in.

One frustration I had when running compiz for the first time is that it started up, removed the metacity window decorator and left all the windows without borders. I couldn't grab anything, or move anything. As it turns out, by default, all options are turned off and you have to enable them to get basic functionality using the ccsm. So I played around with what seemed like obvious options which had to be turned on, so I don't have a definitive list of what the minimal set is. If you have trouble with the system not working right when you run compiz-manager, it could be that a compiz option is not set which needs setting with ccsm.

You can find the tar balls I built at



P.S. WARNING WARNING. I just remembered something. The file compiz.sh, one should edit the file and modify the PYTHONPATH definition. On fedora 14, make sure the python version is 2.7 and for rhel6 the version is 2.6. I should have been more careful about that file....

P.P.S I've been doing a bit more hacking this morning. In order to properly get the gnome application menu entries and icons to show up, add the following to the end of the compiz.sh file which goes in /etc/profile.d

if [ -z "$XDG_DATA_DIRS" ]; then
    export XDG_DATA_DIRS=$COMPIZ_PREFIX/share/:/usr/local/share/:/usr/share/