The first time I installed Gentoo Linux on one of my laptops, an expert friend helped me through the process. When I said, “Okay, so how do I install KDE?” he scoffed and told me to use evilwm instead. Since I was already on a roll with the Gentoo installation, I figured, “Why not?” So I tried evilwm, and I even grew to appreciate its quirks. So what is evilwm, anyway?
Evilwm is a stacking, or floating, window manager for the X desktop. It is known for being almost obscenely minimalistic, boasting only 1-pixel borders for application windows and using no panels, launchers, or menus. Evilwm is primarily keyboard-driven.
This is a simple evilwm session with two instances of Terminator running:
In this article, I’m going to show you the basics of configuring and using evilwm.
Evilwm can be downloaded here or cloned from its Git repository:
You can most likely install it through your package manager too.
Once you’ve installed evilwm, it should show up as a session in your display manager’s login menu. If you don’t use a display manager, you can set evilwm to start with X by adding it to your “~/.xinitrc” file:
Now an evilwm session will start when you run
The first thing you’ll see is a blank screen, possibly with a desktop background inherited from your display manager. Clicking on the desktop does nothing. So now what?
All applications are launched from a terminal in evilwm. Hit
[ctrl] + [alt] + [enter] to open a terminal. Memorize this key combination, because it is the most essential one to know for using evilwm. Also keep in mind that almost all evilwm’s keyboard commands use the modifier keys
If you want to launch another application, you have to type its command into the terminal. For example, to launch Firefox:
To bring a window to the foreground, click on it while pressing the
[alt] key or click on its border. You can also move the window with your mouse while holding down
[alt] or by dragging it from the border.
Alternatively, you can manipulate windows using key combinations of
[ctrl] + [alt] along with various letters. These are the main ones:
- H: Move window left
- J: Move window down
- K: Move window up
- L: Move window right
- X: Toggle maximized state
- Esc: Close window
Note that the H, J, K, and L keys are all in the same row on your keyboard.
You can move windows to particular parts of the screen with these commands (again, along with
[ctrl] + [alt]):
- Y: Move window to top left
- U: Move window to top right
- B: Move window to bottom left
- N: Move window to bottom right
To resize a window, hold down
[ctrl] + [alt] + [shift] and use the following keys:
- H: Decrease width from the right
- J: Increase length from the bottom
- K: Decrease length from the bottom
- L: Increase width from the right
It can take a bit of getting used to, but many evilwm fanatics will tell you that operating your desktop primarily by keyboard will speed up your workflow.
You can also use virtual desktops in evilwm. Just hold down
[ctrl] + [alt] and type a number to switch to that desktop.
For more key commands, enter
man evilwm or visit this Wikibook.
You can make evilwm a little less evil by editing your ~/.xinitrc or ~/.xsession file, which runs when X starts. You can use this to start helper programs along with evilwm and to give evilwm itself some command-line arguments. This is the ~/.xinitrc I’m currently using with evilwm:
Read the comments to see what each line does. At the end, the command-line arguments, I’ve given evilwm tell it to use a window border of 10 pixels instead of the default 1, make inactive window borders brown, make active window borders red, and set the default terminal to Terminator instead of xterm. The resulting desktop looks like this:
I won’t get into everything you can do with your ~/.xinitrc, but I will mention that xbindkeys is a great thing to include for custom keybindings, since that is a feature not built into evilwm. To map your custom keybindings, copy the default configuration over to a file in your home directory called .xbindkeysrc:
Next, open your ~/.xbindkeysrc and add keybindings with the following format:
For example, to add a keyboard shortcut for the gmrun launcher, I added this to my ~/.xbindkeysrc:
Evilwm might be a godsend for some anti-desktop-environment, old school, minimalist hackers, but I’m pretty content using KDE.
What are your favorite minimalist window managers?