Begin main content

Getting sawfish to compile under cygwin

I won't bore you with the many hours of FAILED attempts - this entry is to document how to get the sawfish window manager up and running under modern (2004) cygwin environments.

CAVEAT: This is a hurridly written and poorly constructed document. I will try to edit it into a more useable form later. I can't tell you what underlying cygwin modules are required, except to say that I have a full developer install with importantly:

  • all the gdbm database modules installed.
  • pkgconfig
  • pango-devel
Current cygwin also includes a bunch of gnome libraries in the X11 section which will help you runnning gnome applications later.

Sawfish relies on a number of other projects, which take varying efforts to install.

1/ Imlib image library

Imlib for cygwin is maintained by cygwin-ports.

Download the latest Imlib bundle from http://sourceforge.net/projects/cygwin-ports/ and untar it with tar zxf (or tar jxf if it's a bzip file)

You will end up with the original source tar file and a bunch of patch related files. Simply running ./imlib-1.9.14-1.sh all will unpack, patch, compile and install imlib for you.

It will also delete the build directory when it's done, so if you want to go through the build process yourself it will take more steps, starting with ./imlib-1.9.14-1.sh mkdirs; ./imlib-1.9.14-1.sh prep. The rest is left to the reader ;)

2/ librep lisp library, gnome-libs-devel, rep-gtk, rep-gtk-devel and sawfish-1.2
Many hours have gone into trying to compile each of these from source - multiple versions, different patches. It's hard enough to compile on linux let alone cygwin...

NOTHING I tried could make it compile.

It turns out, you can make the gnome 1.4 binary versions work from cygnome.

Run the cygwin installer as per normal, but set your mirror to http://cygnome.sourceforge.net - you will find a whole load of GNOME-* categories. From memory the auto dependancies don't select everything you need, but be careful not to click things you don't need as you may end up un-installing some newer versions from the current cygwin installation.

In fact I reccomend making a backup of your entire cygwin directory - I broke mine once and was glad to have a backup.

Now you're installed, you need to setup your PATH to include /opt/gnome/bin and your library path to include /opt/gnome/lib.

I added these two lines to my /usr/X11R6/bin/startxwin.sh file:

export PATH=/usr/X11R6/bin:"$PATH":/opt/gnome/bin
export LD_LIBRARY_PATH="/usr/lib:/usr/X11/lib: :/usr/local/lib:/opt/gnome/lib"
and put a (sawfish &) at the end.

Note that for some reason, sawfish doesn't decorate any already running windows, so I don't start any apps from the startxwin.sh - instead I start them from my .sawfishrc file eg:

(system "xsetroot -solid lightblue")
(system "xterm -e bash &")
(system "xload &")
3/ Getting sawfish.wm.ext.pager compiled:
Get the 0.6 source and unpack.

The makefile won't compile pager (no surprise) - I used this commandline to produce pager.exe within the aforementioned sawfish1.2-gtk1 environment:

gcc -DUSE_SAWFISH_LIBCLIENT -DFRAMEOVER -I/opt/gnome/include/gtk-1.2 -I/opt/gnome/include/glib-1.2 -I/opt/gnome/lib/glib/include -I/usr/X11R6/include -L/opt/gnome/libexec/rep/i686-pc-cygwin/sawfish -L/opt/gnome/bin -L/usr/X11R6/lib -lgtk -lgdk -lgmodule -lglib -lintl -lXext -lX11 pager.c /opt/gnome/libexec/rep/i686-pc-cygwin/sawfish/client.dll -o pager

You will also need to add /opt/gnome/libexec/rep/i686-pc-cygwin/sawfish/ to your PATH so the dll loader can find it.

do a make private-install to copy and compile the lisp files. It will fail to copy pager.exe, so just cp pager.exe ~/.sawfish yourself.

If you have no pager, and executing ~/.sawfish/pager.exe by hand yields:

error: can't connect to socket
/tmp/.sawfish-MYUser/AA053174.pc.domain.com%0.0

or similar, just delete the socket file it found and restart sawfish. Actually, you need to delete the whole /tmp/.sawfish-MYUser directory, otherwise the next time sawfish starts it won't create a socket file. And then all sorts of wierdness ensues.

Sweet.

Forgot: You also need to let cygwin find client.dll by adding /opt/gnome/libexec/rep/i686-pc-cygwin/sawfish/ to your PATH.

02:26 PM, 01 Oct 2004 by Mark Aufflick Permalink | Short Link

Add comment