Compiz Fusion 0.5.2 from source on Ubuntu Feisty

O.K. Last night I followed this very well refined Howto on the Compiz Fusion forums. It works like a charm… In fact there isn’t really much to add, but I’ll explain a few steps along the way. And make a few comments where something might be interesting.

The finished CF works really well on my PC (An AMD 3200+ with a rather old and shabby Nvidia 6200 card). Some of the new effects are very cool (your windows can fold up like a paper aeroplane and the Shift Switcher is pretty neat) and the whole thing feels very smooth – especially the cube rotation and expo.

Here we go then.

Firstly, this build is for a normal Ubuntu Feisty setup. That means we are talking Gnome (not KDE or XFCE). Also, as I only have a Nvidia graphics card, that’s what you get here. The HowTo does explain what to do if you have ATI or Intel cards, but I can’t comment.

As a safeguard I strongly recommend you first remove any existing compiz, beryl, compiz fusion stuff you have previously installed. Search through synaptic and uninstall everything that’s relevant.

All building, downloads etc I did in a single directory under my home_dir (~). I called it “compiz”.

This build is from source code and so won’t be recorded in the package manager. Therefore, you will probably want to keep this directory tree around so, you can – in the future – use make uninstall to remove this software; for example when the Ubuntu repo gets updated to include the latest and greatest.

Having just said that – I have read reports that local compilation provides better performance than a “one-size-fits-all” build that you get from a deb repository. I don’t have the time or inclination to test this theory but I am a big fan of building things from source. I do believe you get a better system and much less baggage too. You also grok (really understand) your system much better.

For those who are interested in learning more – I REALLY REALLY recommend you take a look at Linux From Scratch. You will learn more than you ever thought possible, and it will help you in trouble shooting your own systems (whatever they are) when you come back to whatever distro is your preference.

Finally – I also found a script yesterday, that purports to do what you see below automatically. I downloaded it and tried it but it is wanting in a number ways. It failed for me, it made too many assumptions about my system and tried to install stuff that I neither wanted or needed. In short you lost control… It isn’t hard to find it on-line but I don’t recommend it. The whole process below only took me about an hour. Took me much longer to write up though ๐Ÿ™‚

Following the Howto, first of all get all the tools needed to build from source:
sudo apt-get install git-core automake build-essential intltool libtool python-pyrex python2.5-dev
sudo apt-get build-dep compiz

Git is interesting. It is a version control system similar in some respects to SVN (Subversion) and CVS (Concurrent Versioning System). It is used by some pretty big software projects including the Linux Kernel.

Make and then move into our directory:
mkdir ~/compiz
cd ~/compiz

Get the compiz core 0.5.2 tarball and extract it:
wget http://xorg.freedesktop.org/archive/individual/app/compiz-0.5.2.tar.gz
tar xf compiz-0.5.2.tar.gz

Now get all the packages (in source code form) from their git repository:
git clone git://anongit.compiz-fusion.org/fusion/libraries/bcop
git clone git://anongit.compiz-fusion.org/fusion/compizconfig/ccsm
git clone git://anongit.compiz-fusion.org/fusion/compizconfig/libcompizconfig
git clone git://anongit.compiz-fusion.org/fusion/compizconfig/compizconfig-python
git clone git://anongit.compiz-fusion.org/fusion/plugins-main
git clone git://anongit.compiz-fusion.org/fusion/decorators/emerald
git clone git://anongit.compiz-fusion.org/fusion/decorators/emerald-themes
git clone git://anongit.compiz-fusion.org/users/crdlb/fusion-icon

Also retrieve two optional packages that are well worth having:
git clone git://anongit.opencompositing.org/fusion/plugins-extra
git clone git://anongit.opencompositing.org/fusion/plugins-unsupported

We are now ready to build. Move into the directory we made when we extracted the compiz tarball earlier and run the standard CMMI command (C=Configure, M=Make, MI=Make Install):
cd ~/compiz/compiz-0.5.2
./configure --prefix=/usr/local --disable-kde && make && sudo make install &&
cd -

