Axel’s Tiling Window Manager Setup
History, Background and Reasoning
The Early Days: FVWM
While being a heavy FVWM user for nearly 15 years, I now run tiling window managers on all my “desktops” and laptops, ranging from a first generation 7" ASUS EeePC 701 4G netbook (unfortunately died in early 2014, has been replaced by a 9" ASUS EeePC 900A) over a Sun UltraSparc 10 to a full-fledged multihead workstation from Dalco at work and several generations of Thinkpads ranging from an A31 over a T61 to an X240.
Tasting Blood with Ratpoison
My ASUS EeePC 701 running Debian GNU/Linux Sid was the first box where I did not use FVWM anymore, because with a resolution of 800×480 on a 7 inch screen, you a) want to waste as few pixels as possible by title bars, borders, … and b) most of the time anything else than fullscreen windows doesn’t make sense, moving windows around with the mouse makes even less sense.
So I’ve chosen ratpoison for the EeePC (and would still use it on that box) since it makes windows fullscreen by default and the keybindings are nearly identical to GNU Screen and therefore easy to learn respectively I didn’t have to learn anything to use it.
After more and more fine tuning involving the xmobar text status bar, filled with data by i3status, I started this git repository to track my own changes, to share the setup with some other of my boxes (like the UltraSparc or my bed-side terminal, an older ThinkPad A31).
Advancing to Awesome
Getting used with a fullscreen and tiling setup on the EeePC I more and more wanted something for my everyday ThinkPad T61, too. But while ratpoison is really perfect for the small EeePC screen, it proved too clumsy for more complex window arrangements and multiple virtual desktops.
So I looked through the other tiling window managers in Debian, trying out i3 (3.x versions), scrotwm (nowadays called spectrwm), wmii, awesome and some ion successors (tritium and anion3 the latter now being superseeded by notion). I eventually stuck with awesome, first the 2.x version from Debian 5.0 Lenny, now the 3.x version from Debian 6.0 Squeeze and later.
In general I liked the idea of using the — on Linux mostly unused —
Windows key as window manager meta key. I even configured my ratpoison
to use that in addition to the original
Dropping Awesome in Favour of i3
A few years later I got annoyed by awesome (≥ 3.5) and the awesome-extra widget libraries package diverging (by the latter not being updated to awesome 3.5 and hence becoming unusable unless you put the awesome package on hold with a 3.4.x version), so I looked again at i3 (now the 4.x versions) and eventually started migrating to it.
Repository Name and URLs
So this repository is no more a ratpoison-only setup. But since I neither want to change the repository name nor any URL I decided that I stick with having “ratpoison” in the name. The amount of “rodent” usage you need with this setup hasn’t changed anyway, so without the relation to the window manager of this name, the name is still fitting (as it fits to the window manager of that name :-).
These files are needed to get the setup running. The setup currently runs on Debian Sid, Debian 8 Jessie and Debian 7 Wheezy as well as Ubuntu 14.04 Trusty, and 16.04 Xenial. It probably also still runs on older releases.
Since most of the configuration files included are not expected to
.ratpoison, some symlinks are necessary where config file
paths cannot be set via command line options or where it would be to
tedious to always type them:
~/.gitconfig → gitconfig ~/.gitignore → gitignore ~/.xsession → xsession ~/.screenrc → screenrc ~/.colordiffrc → colordiffrc ~/.lintianrc → lintianrc ~/.emacs → emacs.el
These symbolic links can also be automatically set up by calling
bin/setup-symlinks.sh from this repository.
Required Software Packages
Needs at least the following Debian packages (besides essential packages) to be installed:
- conkeror or some other web browser
- emacs (or any other
- i3status ≥ 2.2
- ratmenu ≥ 2.3.20
- ratpoison or awesome < 3.5 + awesome-extra
- dnsutils |
wget (needed by
- x11-utils (for
xmessage) | gxmessage
- xscreensaver or xtrlock
- xterm and/or rxvt-unicode
- For Focus-Follows-Mouse:
Fonts used for xmobar:
Optional Software Packages
Used if available but except the system tray stuff recommended anyway:
- inotail (Linux only)
- keynav ≥ 0.20101014.3067
- magit (used in
- udev-notify (RFP)
- xsettingsd (with fallback to other common settings-daemons)
- System tray applets for use with awesome or i3:
- For use with ratpoison only so far:
Unfortunately necessary for using ETH's new printing system:
system-config-printer-appletfrom the package system-config-printer
Linux kernel modules which may be used by some features of xmobar, but
do not seem to be loaded automatically (write them into
Software Packages used by Scripts or Keybindings
Only used in non-necessary scripts or keybindings:
- dwm-tools ≥ 31-1 or
- screen or tmux
Software Packages used in Commented Code
Only in commented code (i.e. currently not used):
- Alternative window and session managers:
- loco (no more in Debian) | ccze | lwatch | colortail
Other Configuration Files
The repository also contains some configuration files which I usually want on every desktop, but which are more or less independent of the desktop setup respectively could also be used on non-desktop machines.
emacs.elfor GNU Emacs
screenrcfor GNU Screen
I’ll probably split them off into their separate repository somewhen in the future, maybe using vcsh.
The project’s subdirectory
abe-desktop resembles a Debian source
package which generates several
Metapackages for my Desktop Setup
The following metapackages provide all the dependencies mentioned above:
- abe-desktop-ratpoison: Contains dependencies for the ratpoison-based desktop
- abe-desktop-awesome: Contains dependencies for the awesome-based desktop
- abe-desktop-common: Contains dependencies common to both, the ratpoison-based and the awesome-based desktop.
- abe-desktop: Contains dependencies on all of the above plus optional dependencies on other common metapackages I maintain.
Some of these packages recommend or suggest other metapackages which previously were part of this repository but have been split off into their own git repository.
All those metapackages are usually also available from my APT repository.