Home Forums Wiki Doc Install Extras Screenshots Source Code Projects Blog Users Groups Register
Glx-Dock / Cairo-Dock Wiki By compiling
The latest stable release is the *3.4.0* : How to install it here.
Note: We just switched from BZR to Git on Github! (only to host the code and your future pull requests)
Information : The version displayed on this page is not the latest available.
History View code

Glx-Dock / Cairo-Dock



Support Us

Flattr this


By compiling

Ubuntu/Debian, Arch, Gentoo and Fedora have dedicated sections. The generic method will of course for any distro.

Get the sources
The project is hosted on Github : https://github.com/Cairo-Dock and uses git.
You can browse code, see the workflow, propose your changes on Github. You can also report bugs, translate the project, etc. on our Launchpad account.

Stable version
Download the sources (core and plug-ins) and extract them.

Development version
Remember that the development version is regarded as unstable and can present some bugs.
Don't forget to remove other installations of Cairo-Dock before install it by Git
And stay up-to-date
If you have any bugs, don't hesitate to open a new thread on Git forum

Open a terminal, and run (you need to install git beforehand):
git clone https://github.com/Cairo-Dock/cairo-dock-core.git
git clone https://github.com/Cairo-Dock/cairo-dock-plug-ins.git

To update the sources, simply run this command in the 2 directories core and plug-ins:
git pull

With Git on Github, you can help us easily !
If you can code in C (or in another language for the applets), it's very easy to propose your modifications on a personal branch on Launchpad.
For more informations, read this : Help us with Git

Generic: Install the dependencies

The following packages are required:
      • For compiling:
cmake make pkg-config gcc gettext build-essential
      • For the core:
gtk+-3.0 (or gtk+-2.0) glib-2.0 gthread-2.0 cairo librsvg-2.0 dbus-1 dbus-glib-1 libxml-2.0 xrender gl glu libcurl xtst xcomposite xrandr
      • For the plug-ins:
Required: cairo librsvg-2.0 dbus-1 dbus-glib-1 libxml-2.0 glib-2.0 gldi # = cairo-dock-core, with the same version!
Highly Recommended: libalsa libetpan libgnome-menu3 gio-2.0 libxklavier xrandr x11 xxf86vm
gvfs upower-glib zeitgeist-1.0 libexif vte(-2.90) lm_sensors ; 'python', 'curl' and 'wget' packages ; dbusmenu-glib(-0.4) dbusmenu-gtk(3)(-0.4)
Suggested: indicator(3)-0.4 libido(3)-0.1 libical libpulse webkitgtk-3.0 (or webkit-1.0) ; these daemons: indicator-messages and indicator-sound ; 'ruby' and 'valac' packages
Optional: fftw3, mono: glib-sharp-2.0 ndesk-dbus-1.0 ndesk-dbus-glib-1.0

Add thunar-vfs-1 (libthunar-vfs-1-dev) for very old XCFE (< 4.6) or gnome-vfs-2.0 and libgnomeui-2.0 (libgnomevfs2-dev) for very old Gnome (< 2.20).
GNote is nice for the Notes applet, and Zeitgeist is needed for the Recent-Events applet.

Their names may vary depending on your distribution (dev can be called devel, etc.).
Here is the command for Ubuntu/Debian:
sudo apt-get install cmake make pkg-config gcc gettext build-essential \
libglib2.0-dev libcairo2-dev librsvg2-dev libdbus-glib-1-dev libxml2-dev libxrender-dev libglu1-mesa-dev libpango1.0-dev libxxf86vm-dev libxtst-dev libxrandr-dev libx11-dev libcurl4-gnutls-dev libgtk-3-dev \
libdbusmenu-gtk3-dev libasound2-dev libgnome-menu-3-dev libetpan-dev libxklavier-dev libwebkit-dev libexif-dev libvte-2.90-dev libzeitgeist-dev libido3-0.1-dev libindicator3-dev libsensors4-dev libupower-glib-dev wget curl

Here is the command for Fedora:
sudo yum install cmake make pkgconfig gcc gcc-c++ gettext \
glib2-devel cairo-devel librsvg2-devel dbus-glib-devel libxml2-devel libXrender-devel mesa-libGL-devel mesa-libGLU-devel pango-devel libXxf86vm-devel libXtst-devel libXrandr-devel libX11-devel libcurl-devel gtk3-devel \
vte3-devel lm_sensors-devel libxklavier-devel libexif-devel libetpan-devel gnome-menus-devel alsa-lib-devel libical-devel upower-devel libzeitgeist-devel

Generic: Compilation
    • Compile and install Cairo-Dock and then its plug-ins:
cd cairo-dock-core
mkdir build && cd build
cmake .. -DCMAKE_INSTALL_PREFIX=/usr ## if you want to have debug symbols, simply add this flag : "-DCMAKE_BUILD_TYPE=Debug"
make -j $(grep -c ^processor /proc/cpuinfo) ## if you have an error, see if you have install all dependences and/or post a new thread on our forum
sudo make install # as root

