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.
- A "workspace" is one of several complete independent virtual
desktops
- A "viewport" is a screen-sized portion of a virtual desktop which
can be much larger than your physical screen.
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,
- Viewports are drawn in the pager with the wrong proportions!
They're much narrower than the actual proportions of my screen. This
looks bad and makes windows sometimes appear to be on a different
viewport than they really are.
- You can't drag windows around between viewports in the pager. It
will happily let you start dragging a window, but will fail to let you
put it down on a new viewport. It works just fine to drag to another
workspace, however, which makes this all the more annoying.