The double ampersands are a useful thing – they check for successful completion of the previous command before proceeding to the next. You will be prompted for your password before the make install command is run as you require root privileges to write to the /usr hierarchy. The cd - command takes you back to your previous directory.

Let the system know where to find the configuration information.
export PKG_CONFIG_PATH=/usr/local/lib/pkgconfig

Now we build the packages we downloaded earlier by moving into the relevant directories and running the commands as shown and in this order:
cd ~/compiz/bcop
./autogen.sh --prefix=/usr/local --disable-kde && make && sudo make install &&
cd -

cd ~/compiz/libcompizconfig
./autogen.sh --prefix=/usr/local --disable-kde && make && sudo make install &&
cd -

cd ~/compiz/compizconfig-python
./autogen.sh --prefix=/usr/local --disable-kde && make && sudo make install &&
cd -

cd ~/compiz/plugins-main
./autogen.sh --prefix=/usr/local --disable-kde && make && sudo make install &&
cd -

This is the configuration manager which is a Python application and so has a different build and install command sequence:
cd ~/compiz/ccsm
sudo python setup.py install &&
cd -

cd ~/compiz/emerald
./autogen.sh --prefix=/usr/local --disable-kde && make && sudo make install &&
cd -

cd ~/compiz/emerald-themes
./autogen.sh --prefix=/usr/local --disable-kde && make && sudo make install &&
cd -

cd ~/compiz/plugins-extra
./autogen.sh --prefix=/usr/local --disable-kde && make && sudo make install &&
cd -

I had a problem with building this package. It failed to compile looking for a header called text.h. A bit of googling showed me this is installed by the plugins-main package so I went back and rebuilt the plugins-main package, made sure it installed properly then came back to here. Second time around it built fine.

cd ~/compiz/plugins-unsupported
./autogen.sh --prefix=/usr/local --disable-kde && make && sudo make install &&
cd -

This makes sure that your Xorg configuration is correctly setup to work with the Nvidia binary driver. If you are using ATI or Intel graphics chipsets, please see the HowTo for what to do with them.
sudo nvidia-xconfig --add-argb-glx-visuals -d 24

This is the new startup package that starts CF itself and provides a small icon on your toolbar (top right by default) that gives you access to the various configuration applications and options:
cd ~/compiz/fusion-icon
make &&
sudo make install &&
cd -

That’s it. Compiz Fusion is now built and installed. To run it from your terminal type fusion-icon &. To have it start automatically, add the command fusion-icon to your System>Preferences>Sessions utility and give it a meaningful name.

If you find a package fails to compile, as I had above, try getting the very latest code by pulling the source back from the git repository. Enter the relevant directory for each package and simply type git-pull. This will check for any file changes and upload only those that have changed. Then use the CMMI command above to rebuild and install as before.

I hope this is useful and have a lot of fun…

Update 01/09/07. Diego asked me to post my xorg.conf. Here it is:

=======Begin xorg.conf=======

# nvidia-xconfig: X configuration file generated by nvidia-xconfig
# nvidia-xconfig: version 1.0 (buildmeister@builder3) Thu Nov 9 17:55:20 PST 2006

# /etc/X11/xorg.conf (xorg X Window System server configuration file)
#
# This file was generated by dexconf, the Debian X Configuration tool, using
# values from the debconf database.
#
# Edit this file with caution, and see the xorg.conf(5) manual page.
# (Type “man xorg.conf” at the shell prompt.)
#
# This file is automatically updated on xserver-xorg package upgrades *only*
# if it has not been modified since the last upgrade of the xserver-xorg
# package.
#
# If you have edited this file but would like it to be automatically updated
# again, run the following command:
# sudo dpkg-reconfigure -phigh xserver-xorg

Section “ServerLayout”
Identifier “Default Layout”
Screen “Default Screen” 0 0
InputDevice “Generic Keyboard”
InputDevice “Logitech MX1000” “CorePointer”
EndSection

Section “Files”

