Introduction: calm window manager

Calm window manager (mainly known for its shorthand name cwm) is a member of a once-powerful and now-declining family of minimalist X11 window managers. It is relatively unknown outside the OpenBSD community, but it deserves more notice.


The development of cwm was started back in 2004, when Marius Aamodt Eriksen released a rewrite of evilwm, needed to support several new features that were difficult to implement in evilwm’s code base. After year of development the original author lost interest and stopped updating cwm.

The project was reborn in April 2007, when it was imported into OpenBSD’s base. A bunch of new features were added within a couple of months and cwm replaced wm2 as OpenBSD’s minimalist window manager in November 2007 with the release of OpenBSD 4.2.

Mouse-less window management

The main goal of every minimalist window manager is to get out of the user’s way. Cwm is pretty good in doing so – it allows the user to manage windows with keyboard shortcuts so that one doesn’t actually need to touch the mouse.

Everything can be done from the keyboard: resizing, moving, hiding, raising or lowering windows, etc. Cwm has different shortcuts for resizing and moving windows by 1px and by 10px, and a shortcut to resize a window to full screen. Naturally, the default shortcuts are vi-like.

Furthermore, cwm can be configured to move the mouse cursor, so that one could use the computer without any pointing device.

Searching the lists

Using cwm mainly involves searching. Launching applications, switching windows, connecting to other hosts using SSH – everything can be done by searching the relevant list.

The main principle is the same for all these actions: cwm shows a list of relevant content (executables in $PATH, ./.known_hosts file entries, windows names) and removes the entries that doesn’t match the user’s input.

Window groups

There is no virtual desktop concept in cwm. Instead it supports window groups, which can be used to emulate virtual desktops in a similar manner as they are in most dynamic window managers.

Each window can be assigned to any number of groups. The groups themselves can be manipulated the same way as windows – they can be hidden, lowered and raised with shortcuts.

In order to make groups behave as virtual desktop the user can enable the sticky mode, so that all new windows would be assigned to the default group.


Several aspects of cwm may be configured by editing ~/.cwmrc. The user may add, modify or remove shortcuts, change colors and other aspects of window management behavior.

Arbitrary commands can be bound to key combinations. The only default binding is the invocation of xterm by pressing control, meta (left alt) and enter keys simultaneously.

Additionally, the user may configure screen border offsets, so that cwm can be used with external toolbar like dzen, xmobar, xstatbar or even as a window manager for GNOME.

The new settings can be applied to running instance of cwm without restarting the session.


The word calm in the cwm’s name isn’t accidental. After getting accustomed to its key bindings and some configuration you nearly forget about it. It just moves out of your way, so you really don’t find yourself distracted from your tasks.

Give it a try!


  1. 2011-11-22 10:02 pm
  2. 2011-11-23 2:51 am
  3. 2011-11-23 9:01 am
  4. 2011-11-23 9:08 am
    • 2011-11-23 9:15 am
      • 2011-11-23 10:25 am
        • 2011-11-23 11:14 am
        • 2011-11-23 7:01 pm
        • 2011-11-24 5:54 am
          • 2011-11-24 8:49 am
    • 2011-11-23 11:09 am
    • 2011-11-23 12:08 pm
      • 2011-11-23 2:38 pm
        • 2011-11-23 9:54 pm
    • 2011-11-23 4:16 pm
    • 2011-11-24 4:14 pm
      • 2011-11-24 5:38 pm
  5. 2011-11-25 10:28 am