How to install Compiz on Fedora 17 XFCE Spin
Let’s just be clear, this is not for the faint of heart.
Why isn’t Compiz in the Fedora 17 repos?
Compiz is a replacement window manager for the GNOME window manager called Metacity. When GNOME 3 came out last year, they replaced Metacity with Mutter. Apparently there are library incompatibilities that prevent Compiz from replacing Mutter. I didn’t look into the details because we don’t care about GNOME issues, we’re XFCE users!
I’ll also note that Red Hat is currently reviewing the situation and might bring Compiz back. Who knows. I for one think it’s silly to drop a package just because it doesn’t work with one desktop environment out of many.
Why I love Compiz (you can skip this)
I like Compiz a lot and not because of the silly effects. The #1 feature to me is the grid plugin. I press Ctrl+Num7 and my window auto resizes to the top left corner. I press Ctrl+Num4, it resizes to the whole left half of the screen. If I press Ctrl+Num4 twice it takes up 1/3 of the left hand side and then I press Ctrl+6 3 times on another window and that one takes up 2/3 of the right half of the screen. You get the idea. Compiz is the best tiling window manager I’ve every used and it’s not even a tiling window manager.
It’s awesome, it makes you way more productive, and nothing even comes close to rivaling it. I could live without every other part of compiz (though the slick effects are nice) but the grid makes it worth it.
First you need to download the relevant rpm packages from the Fedora 16 repository. I’d suggest making a new directory called “compiz-rpms” or whatever you want.
Or you can be a cool kid and just do
wget -v http://archives.fedoraproject.org/pub/fedora/linux/releases/16/Everything/x86_64/os/Packages/boost-serialization-1.47.0-3.fc16.x86_64.rpm http://archives.fedoraproject.org/pub/fedora/linux/releases/16/Everything/x86_64/os/Packages/libcompizconfig-0.9.5.0-2.fc16.x86_64.rpm http://archives.fedoraproject.org/pub/fedora/linux/releases/16/Everything/x86_64/os/Packages/ccsm-0.9.5.0-1.fc16.noarch.rpm http://archives.fedoraproject.org/pub/fedora/linux/releases/16/Everything/x86_64/os/Packages/compiz-0.9.5.0-4.fc16.x86_64.rpm http://archives.fedoraproject.org/pub/fedora/linux/releases/16/Everything/x86_64/os/Packages/compiz-bcop-0.8.8-1.fc16.noarch.rpm http://archives.fedoraproject.org/pub/fedora/linux/releases/16/Everything/x86_64/os/Packages/compiz-fusion-extras-0.9.5.0-3.fc16.x86_64.rpm http://archives.fedoraproject.org/pub/fedora/linux/releases/16/Everything/x86_64/os/Packages/compiz-fusion-extras-gconf-0.9.5.0-3.fc16.x86_64.rpm http://archives.fedoraproject.org/pub/fedora/linux/releases/16/Everything/x86_64/os/Packages/compiz-gconf-0.9.5.0-4.fc16.x86_64.rpm http://archives.fedoraproject.org/pub/fedora/linux/releases/16/Everything/x86_64/os/Packages/compiz-gnome-0.9.5.0-4.fc16.x86_64.rpm http://archives.fedoraproject.org/pub/fedora/linux/releases/16/Everything/x86_64/os/Packages/compiz-gtk-0.9.5.0-4.fc16.x86_64.rpm http://archives.fedoraproject.org/pub/fedora/linux/releases/16/Everything/x86_64/os/Packages/compiz-manager-0.6.0-13.fc15.noarch.rpm http://archives.fedoraproject.org/pub/fedora/linux/releases/16/Everything/x86_64/os/Packages/compiz-plugins-main-0.9.5.0-2.fc16.x86_64.rpm http://archives.fedoraproject.org/pub/fedora/linux/releases/16/Everything/x86_64/os/Packages/compiz-plugins-main-gconf-0.9.5.0-2.fc16.x86_64.rpm http://archives.fedoraproject.org/pub/fedora/linux/releases/16/Everything/x86_64/os/Packages/compizconfig-backend-gconf-0.9.5.0-1.fc16.x86_64.rpm http://archives.fedoraproject.org/pub/fedora/linux/releases/16/Everything/x86_64/os/Packages/compizconfig-python-0.9.5.0-1.fc16.x86_64.rpm
Once you install boost-serialization, you have to prevent it from updating. Install the version lock plugin and boost-serialization.
yum install yum-plugin-versionlock yum localinstall boost-serialization-1.47.0-3.fc16.x86_64.rpm
yum versionlock boost-serialization
Install everything else
yum localinstall libcompizconfig yum localinstall ccsm yum localinstall compiz*
You could technically run compiz at this point and have wobbly windows and all that stuff, but you’d be missing one important thing… a window decorator. All your window buttons (close, minimize, ect) will be gone. So unless you feel like holding Alt to move windows and using shortcuts to close them, I’d suggest installing emerald.
You can’t just install emerald from the Fedora 16 repo because it conflicts with compiz-plugins-main.
Option 1: Use my RPM
I already built the emerald package for my own use so I’ve uploaded the rpm to my github (download here). If you’re running the XFCE spin of Fedora 17 x86_64, then you should be able to just download this and install it with
rpm -ivp emerald-0.9.5-0.1.rpm
If this works, then you’re in business and can skip to the section “Running Compiz.” But remember that if you have issues with the window bar not showing up then you should remove my emerald package and build your own.
Option 2: Compile emerald from SRPM file
An SRPM file is the source code + SPEC file (build instructions). It usually has the extension .src.rpm. I’ve uploaded the SRPM of emerald-0.9.5-0.1 to my github account. SRPM download
How to create an RPM package
Here are the instructions that I followed from the Fedora wiki
I’ve provided abbreviated instructions below, but if you have problems then you should consult the wiki guide.
Step 1: Compiz-Devel
To build emerald you need to install compiz-devel and to install compiz-devel you need install some other packages. So lets get that out of the way.
yum install libwnck-devel gtk2-devel intltool libtool gettext-devel libXres-devel
Download and install compiz-devel
wget http://archives.fedoraproject.org/pub/fedora/linux/releases/16/Everything/x86_64/os/Packages/compiz-devel-0.9.5.0-4.fc16.x86_64.rpm yum localinstall compiz-devel-0.9.5.0-4.fc16.x86_64.rpm
Step 2: Preparing your system
Install some core development tools
yum install @development-tools yum install fedora-packager
You never want to create packages as root. We’re going to create a new user named makerpm, add the user to the ‘mock’ group, set a password, and login as that user
/usr/sbin/useradd makerpm usermod -a -G mock makerpm passwd makerpm su - makerpm
Make sure you’re logged in as the dummy user and in their home directory. Then create the required directory structure.
Step 3: SRPM to RPM
Chances are that the emerald SRPM you downloaded is owned by your user account. Move it to the homedir of your dummy account and chown it to them.
Create a directory and unpack the SRPM
mkdir emerald_src_rpm cd emerald_src_rpm rpm2cpio ../emerald-*.src.rpm | cpio -i
Let’s just verify the spec file real quick
Create binary RPMS
rpmbuild -ba emerald.spec
If successful, the RPMS will be created within ~/rpmbuild/RPMS/
Lets verify that the build worked correctly
rpmlint emerald.spec ~/rpmbuild/RPMS/*/emerald*.rpm
I got a few warning but no errors. If everything went well for you, enter the ~/rpmbuild/RPMS directory and into the architecture subdirectory. Install your new emerald package from root with
rpm -ivp emerald*.rpm
You need to activate a few plugins that provide basic window manager behavior or else you will have no ability to drag, scale or close any windows as soon as compiz is activated. These plugins should be enabled by default, but lets be sure. Open the Compiz Settings Manager
and put check marks next to “Window Decoration” under Effects and “Move Window” & “Resize Window” under Window Management.
Replace xfwm4 with Compiz
Easy peasy. To start Compiz and Emerald together, just run
What if something goes wrong?
Window decorator isn’t appearing
Switch back to xfwm4.
xfwm4 --replace &
Screen locked up
Ctrl+Alt+Backspace will automatically log out you.
Taskbar and Desktop not appearing
The screen locked up, you ctrl+alt+backspaced out, and now every time you log in you get the same broken Compiz session. You need to clear your session cache.
Start Compiz Automatically
After you’ve verified that Compiz/Emerald is working correctly, you can set it to start automatically when you log in.
Start > Settings > Session and Startup > Application Autostart
Add a new item
(Description) Start Compiz
Now Compiz should start automatically, every time you log in.
Note: If something breaks and you need to stop Compiz from starting automatically but you can’t access the GUI, this is how you disable application autostarts from the command line:
cd ~/.config/autostart/ rm Compiz.desktop
I’m just going to post random bug fixes as I encounter them (hey, I never told you this was stable).
Tooltips and Menus not showing correctly
There’s a weird bug with XFCE and Compiz where tooltips don’t display correctly some times. Open up the Compiz Settings Manager (ccsm), scroll down to “Effects”, and enable “Animations.” Now tooltips display correctly every time!
Compiz crashes with the error “/usr/bin/compiz-manager: line 367: Segmentation fault”
It was to do with the grid plugin. Open ~/.config/compiz-1/compizconfig/Default.ini and remove “[grid]” and everything under it.
Compiz-manager won’t start after installing the latest video drivers, “No whitelisted driver found”
I installed the latest ATI Radeon video drivers and now compiz-manager refuses to start because my drivers aren’t in the whitelist. Rather than use compiz-manager to start compiz and emerald, we can start the both manually.
LIBGL_ALWAYS_INDIRECT=true compiz --replace --ignore-desktop-hints ccp & emerald --replace &
Setting LIBGL_ALWAYS_INDIRECT to true is necessary if you’re running AIGLX.
I’m not sure what –ignore-desktop-hints does, but its a recommend option on compiz.org
ccp uses compizconfig for settings (so you have window decorators and stuff)
Make Compiz start automatically again
Try out the above command and verify that it works.
Remove your XFCE Autostart entry via the GUI or deleting the .desktop file in ~/.config/autostart/
Add the above command to your ~/.bash_profile file
Log out and in again