Here the basic installation of Sawfish from GIT in a Debian GNU/Linux Squeeze/Wheezy hybrid from an initial Debian GNU/Linux 6.0.1a installation without a desktop is described.

Caution: This is a raw installation into /usr/local without package manager, and it is not recommended, if your distribution provides reasonably up-do-date packages or if you're inexperienced. If you proceed, first uninstall the packages coming from your distribution, if you don't do so, you'll very likely run into trouble.

Installation Edit

Getting the Source (GIT) Edit

Open a terminal-emulator and create a directory for the Sawfish GIT trees:

:~$ cd $HOME
:~$ mkdir build

Go into the build directory and Download the GIT trees for the build:

:~$ cd build
:~/build$ git clone git:// librep
:~/build$ git clone git:// rep-gtk
:~/build$ git clone git:// sawfish
:~/build$ git clone git:// sawfish-pager

Dependencies (Debian) Edit

Install the tools that you will need to compile the source code. First become root (the system administrator, also: super user). (From now on, distinguish by the prompt-sign if it's necessary to be root) Depending on your setup you might want to use `sudo' instead of `su':

~/build$ su
root@build# aptitude install gettext autoconf libltdl-dev automake \
  libtool autotools-dev gcc libreadline-dev readline-common

This is the point where it is necessary to hybridize the system. The debian way of doing this is through apt-pinning. Open /etc/apt/sources.list with your favorite editor and add the Wheezy branch of your choosen mirror.

# debian testing repository
deb wheezy main contrib non-free
deb-src wheezy main contrib non-free

Now use your editor to create or open the file /etc/apt/preferences and add the following code:

Package: *
Pin: release a=squeeze
Pin-Priority: 900

Package: *
Pin: release a=wheezy
Pin-Priority: 10

There are dependencies for Sawfish GIT that must be installed prior to building the Sawfish window manager.

  • gtk+ >= 2.24
  • pango (optional, but recommended for UTF-8 support)
  • gdk-pixbuf-xlib OR imlib1 (imlib2 is currently not supported)
root@build# aptitude update
root@build# aptitude install libffi-dev libgdbm-dev \
  libgmp-dev libgtk2.0-dev libpango1.0-0 libgnutls

Become an ordinary user again, by using `exit':

root@build# exit

Building Edit

Now we're ready to start building Sawfish. Go into the librep directory, configure, and make:

:~/build cd librep
:~/build/librep$ ./configure
:~/build/librep$ make

If it now fails with an error-message coming from libtool, it's not a bug within Sawfish. Specific versions of libtool 2.6 are known to fail (perhaps, if that's the case issue autogen instead of configure and proceed with make. If then the issue still appears, you need to check your distributors repo for a different version of libtool 2.6 (older or newer) and start again:

:~/build$ ./
:~/build$ make

Install as root.

:~/build$ su
root@build/librep# make install
root@build/librep# exit

Since this will put your installation into /usr/local/ you might have to put it into your path.

:~/build$ echo $PATH

if the list provided does not contain /usr/local/bin/ add it using the following command:

:~/build$ export PATH="$PATH:/usr/local/bin"

Go back to top-level build directory:

:~/build/librep$ cd ../

The rest of the installation is very similar to the above, thus only commands are listed from this point onward.

Remember: if you had a buggy libtool version, use ./ instead of

:~/build$ cd rep-gtk
:~/build/rep-gtk$ ./configure

What to do if librep can't be found? Some distributions don't have the installation directory in the PKG_CONFIG_PATH, therefore librep can't be found. Normally installations in /usr and /usrlocal are fine. If you happen to install somewhere else (say: /opt/), you'll need to do this:

:~/build/rep-gtk$ export PKG_CONFIG_PATH="$PGK_CONFIG_PATH:/opt/lib/pkgconfig/"

Now continue the build.

:~/sawfish/rep-gtk$ make

If make fails, giving an error about missing librep library, then that's because your distributor hasn't setup your installation directory properly for building software, fix this by doing:

root@build/rep-gtk# libtool --finish /usr/local/lib/rep
root@build/rep-gtk# ldconfig

as root and start make again.

:~/build/rep-gtk$ make
root@build/rep-gtk# make install

If you need to run libtool for librep, then repeat that step.

:~/build/rep-gtk$ cd ../
:~/build$ cd sawfish
:~/build/sawfish$ ./configure
:~/build/sawfish$ make
root@build/sawfish# make install
:~/build/sawfish$ cd ../
:~/build$ cd sawfish-pager
:~/build/sawfish-pager$ ./configure
:~/build/sawfish-pager$ make
root@build/sawfish-pager# make install
:~/build/sawfish-pager$ cd ../

Install a desktop if you would like one.

Installing to a Custom Path Edit

When building from GIT you may want to install to a custom location here are the steps to take.

For the purpose of this section /opt/sawfish will be used as an example.

First set the pkg-config path environment variable.

export PKG_CONFIG_PATH=/opt/sawfish/lib/pkgconfig

The bin directory will need to be in the path so the 'rep' command can be found.

export PATH=$PATH:/opt/sawfish/bin

For building librep, rep-gtk, sawfish use the prefix argument (this applies to running configure too).

./ --prefix=/opt/sawfish

note: the PATH will need to include the custom bin directory when running sawfish after building.

Apt-Pinning (Debian) Edit

Set your apt-pinning so that you do not slowly bleed from a stable sqeeze base to testing (Wheezy). New applications that are installed will come from the wheezy repository. Open the file /etc/apt/preferences and add the following code:

Package: *
Pin: release a=squeeze
Pin-Priority: 900

Package: *
Pin: release a=wheezy
Pin-Priority: -100

Alternately you can hold your distribution in stable by disabling Wheezy in /etc/apt/sources.list with your favorite editor. Only re-enable the Wheezy repository if aptitude tells you that the package you are trying to install is going to break things.

# debian testing repository
# deb wheezy main contrib non-free
# deb-src wheezy main contrib non-free

Now explore the Wiki and adjust your newly built Sawfish window manager the way you would like it to be!

Community content is available under CC-BY-SA unless otherwise noted.