A window manager is much what the description would suggest; it is a program that manages the windows on an X "desktop." The functionality varies a lot; at a minimum, it tends to include providing interfaces to allow the user to select, move, and resize windows.
That is usually only the beginnings of the functionality, as window managers increasingly bundle in more and more functionality, including things like:
Customizing screen and window "decorations;"
Pagers to manipulate "virtual desktops;"
Various sorts of "application launchers," from simple menu systems to complex "docking stations."
My personal preferences tend to fluctuate between "conventional" (e.g. - Window Maker ) and "minimalist" (e.g. wmx ), though I occasionally try out some of the wilder options. The wildest one I can recall, both in terms of behaviour and implementation, was GwML, implemented in Objective CAML.
By and large, I'd tend to consider it a waste to put vast effort into this area; window managers only control the "edges" of windows, not their insides, thus limiting the impact that twiddling with them can have. Furthermore, as a bit of a "bash" on attempts to have spectacularly sophisticated window managers, it seems all too easy for window manager developers to get rather excited about almost invisible bits of functionality that are attached to desktop behaviour vastly too abstruse for anyone less than a window manager developer to have a clue of what to do about it.
A web page describing various X window managers. twm, fvwm, fvwm2, fvwm95, enlightenment, afterstep, ctwm, olwm, gwm, and more...
This has information about relative code lineages of many popular (and obscure) window managers. Giles Orr has been a periodic presenter at GTALUG.
A minimalist window manager for X based on the Plan 9 window manager. I commonly use the very-slightly-less-minimalist window manager, wmx, also available at this site.
wmx was written in C++, and, despite common ill opinions of C++, consumes minimal memory and other computing resources...
X Window managers that behave like screen
Implemented in Common Lisp
CLFSWM - A(nother) Common Lisp FullScreen Window Manager
Implemented in Section 2
TreeWM has a couple of "claims to fame":
It has the concept where "desktops" (aka virtual screens) can themselves contain further desktops, where, therefore, you have a "tree" of desktops.
It has a "command mode" controllable using a vi-like keyboard interface.
It can also be controlled from shell scripts using a fifo, .cmdtreewm, by injecting commands into the fifo.
xmonad : a tiling window manager written in Haskell
With the configuration the author provides for it, this is perhaps the "wildest" of the X window managers, at least graphically.
Window Maker an X window manager intended for use with GNUStep.
Windowmaker, the world's leading software for windows and doors - Not an X window manager
Yet Another WM
A Scheme-based X Window Manager written for the GNOME Project that uses Guile.
This is an The X Window System window manager that uses a very LISP-like language for configuration.
tvtwm with pie menus added in. Sources findable: FTP piewm-1.0 from Crynwr
I consider the average usage of pie graphs to be an abomination, but hear that while reading statistical information from "pies" may be inferior to bar graphs, the principle may reverse itself when trying to choose from a menu.
Tools for constructing X window managers using Tk.
Sawfish: an extensible window manager
Sawfish, once known as Sawmill, is an extensible window manager using an Emacs Lisp-like scripting language (based on librep ) -- all window decorations are configurable, the basic idea is to have as much user-interface policy as possible controlled through the Lisp language. This is no layer on top of twm, but a wholly new architecture.
Despite this extensibility its policy is currently very minimal compared to most window managers. Its aim is simply to manage windows in the most flexible and attractive manner possible. As such it does not implement desktop backgrounds, applications docks, or other things that may be achieved through separate applications.
All high-level wm functions are implemented in Lisp for future extensibility or redefinition. Currently this includes menus (using GTK+ ), interactive window moving and resizing, virtual workspaces, iconification, focus/transient window policies, frame theme definitions and much more.
A window manager written for GNUStep in Objective C
nawm - Not A Window Manager
nawm may not be a window manager, but it's related. Its purpose is to allow you to build scripts that provide controls that wouldn't be part of the window manager but that might provide things like "launchers."
CLFSWM - Common Lisp FullScreen Window Manager - window manager implemented in Common Lisp