Evilwm: A Devilishly Simple Window Manager for Linux

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:

evilwm-desktop-cropped

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:

git clone http://www.6809.org.uk/repos/evilwm.git

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:

exec evilwm

Now an evilwm session will start when you run startx.

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 [ctrl] and [alt].

If you want to launch another application, you have to type its command into the terminal. For example, to launch Firefox:

firefox-bin

evilwm-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:

#Set background image
feh --bg-scale /home/ruji/Pictures/BackgroundsAndTextures/mandelbulber-05-1600x900-with-gentoo-logo.png
 
#Set cursor style so it isn't just an "X"
xsetroot -cursor_name left_ptr
 
#Use your keybindings; must have xbindkeys installed
xbindkeys &
 
#Start Gkrellm
gkrellm &
 
#Start evilwm
evilwm -bw 10 -bg brown -fg red -term terminator

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:

evilwm-desktop-custom

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:

xbindkeys --defaults > ~/.xbindkeysrc

Next, open your ~/.xbindkeysrc and add keybindings with the following format:

"program"
   [key] + [key]

For example, to add a keyboard shortcut for the gmrun launcher, I added this to my ~/.xbindkeysrc:

"gmrun"
   Control + Space

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?