cd ../../cairo-dock-plug-ins/
mkdir build && cd build
cmake .. -DCMAKE_INSTALL_PREFIX=/usr ## if you want to have debug symbols, simply add this flag : "-DCMAKE_BUILD_TYPE=Debug"
make -j $(grep -c ^processor /proc/cpuinfo)
sudo make install ## as root and if you had no errors

      • Rem: For 64bits (x86_64) architectures, the libraries are installed in a 'lib' directory by default. If your distribution uses lib64 and /usr/lib64 is not a link to /usr/lib (Fedora, Suse, etc), simply add the flag "FORCE_LIB64":
        cmake .. -DCMAKE_INSTALL_PREFIX=/usr -DFORCE_LIB64=yes
        You can also force another prefix for this librairy directory with "LIB_SUFFIX" flag, e.g. for 'lib32' directory:
        cmake .. -DCMAKE_INSTALL_PREFIX=/usr -DLIB_SUFFIX=32
      • Tips: with "make -j $(grep -c ^processor /proc/cpuinfo)" the compilation uses all core of your processor.

Debian / Ubuntu

Mav and Matttbe have written a script for Debian/Ubuntu users (cairo-dock_git.sh) which allows the installation and the update via GIT and avoids the tiresome steps for the recovery of the sources and the installation. Moreover, the script will automatically install all the packages necessary for the compilation.

If you are on Debian or Ubuntu (or Linux Mint) you can also install a weekly version of Cairo-Dock from our our 'Weekly Build' PPA.
You can add this PPA to your sources.list with Mav's script, or look there : ppa Weekly

GIT: First installation

Open a Terminal, start by creating a specific directory (for example /opt/cairo-dock) and use it without administrator right:

sudo mkdir /opt/cairo-dock
sudo chown $USER:$USER /opt/cairo-dock_gir
cd /opt/cairo-dock_git

Then get the script, make it executable and launch it:

wget http://download.tuxfamily.org/glxdock/scripts/cairo-dock_git.sh
chmod u+x cairo-dock_git.sh
REM: For Debian users, you need to install the 'sudo' package.

You'll have this information
    1 --> Install the current version of Cairo-Dock from GIT server for the first time (Install)
    2 --> Install weekly ppa instead of GIT
    3 --> About this script
Press "1" + "Enter" to start the update.
Enter your own password when the script requires it (it's fully transparency when you'll write something) in order to proceed to the installation.
Then you'll have something like after having installed all needed dependences:
Is it the first time that you install Cairo-Dock from GIT sources files?

Thanks to github, you can download these sources files with HTTPS and SSH protocol. The second one is more interesting if you want to contribute but you will need to send your public SSH key to Github. This script will propose you to use SSH protocol but if you don't know what is it, answer 'No' to the question.

If you see some errors (in RED), please post them on our forum, it can be helpful !

===GIT: Update it===

Open a Terminal, in the specific file which you had created with the first installation (in our /opt/cairo-dock example) and start the script again:

[code]cd /opt/cairo-dock
And this is what you'll have:
    1 --> Update Cairo-Dock to the latest GIT revision
    2 --> Reinstall the current version
    3 --> Uninstall the current version
    4 --> Install weekly ppa instead of GIT
    5 --> Display the current installed revision
    6 --> About this script

Press "1" + "Enter" to start the update.

If an update is found, enter your own password, otherwise the message “No update available” will appear and the script will exit.

Note: Mav's script “auto-updates”, therefore each time you launch it, it will seek the last version of script available…

GIT: Tips

You can create a launcher in Cairo-Dock to execute the script… For that, create a new launcher (Right Click on the dock and select “Add a launcher”). Click on “New” and Enter this:

- Name of the launcher (example) : Cairo GIT Update

- Command to execute at the click :
gnome-terminal --working-directory=/opt/cairo-dock/ -e "./cairo-dock_git.sh"

