Creating your own GNOME session based on cairo-dock and Compiz

Personally I absolutely do not like the gnome-shell in GNOME 3. I actually even hate it: it is slow, messy and cumbersome to use and I have the feeling that developers are not listening to criticism. Obvious and trivial design bugs which are well known, are totally ignored (bug 662738 is an example).

For that reason, I went looking for an alternative desktop. KDE is way too bloated for a netbook with 1 GB of RAM, while XFCE is not as polished as a traditional GNOME 2.32 desktop. The best alternative I could find out right now, was to just replace the GNOME Shell by a custom panel or dock implementation. In the end I chose cairo-dock: it is written in C, so it is probably not as memory hungry as AWN (which uses Python) and Docky (which uses Mono, which I also consider as a possible patent minefield). Cairo-dock is also actively maintained. I paired cairo-dock with the compiz window manager to get some nicely looking desktop.

First we need to install all componenents:

# apt-get install compiz compizconfig-settings-manager compizconfig-backend-gconf compiz-fusion-plugins-extra compiz-fusion-plugins-main compiz-fusion-plugins-unsupported cairo-dock gnome-tweak-tool

Now we create a new X session, which can be chosen in our login screen. First we need to make sure that GNOME understands that compiz is actually a kind of window manager. This is done by creating a desktop file /usr/share/applications/compiz.desktop:

[Desktop Entry]
Type=Application
Name=Compiz Window Manager
Exec=/usr/bin/compiz
NoDisplay=true
X-GNOME-Autostart-Phase=WindowManager
X-GNOME-Provides=windowmanager
X-GNOME-Autostart-Notify=true

Then we create a custom GNOME Session which starts compiz as window manager and cairo-dock as desktop shell. The file /usr/share/gnome-session/sessions/cairo-dock.session looks like this:

[GNOME Session]
Name=cairo-dock

RequiredComponents=cairo-dock;gnome-settings-daemon;
RequiredProviders=windowmanager;notifications;
DefaultProvider-windowmanager=compiz
DefaultProvider-notifications=notification-daemon

We create a little shell script /usr/local/bin/gnome-session-cairo-dock which starts up our custom GNOME session:

#! /bin/sh
exec gnome-session --session cairo-dock "$@"

The script needs to be executable:
# chmod +x /usr/local/bin/gnome-session-cairo-dock

And finally we create the /usr/share/xsessions/gnome-cairo-dock.desktop file which defines the custom X session:

[Desktop Entry]
Name=GNOME + Cairo Dock
Exec=/usr/local/bin/gnome-session-cairo-dock
TryExec=gnome-session
Icon=
Type=Application

Now when you log out, you will see the GNOME + cairo-dock session in your login manager.

After that you can start up gnome-tweak-tool to customize your environment. You might want to change the default fonts, choose to have the file manager to handle the desktop (so that you will get desktop icons) and change the default theme. If you need to change the fonts of the desktop icons, use this command:

$ gsettings set org.gnome.nautilus.desktop font "Cantarell 9"

Of course you can replace the Cantarell font or 9 pt font size by your preference.

In cairo-dock, I enabled these plug-ins: Applications menu, Clipboard history, Clock, Log Out, Motion Blur, Notifications Area Old, Recent-Events, Show Desktop, Sound Control. Right click on an applet and choose “Configure this applet” to set up various options. I place the notification area at the top of the desktop: in the Desklet tab page, set the desklet position to -220, 0 and under visibibily check “detached from dock” and “should be visible on all desktops” and set visiblity to “keep above”.

With the ccsm utility you can configure your compiz window mananager. First click on Preferences in the left side, and select the GConf configuration back-end. Then enable and configure any plug-in you want. Here are some that I enabled: Gnome compatibility, Expo, Desktop Cube, Fade to desktop, trailfocus, animations, Login/logout, Window Previews, Shift switcher, Move window, Resize window, Scale, Place windows. If you have the problem that you have no window manager when lauching your GNOME + Cairo session, then set the above options in ccsm first from another desktop environment.

One thought on “Creating your own GNOME session based on cairo-dock and Compiz”

  1. thanks for sharing this nice desktop alternative, although a screenshot would be welcome :-)

Comments are closed.