Making GNOME 2.2 Usable with Viewports

While I support the GNOME Project's recent work on improving usability, I'm not a big fan of the switch from using viewports to workspaces by default. What's the difference? Both viewports and workspaces are a way of configuring virtual desktops.
In practice, the major difference is that windows can span viewport boundaries, but not workspace boundaries. Apparently this is confusing behavior for many people, so the GNOME folks have decided to get rid of viewports. However, viewport-spanning can be a very useful feature, particularly if you ever have to deal with files containing really long lines and want to stretch some Xterms out to 400 character line lengths... There's been a lot of griping and arguing about the merits of viewports vs. desktops on various mailing lists, and I don't want to repeat it here. Suffice it to say that I want viewports, and luckily that option is still  available - it just takes some more work to set up.

The following instructions work for Debian "testing" as of November 7, 2003. If this page is still online and horribly out of date and you're reading it in 2011 or something like that, I apologize!

Switching to Sawfish

First you have to switch from the new and improved(read "broken and feature-poor") GNOME window manager metacity to the (much better, IMO) sawfish. Make sure you've got sawfish installed (via apt-get or rpm or emerge, etc...) Basically you want to kill metacity and then start sawfish, but by default if you kill the current window manager, gnome-session restarts it. So tell it not to:
gnome-session-properties &

Go to the Current Session tab. Find metacity in the list of running programs, and change the Style drop down box from "Restart" to "Normal". Now you can kill metacity without it immediately respawning.

killall metacity
sawfish &

And that's it. You should now be running sawfish as your window manager. gnome-session will remember this and will start sawfish for you on all future logins.

Editing your .sawfishrc

The viewports setup is no longer available in the sawfish GUI, but support for viewports themselves are still present.  You just  have to add a few lines to your .sawfishrc file to configure them.

Check out the OPTIONS file in the sawfish distribution (It's in /usr/share/doc/sawfish, at least on Debian) for all the possible options for your sawfishrc. Here are the relevant snippets from mine:

 (define-special-variable customize-command-classes '(viewport default)
"Also include commands of these classes the key bindings panel.
Add the `viewport' keyboard to make viewport commands show up.")

(define-special-variable viewport-dimensions '(4 . 2)
"Size of each virtual workspace.")

Once you've done this, restart sawfish. There are a now few changes you can make in the sawfish GUI: Turn on edge flipping and make it flip viewports, not workspaces. I also like to add keybindings for Ctrl-Alt-<arrowkeys> to do Move Viewport Up, Down, Left, Right.

Continuing Annoyances

Configure GNOME to only have 1 workspace, and then configure the workspace switcher applet to only be 1 workspace high. Now you should be able to switch between viewports using the pager applet. However,