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.
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.
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.
If you enable it with -s snap-margin
moving a window with the mouse
snaps to the screen borders or other windows.
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.
By pressing MODKEY + m or MODKEY + x you maximize windows either vertically or fullscreen. Pressing the same key again will toggle the effect.
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.
Window placement, including placement on virtual workspaces, is remembered by if you quit (or crash) the window manager and start it later.
mcwm doesn't move or resize windows after mapping them unless initiated by user request or if a physical screen is detached.
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.
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.
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.
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.
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>