Features of mcwm

mcwm is a minimalist window manager. Some features:


Small binary size, memory use and manageable size of source code.

Bradley Conroy reported (2010-11-18) that mcwm uses 200 kiB under Linux/x86 if linked statically with uclibc!

Source Lines of Code is ~3400.

Fast (probably)

mcwm is pretty fast for everyday use on modern hardware. However, mcwm moves and resizes windows while the window contents updates continously so you might not like it without 2D acceleration.

No icons

If you want to be able to hide/iconify windows you have to turn it on with a flag, -i. Please observe: You will need an external program to get windows back after having hidden them! You can use the 9icon or mcicon scripts in the distribution together with 9menu and xdotool. Some stand-alone panels might also work.

Snap to borders

If you enable it with -s snap-margin moving a window with the mouse snaps to the screen borders or other windows.

Sloppy focus

This means you can change the focus by only moving the pointer into a window but the focus won't change if the pointer strays away from the window and into the root window.

No other focus method is supported.

Toggling vertical and full screen maximizing

By pressing MODKEY + m or MODKEY + x you maximize windows either vertically or fullscreen. Pressing the same key again will toggle the effect.

Virtual workspaces

You can flip to up to 10 virtual workspaces with a key, by default MODKEY 0–9. You can change to the previous and the next workspace with MODKEY+c,v.

The number of workspaces is constant, I'm afraid. The default in the source is 10 workspaces.

Right now, there is only one set of workspaces. If you change workspace on one screen, you change on all of your screens.

Crash proof window placement

Window placement, including placement on virtual workspaces, is remembered by if you quit (or crash) the window manager and start it later.

Only users can move and resize windows

mcwm doesn't move or resize windows after mapping them unless initiated by user request or if a physical screen is detached.

Multihead support

mcwm has explicit support for using several physical screens at once (from version 20110721 using the RANDR extension). It knows the sizes of the physical screens and won't map windows outside them. mcwm moves and/or resizes windows if necessary if you remove or tilt a screen. Et cetera.

Please note: No support for doing the same thing under Xinerama.

Good keyboard control

You can control window moves, move to corners, move to a different physical screen, resize, raise/lower, maximize and vertical maximize with keyboard shortcuts.

You can also start a terminal emulator with a key. You can change to another program, terminal emulator or a program like 9menu, with the -t flag.

You can change workspace from the keyboard and fix (and unfix) a window on all workspaces. The latter is also the way you typically move a window from one workspace to another.

Changing focus from keyboard is done with MODKEY+Tab just like in most modern window managers, including Windows. If you have walked through a couple of windows on your current workspace and let go of MODKEY the focus changes. If you then press MODKEY+Tab once you end up with focus back in the window where you started.

If you press MODKEY+Shift+TAB while tabbing you will tab in the reverse order.

The default keybindings are listed in the manual page.

The keysyms are hardcoded, I'm afraid. If you want to change the key bindings, edit the 'user friendly' config.h and recompile.

WARNING: Before trying out mcwm, be sure that you know what keys generate the default modifier keys, Mod1 (for mouse operations) and Mod4 (everything else). Typically Mod1 is generated by your Meta or Alt key and Mod4 is typically generated by Super or Hyper. The latter keys are usually bound to the ‘Windows’ keys on a typical PC keyboard.

Try xmodmap -pm and/or xev if you're uncertain.

No garish decorations

There is only a tiny border around windows which changes colour if the window is in focus. The focus colour is different if the window is fixed to all workspaces.

The border is actually a property of the client window and is not something that mcwm ever draws. This is not a reparenting window manager. In fact, so far the window manager doesn't draw anything. Perhaps I'll keep it that way.

Few dependencies

I explicitly link to the core XCB library and some its helper libraries but they seem to have some dependencies of their own, especially for building.

Other Programs

You might want to use some other programs with mcwm to make a complete desktop environment.

In the mcwm distribution I have included a program called hidden, which lists iconified windows, and some scripts: mcicon, mcmenu and 9icon that all depend on the menu program 9menu. If you use hidden with -c to map hidden windows you also need xdotool to do the actual work.

You will most likely need a decent terminal emulator. I use rxvt-unicode. You might prefer the suckless alternative st or the old xterm.

Other programs you might want to use include:

Last updated: <2015-09-12 19:11:09 MEST>