mcwm is a minimalist window manager for the X Window System written directly on top of the X protocol C-language Binding, XCB. It is a traditional floating window manager with no fancy smarts like those in modern tiling window managers.
In mcwm all functions are available from the keyboard but a pointing device can be used for move, resize and raise/lower.
The name “mcwm” comes from ”MC's Window Manager”.
Unfortunately, there are a few other mcwms. The most known is Multi-Cursor Window Manager.
Read more about the features.
For planned features, see the WISHLIST and TODO files in the distribution.
Click images below for the full screenshots. The files are ~70 kB–140 kiB, but 1920x1200 pixels.
Taken from the external 24" screen connected to my laptop:
Taken from the 24" screen on the thin client in my office:
There is not much to see of the window manager per se, really. Mostly what you see on the screenshots are a couple of urxvt terminals. In one case there is an rclock and 9menu running. In the other there are a couple of Emacs frames and a dzen status window.
The current focus is marked by a thin amber border. Window borders are a feature in X. They are not drawn by mcwm. mcwm never draws anything at all.
mcwm is distributed under the ISC license, which says:
Permission to use, copy, modify, and distribute this software for any purpose with or without fee is hereby granted, provided that the above copyright notice and this permission notice appear in all copies.
THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE.
I was a CTWM user for a long time. You can see where I'm coming from by having a look at my CTWM configuration file.
Configuring and patching CTWM made me realize at least some of the things I want from a window manager. I'm afraid that I consider the CTWM source code a lost cause, so in 2008 I switched to evilwm, patched it a bit but was still not satisfied.
In a hacking frenzy in two days in June of 2010 while the baby daughter was asleep I wrote mcwm. At the end of those two days most of the current functionality was present.
evilwm was an inspiration for most of the key bindings and some functionality in mcwm. Of course, many of the key bindings were originally inspired by vi and nethack!
The tinywm window manager was an inspiration for the mouse resize and move functions in mcwm. I started the mcwm project by re-implementing something like tinywm using XCB functions instead of Xlib functions.
There are a few other window managers that use XCB but most of them are tiling.
You might want to use some other programs with mcwm.
In the mcwm distribution I have included a program called hidden, which lists hidden 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.
You will most likely need a decent terminal emulator. I use rxvt-unicode.
I also use the dzen2 status bar and the screen locker slock.
Other programs you might want to use include the status program conky, the menu program dmenu and the hotkey configuration program xbindkeys.
Eventually, when mcwm supports more of the Extended Window Manager Hints, something like fbpanel might also be interesting for some people. Some of its features should work right now.
Combining these programs with mcwm makes a really efficient and rather lightweight desktop.
mcwm is based on XCB. The standard XCB documentation can be found here:
The documentation is, to be nice, a bit lacking, but Michael Stapelberg, perhaps most known for the i3 window manager, has been working heroically on adding man pages for the XCB functions.
However, since XCB is a more or less straight translation of the X protocol into C, I found Robert W. Scheifler's X Window System Protocol reference text useful.
When you read Scheifler's text you can check for the corresponding
protocol calls in the
I also had good help when starting out on mcwm by Adrian Nye's “Xlib Programming Manual” from the O'Reilly series on the X Window System. My copy came from a dumpster dive many moons ago.
The “Inter-Client Communication Conventions Manual”, ICCCM, is also somewhat helpful but the more modern clients and window managers use the new “Extended Window Manager Hints”, EWMH.
mcwm is not as venerable as CTWM and the other old-timers. It hasn't been tested on a lot of hardware. It might act up on older hardware, especially since it doesn't know anything about colour maps, but other than that it should work.
Also note that mcwm doesn't know much about the “Extended Window Manager Hints”, so it probably won't work very well with docks, panels, systrays, file managers and other modern desktop tools.
Other than that I consider mcwm pretty stable. Please report to me at mc at the domain hack.org if you think you have found a bug.
There is an announcement-only mailing list. You can subscribe by sending the word “subscribe” in the body of a message to
mcwm-announce-request at the domain list.hack.org
There is a git repository here:
There's an Ohloh Project as well:
Last updated: <2014-02-22 17:22:11 CET>