# path to defoma fonts
FontPath “/usr/share/fonts/X11/misc”
FontPath “/usr/share/fonts/X11/cyrillic”
FontPath “/usr/share/fonts/X11/100dpi/:unscaled”
FontPath “/usr/share/fonts/X11/75dpi/:unscaled”
FontPath “/usr/share/fonts/X11/Type1”
FontPath “/usr/share/fonts/X11/100dpi”
FontPath “/usr/share/fonts/X11/75dpi”
FontPath “/var/lib/defoma/x-ttcidfont-conf.d/dirs/TrueType”
EndSection

Section “Module”
Load “i2c”
Load “bitmap”
Load “ddc”
Load “extmod”
Load “freetype”
Load “glx”
Load “int10”
Load “vbe”
EndSection

Section “InputDevice”
Identifier “Generic Keyboard”
Driver “kbd”
Option “CoreKeyboard”
Option “XkbRules” “xorg”
Option “XkbModel” “pc105”
Option “XkbLayout” “gb”
Option “XkbOptions” “lv3:ralt_switch”
EndSection

Section “InputDevice”
Identifier “Logitech MX1000”
Driver “evdev”
Option “Name” “PS2++ Logitech MX Mouse”
Option “HWHEELRelativeAxisButtons” “7 6”
EndSection

Section “Monitor”
Identifier “Generic Monitor”
HorizSync 28.0 – 64.0
VertRefresh 43.0 – 60.0
Option “DPMS”
EndSection

Section “Device”
Identifier “nVidia Corporation NV37GL [Quadro FX 330/GeForce PCX 5300]”
Driver “nvidia”
EndSection

Section “Screen”

#Option “AllowGLXWithComposite” “True”
#Option “RenderAccel” “True”
Identifier “Default Screen”
Device “nVidia Corporation NV37GL [Quadro FX 330/GeForce PCX 5300]”
Monitor “Generic Monitor”
DefaultDepth 24
Option “NvAGP” “0”
Option “DamageEvents” “True”
Option “UseEvents” “True”
Option “TripleBuffer” “True”
Option “NoLogo” “True”
Option “AddARGBGLXVisuals” “True”
SubSection “Display”
Depth 1
Modes “1280×1024” “1152×864” “1152×768” “1024×768” “800×600” “640×480”
EndSubSection
SubSection “Display”
Depth 4
Modes “1280×1024” “1152×864” “1152×768” “1024×768” “800×600” “640×480”
EndSubSection
SubSection “Display”
Depth 8
Modes “1280×1024” “1152×864” “1152×768” “1024×768” “800×600” “640×480”
EndSubSection
SubSection “Display”
Depth 15
Modes “1280×1024” “1152×864” “1152×768” “1024×768” “800×600” “640×480”
EndSubSection
SubSection “Display”
Depth 16
Modes “1280×1024” “1152×864” “1152×768” “1024×768” “800×600” “640×480”
EndSubSection
SubSection “Display”
Depth 24
Modes “1280×1024” “1152×864” “1152×768” “1024×768” “800×600” “640×480”
EndSubSection
EndSection

Section “Extensions”
Option “Composite” “Enable”
Option “DAMAGE” “Enable”
Option “RENDER” “Enable”
EndSection

======= End xorg.conf =======

Compiz Fusion 0.5.2 released

Yesterday the team announced the release of the first development release of Compiz Fusion. This means it is still “unstable” but almost certainly more stable than the temporary Ubuntu repo we have been using which builds “deb” packages automatically from their git repository on an almost daily basis.

Here’s a nice video showing off the latest eye candy you could be getting on your desktop ๐Ÿ™‚

According to their release notice, the odd release numbers are for unstable and the even numbers for stable code. So the first stable release will be 0.6 but may actually have less features than the 0.5 release if particular code is still deemed to be unstable… (Hope that makes sense?)

Anyway – this thread discusses how to build 0.5.2 from source on Ubuntu if you want it now. Or alternatively I guess, just wait for the very kind host of the unofficial Ubuntu repos to come back off holiday ๐Ÿ˜‰

If I get chance to I’ll probably build it tonight and document the process here once I am happy it works.

