- 1 How can I get information on Sawfish?
- 2 How do I read the Info manual?
- 3 I installed Sawfish but it's not working! All I see when I start X is the default stipple background: no programs, no menus, no pager.
- 4 How do I customize Sawfish?
- 5 How do I bind a key to execute a shell command?
- 6 How do I make clicking on a window raise the window?
- 7 How do I redefine the `Applications' menu?
- 8 How do I compile Lisp files?
- 9 How do I create a new theme?
- 10 How do I port an Enlightenment theme to Sawfish?
- 11 Are there any other themes available?
- 12 Why don't GTK themes work with Sawfish?
- 13 What's this `sawfish-client' program?
- 14 How do I restart Sawfish?
- 15 Why don't you use GUILE?
- 16 Will you add feature X?
- 17 Will you add background setting?
- 18 Why does Sawfish look weird/crash on Solaris?
- 19 Why don't some windows ever get focused?
- 20 Why doesn't the Gnome desk-guide / tasklist show the true state of my desktop?
- 21 What do these `bytecode-error' messages mean?
- 22 Historical question: Why is it now called _Sawfish_?
- 23 Historical question: But why _Sawfish_, and not <insert your favourite alternative>?
- Homepage: http://sawfish.wikia.com/wiki/Main_Page
- Mailing list: To subscribe, send a mail with subject "subscribe" to email@example.com. You can browse the archives at http://dir.gmane.org/gmane.comp.window-managers.sawfish.
- IRC: Join `#sawfish' on `irc.freenode.net'.
Either execute the command `info sawfish', or enter the Info mode within Emacs (`C-h i') and type `g (sawfish) RET'.
If you're using Gnome, then try executing `gnome-help-browser info:sawfish'.
I installed Sawfish but it's not working! All I see when I start X is the default stipple background: no programs, no menus, no pager.
There are two ways; using the configurator GUI, or preparing lisp code. The GUI can be run by middle-clicking background -> "Customize". Most customizations similar to other window managers can be done through GUI.
For customizations by lisp, first understand that in the startup, three files are read, in the order: `sawfish-defaults', `~/.sawfish/custom', `.sawfishrc'.
This is a system default lisp library. It loads some of the common window manager features. More precisely, it currently does:
- Gnome setup, by opening `sawfish.wm.gnome.integration', if Gnome is running.
- Error handling enhancements, by opening `sawfish.wm.ext.error-handler'
This stores customizations created by the configurator GUI; it shouldn't really be edited manually.
~/.sawfish/rc or ~/.sawfishrc
This is the file you edit. It is a hand written lisp code, and almost all explicit customization should be done here.
Choose either `~/.sawfish/rc' or `~/.sawfishrc'. The former is recommended, because the directory `~/.sawfish' is anyway created to store `custom', and you can also put other lisp scripts, like user-contributed codes there.
If this file is present, then `sawfish-defaults' isn't read by default. But it loads standard features, so if you want it, add the following line to your `~/.sawfishrc' (or `~/.sawfish/rc') file:
In fact, `sawfish-defaults' is an alias of `sawfish.wm.defaults'.
Bind a key to the `run-shell-command' command; remember to enter the shell command you want to execute in the string entry in the `Edit binding' dialog window.
Bind the event `Button1-Click1' in the `window-keymap' to the `raise-window-and-pass-through-click' command
Use the shell command:
sawfish --batch -l compiler -f compile-batch FILES...
where FILES... are the names of the files you want to compile. They will normally have `.jl' suffixes, the compiler will create associated files with `.jlc' suffixes containing the compiled Lisp code.
Remember that always the latest code is read, i.e., if the source is newer than the byte compiled file, the source is used, unlike emacs.
See the `Window Frames' node of the Info manual.
Basically though, create a directory `~/.sawfish/themes/FOO' where FOO is the name of your theme. Then copy any images into this directory and create a file `theme.jl' that will be loaded to initialize the theme
There's no automatic translation available. Get the images used in the window border, then write a `theme.jl' file telling the window manager how they are used to form a window frame
See the `themes/brushed-metal' directory for an example, and the Info manual for the documentation
Yes, there are plenty actually. Most of them reside over at freshmeat: http://themes.freshmeat.net/browse/926/. You can also take a look at the Themes section on the Sawfish website: http://sawfish.wikia.com/wiki/Themes.
There was a problem with older versions of the `gtk-engines' package preventing engine based themes working with several interpreted languages. Get the latest `gtk-engines' from ftp://ftp.gnome.org/
This allows you to connect to a window manager process and evaluate arbitrary Lisp forms. Do `sawfish-client --help' for more details (`sawfish-client -' for a read-eval-print loop)
By default you can only connect from the host running the wm (through a unix-domain socket). To enable the network based server, evaluate the lisp form `(server-net-init)'.
Note however that this connects through the X server, meaning that anyone who can open windows on your display can also execute any Lisp code on the host running the window manager (and by extension, _execute any program_).
So _don't_ run the net server with X access control disabled (unless you're not connected to a network).
From a shell lauch the following command: `sawfish-client -q -f restart'
Mainly because I'm lazy; I had already written rep, and therefore understood it completely, whereas I have never used GUILE. Also, rep has some features not available in GUILE (byte-code compilation, autoloading, built-in event-loop, ...)
But before you flame me: yes I do think scheme is a more elegant language.
Possibly. But only if it can be written in Lisp, or doesn't conflict with the overall design aims.
These aims are to build a lightweight, generally applicable, set of core window management functions, then write _all_ high-level functionality as Lisp extensions
No. This can easily be done by a separate application (e.g. with the Gnome hints, simply monitor property `_WIN_WORKSPACE' on the root window).
Sawfish works stably on Solaris, but you may need to do two things:
- Disable use of MIT-SHM by Imlib (run the program `imlib_config', the MIT-SHM option is on the `Rendering' page)
- Recompile GTK+ using the `--disable-xim' option to configure
If you don't have the option "give focus to windows even when they haven't asked for it" set to nil (define-special-variable ignore-window-input-hint nil), then windows that don't ask for focus don't get it.
Windows ask to receive focus by setting their WM_HINTS property appropriately; for example if I xprop a gnome-terminal:
WM_HINTS(WM_HINTS): Client accepts input or input focus: True Initial state is Normal State. window id # of group leader: 0x5c00001
It seems that there is a problem with these applets that only occurs after restarting Sawfish - they seem to lose track of the current window states.
The simplest way to correct this is to execute the following shell commands:
$ save-session $ killall panel
(assuming you have a session manager to restart the panel afterwards!)
It means that you're trying to execute Lisp code that was compiled for an outdated version of the Lisp virtual machine. Recompile any Lisp files that you have installed locally.
Because the old name (`Sawmill') was already being used by another company, who were in the process of registering it as a trademark.
The rename should be mostly painless, all old binaries still work for the time being, but will be phased out over time (final phasing out started around 1.5.0). Where before you would execute a program called `sawmill*', replace it by `sawfish*'. E.g. `sawmill' becomes `sawfish', and `sawmill-client' becomes `sawfish-client'.
Your `~/.sawmill' directory will automatically be renamed `~/.sawfish' unless it would overwrite an existing file. Only user configuration `~/.sawfish[/]rc' will be checked currently, `~/.sawmillrc' is not used anymore (it was also read up to version 1.3.5).
My apologies for any inconvenience caused.
Well I had to choose something! And hopefully it satisfies the main requirements:
- There are no other computer-related users of the name (as checked in April 2000,)
- It's similar enough to the old name to hopefully carry some recognition across,
- It has no tenuous relationship to window-managing.
Incidentally, there was no meaning to the name "Sawmill", the author grepped `/usr/dict/words' for something containing "wm".