Sawfish
Advertisement

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[]

Getting the Source (GIT)[]

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://git.tuxfamily.org/gitroot/librep/main.git librep
:~/build$ git clone git://git.tuxfamily.org/gitroot/librep/gtk.git rep-gtk
:~/build$ git clone git://git.tuxfamily.org/gitroot/sawfish/main.git sawfish
:~/build$ git clone git://git.tuxfamily.org/gitroot/sawfishpager/pager.git sawfish-pager

Dependencies (Debian)[]

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 http://debian.uchicago.edu/debian/ wheezy main contrib non-free
deb-src http://debian.uchicago.edu/debian/ 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[]

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 http://lists.gnu.org/archive/html/bug-libtool/2011-12/msg00005.html), 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$ ./autogen.sh
:~/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"

http://sawfish.wikia.com/index.php?title=Compilation_from_source&action=edit

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 ./autogen.sh instead of configure.in

:~/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[]

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).

./autogen.sh --prefix=/opt/sawfish

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

Apt-Pinning (Debian)[]

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 http://debian.uchicago.edu/debian/ wheezy main contrib non-free
# deb-src http://debian.uchicago.edu/debian/ 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!

Advertisement