Compiz Fusion on Ubuntu Feisty

Compiz Fusion on Ubuntu FeistyI used to play around with Beryl on my computer as it looked really cool and had a rather rapid development process ๐Ÿ˜‰

However, after the feuding between the Beryl fork and the original Compiz crew calmed down, they have now – happily – rejoined forces with a new approach called Compiz Fusion.

From my initial experiences with it (now a couple of weeks), it is seems more stable than Beryl was and seems to run more smoothly! The new configuration tool is very nice (although lacking any help whatsoever) and effective. And, there are some very nice new features.

So, here’s how I installed the latest Compiz Fusion on Ubuntu Feisty. NOTE: This is not officially released software and might break things so don’t try this if you are unsure. Having said that, it hasn’t broken my set-up.

A member of the Compiz Fusion team has set up a repository for Ubuntu. The instructions can be found on this thread of the forum. http://forums.opencompositing.org/viewtopic….

But to simplify it here are the steps for Ubuntu Feisty i386. (There is a separate repo if you are running the 64bit version, instructions on the thread above). Open a terminal and cut and paste the text that looks like this.

1, Add the new repositories to your synaptic manager:

sudo gedit /etc/apt/sources.list

Simply cut and paste the info below into the bottom of your /etc/apt/sources.list file

# Treviรƒยฑo's Ubuntu feisty EyeCandy Repository (GPG key: 81836EBF - DD800CD9)
# Many eyecandy 3D apps like Beryl, Compiz, Fusion and kiba-dock snapshots
# built using latest available (working) sources from git/svn/cvs...
deb http://download.tuxfamily.org/3v1deb feisty eyecandy
deb-src http://download.tuxfamily.org/3v1deb feisty eyecandy

2, Add the key for the repo:

KEY=81836EBF; gpg --keyserver subkeys.pgp.net --recv $KEY && gpg --export --armor $KEY | sudo apt-key add -

3, Update your local package list:

sudo apt-get update

4, If you have an old version of compiz installed, remove it first…

sudo apt-get remove compiz-core

And do agree to remove “ubuntu-desktop” if you are asked, it’s only a meta-package and won’t harm your system.

5, To download and install the base packages…

sudo apt-get install compiz # compiz-gnome AND/OR compiz-kde

6, Install the configuration tools…

sudo apt-get install compizconfig-settings-manager # compizconfig-backends-* ?!

7, To install the Fusion packages…

sudo apt-get install compiz-fusion-*

8, Finally to run Compiz, open a terminal and type:

compiz --replace

or press ALT-F2 and enter the command in the box.

That’s it!CompizConfig Settings Manager

Under your System > Preferences menu you should now have CompizConfig Settings Manager. Run that and you can play about to your hearts content. In my machine, I have a very old GeForce PCX 5300 graphics card. It really is nothing special and it cost me about ร‚ยฃ20 from eBay. It runs Compiz Fusion very nicely indeed.

ExpoThe best-looking features, for me at least, are the reflections that have been added to the cube, and the superb looking Expo plugin. I find myself using the expo plugin more and more because it is fast, and using the cube + rotation just to impress those who use Windows! To see expo work with the default settings, enable it in the CompizConfig Settings Manager [CCSM] and move your mouse to the top left corner or hit Super-E. (Super being the Windows key on my keyboard.)

Ring Switcher

Another neat tool is the Ring Switcher. This lets you rotate all your open apps in front of your very eyes and it looks very impressive. To use the Ring Switcher, enable in CCSM, and use Super-Tab.

I have now had Compiz Fusion on my computer for a few weeks with very few glitches or issues. Occasionally a window or a drop down menu may be black but I have had no spectacular failures (fingers crossed and all that). The black windows seems to be a memory issue. If I close a few other apps then the problem goes away. Of course if you get really stuck, just use CTL-ALT-BSPACE to restart X!

Here’s the new Compiz Fusion home I recommend the forum and the blog as good places to start!

Now who thinks Vista cool? You couldn’t even get Aero to run on this computer!