(change your "working-directory" if necessary

- Directory of the picture :
(your most beautiful icon !)

Validate!!! and just click on your new icon to update your GIT version.

Rebuilt deb packages

If you just want to recreate deb packages which include some tiny changes, it can be interesting to follow this procedure:
  • Install all dependences:
    sudo apt-get update
    sudo apt-get install build-essential devscripts
    sudo apt-get build-dep cairo-dock
    (or replace "cairo-dock" by "cairo-dock-plug-ins" if you want to only recompile plugins. If you've an error, it's maybe because you didn't add deb-src repos
  • Download the sources into a new directory:
    apt-get source cairo-dock
    (or "cairo-dock-plug-ins").
  • If you want to modify sources, it's the right moment!
  • Re-build our packages:
    • Core:
      cd cairo-dock ## or cairo-dock-plug-ins ## the directory may contain a version number
      dch -i "Rebuild by $USER"
      cd ..
      sudo dpkg -i *.deb
      sudo apt-get install -f ## to install new dependences if any
  • And voilà, it's done! Note that you can also uninstall *-dbg.deb packages and also other dependences downloaded to build these packages. Don't forget that you'll have to do that for each new version of the dock


It's easy with Yaourt !
On root mode, add arlinuxfr repositories in your file /etc/pacman.conf

Server = http://repo.archlinux.fr/i686/

Server = http://repo.archlinux.fr/x86_64/

Install yaourt if you have do that before.

sudo pacman -S yaourt
yaourt -Syu

Now, install cairo-dock and its plug-ins !
yaourt -S cairo-dock-bzr cairo-dock-plug-ins-bzr

Remember to check the plugins' PGKBUILD and remove the plugins you want from the blacklist line.


For detailed instructions, a Gentoo-specific page is available here.

An SRPM is available here: http://download.tuxfamily.org/glxdock/repository/fedora/fedora-18/SRPMS/
You need to install the libdbusmenu too, as the one provided by Fedora lacks of GTK support (if you have already installed it, you may have to force the installation with -force)



An atom feed is available in order to know when there is an update (every day ) .



You can use the Atom feed on conky with a script.
  • You need curl :
    sudo apt-get install curl
    (or yum install curl, sudo pacman -S yaourt, emerge -av net-misc/curl, etc. depending of your distribution)
  • Save these line on your computer (for example '~/.conky-rss' ; a file hidden in your home)
    # RSS Display Script by Bill Woodford (admin@sdesign.us) v1.0
    # This script is designed to output story titles for most any RSS Feed.
    # This script depends on curl. Please ensure it is installed and in your $PATH
    # Gentoo: emerge -av net-misc/curl
    # Debian: apt-get install curl
    # Homepage: http://curl.haxx.se/
    # Usage:
    # .conkyrc:    ${execi [time] /path/to/script/conky-rss.sh URI LINES TITLENUM}
    #    URI = Location of feed, ex. http://www.gentoo.org/rdf/en/glsa-index.rdf
    #    LINES = How many titles to display (default 5)
    #    TITLENUM = How many times the title of the feed itself is specified, usually 1 or 2 (default 2)
    # Usage Example        
    #        ${execi 300 /home/youruser/scripts/conky-rss.sh http://www.foxnews.com/xmlfeed/rss/0,4313,1,00.rss 4 2}

    #RSS Setup - Don't change unless you want these values hard-coded!
    uri=$1                            #URI of RSS Feed
    lines=$2                        #Number of headlines
    titlenum=$3                        #Number of extra titles

    #Script start
    #Require a uri, as a minimum
    if [[ "$uri" == "" ]]; then
        echo "No URI specified, cannot continue!" >&2
        echo "Please read script for more information" >&2
        #Set defaults if none specified
        if [[ $lines == "" ]]; then lines=5 ; fi
        if [[ $titlenum == "" ]]; then titlenum=2 ; fi

        #The actual work
        curl -s --connect-timeout 30 $uri |\
        sed -e 's/<\/title>/\n/g' |\
        grep -o '.*'</span> |\ <br/>    sed -e <span class="sntx_bash_string">'s/<title>//'</span> |\ <br/>    head -n <span class="sntx_bash_var">$</span>((<span class="sntx_bash_var">$lines</span> + <span class="sntx_bash_var">$titlenum</span>)) |\ <br/>    tail -n <span class="sntx_bash_var">$</span>((<span class="sntx_bash_var">$lines</span>)) <br/>fi</span></div></div> </li><li>This script needs +x right <div class='sntx_code'><div class='sntx_code_inner'><span class="sntx_bash_default">chmod u+x CHEMIN/NAME_OF_YOUR_FILE.sh</span></div></div> (~/.conky-rss.sh) </li><li>Modify your ~/.conkyrc with, for example<div class='sntx_code'><div class='sntx_code_inner'>${color white}Cairo-Dock${color} ${hr 2} <br/>${color lightgrey}Core : ${execi 900 ~/.conky-rss.sh http://bazaar.launchpad.net/%7Ecairo-dock-team/cairo-dock-core/cairo-dock/atom 2 1} <br/>Plug-ins : ${execi 900 ~/.conky-rss.sh http://bazaar.launchpad.net/%7Ecairo-dock-team/cairo-dock-plug-ins/plug-ins/atom 2 1}</div></div> (modify every <span class="sntx_italic">2</span> in order to have more or less lines and change the path of the script (~/.conky-rss.sh) </li></ul></td> </tr> </table> </div> <br/> </td> </table> <br/> <table width="100%"><tr> <td id="hdrPlus"> <a href="index.php">Glx-Dock / Cairo-Dock</a> <a href="ww_page.php">Wiki</a> <b>By compiling</b> </td> <td id="hdrPlus" class="small" align="right"><a href="#top">Top</a></td> </tr> </table> <hr/> <div class="small"> <img src="templates/bluecloud/images/elementspeak.png" align="right"/> Online users : <span style="color:#f0f0f0;"> <br/> </span> </div> </div> <br/> <div align="center" class="small"> Powered by ElementSpeak © 2007 Adrien Pilleboue, 2009-2013 Matthieu Baerts. <br /> <font color="grey">Dock based on CSS Dock Menu (Ndesign) with jQuery. Icons by zgegball</font> <br/>Cairo-Dock is a free software under GNU-GPL3 licence. First stable version created by Fabounet.<br />Many thanks to TuxFamily for the web Hosting and Mav for the domain name. </div> </body> </html>