I have been rebuilding my workstation, and taking the opportunity to do some major housecleaning (including moving some old home directory stuff from CVS to git!)
Since 1999 I have used fvwm as my X11 window manager. I have a weird configuration which makes it work a lot like a tiling window manager - I have no title bars, very thin window borders, keypresses to move windows to predefined locations. The main annoyance is that this configuration is not at all resolution-independent and a massive faff to redo for different screen layouts - updating the predefined locations and the corresponding keypresses.
I have heard good things about i3 so I thought I would try it. Out of the box it works a lot like my fvwm configuration, so I decided to make the switch. It was probably about the same faff to configure i3 the way I wanted (40 workspaces) but future updates should be much easier!
I did some of this configuration at home after work, using
XQuartz on my MacBook as the X11 server.
XQuartz comes with its own Mac-like window manager called
You can't just switch window managers by starting another one - X only allows one window manager at a time, and other window managers will refuse to start if one is already running. So you have to configure your X session if you want to use a different window manager.
Traditionally, X stashes a lot of configuration stuff in
/usr/X11R6/lib/X11. I use
xdm which has a subdirectory of ugly
session management scripts; there is also an
xinit subdirectory for
simpler setups. Debian sensibly moves a lot of this gubbins into
/etc/X11; XQuartz puts them in
As well as their locations, the contents of the session scripts vary
from one version of X11 to another. So if you want to configure your
session, be prepared to read some shell scripts. Debian has sensibly
unified them into a shared
Xsession script which even has a man page!
XQuartz does not use a display manager; it uses
startx, so the
relevant script is
/opt/X11/lib/X11/xinit/xinitrc. This has a nice
run-parts style directory, inside which is the script we care about,
/opt/X11/lib/X11/xinit/xinitrc.d/98-user.sh. This in turn invokes
scripts in a per-user
So, what you do is,
$ mkdir .xinitrc.d $ cat >.xinitrc.d/99-wm.sh #!/bin/sh exec twm ^D $ chmod +x .xinitrc.d/99-wm.sh $ open /Applications/Utilities/XQuartz.app
.sh and the
chmod are necessary.)
This should cause an
xterm to appear with
twm decoration instead
Of course, X is a network protocol, so (like any other X application)
you don't have to run the window manager on the same machine as the X
99-wm.sh was roughly,
#!/bin/sh exec ssh -AY workstation i3
And with XQuartz configured to run fullscreen this was good enough to
have a serious hack at