
New patches:

[SwitchTrans.hs, initial version
l.mai@web.de**20070728153826] {
hunk ./MetaModule.hs 55
+import XMonadContrib.SwitchTrans ()
addfile ./SwitchTrans.hs
hunk ./SwitchTrans.hs 1
+-----------------------------------------------------------------------------
+-- |
+-- Module      :  XMonadContrib.SwitchTrans
+-- Copyright   :  (c) Lukas Mai
+-- License     :  BSD-style (see LICENSE)
+--
+-- Maintainer  :  <l.mai@web.de>
+-- Stability   :  unstable
+-- Portability :  unportable
+--
+-----------------------------------------------------------------------------
+
+{-# OPTIONS_GHC -fglasgow-exts #-}
+
+-- | Ordinary layout transformers are simple and easy to use but inflexible.
+-- This module provides a more structured interface to them.
+--
+-- The basic idea is to have a base layout and a set of layout transformers,
+-- of which at most one is active at any time. Enabling another transformer
+-- first disables any currently active transformer; i.e. it works like
+-- a group of radio buttons.
+--
+-- A side effect of this meta-layout is that layout transformers no longer
+-- receive any messages; any message not handled by @SwitchTrans@ itself
+-- will undo the current layout transformer, pass the message on to the base
+-- layout, then reapply the transformer.
+--
+-- Here's how you might use this in Config.hs:
+--
+-- > defaultLayouts =
+-- >     map (
+-- >         mkSwitch (M.singleton "full" (const $ noBorders full)) .
+-- >         mkSwitch (M.singleton "mirror" mirror)
+-- >     ) [ tiled ]
+--
+-- (The noBorders transformer is from @XMonadContrib.NoBorders@.)
+--
+-- This example is probably overkill but it's very close to what I actually use.
+-- Anyway, this layout behaves like the default @tiled@ layout, until you send it
+-- @Enable@\/@Disable@\/@Toggle@ messages. From the definition of @keys@:
+--
+-- > ...
+-- >    , ((modMask,               xK_f     ), sendMessage $ Toggle "full")
+-- >    , ((modMask,               xK_r     ), sendMessage $ Toggle "mirror")
+--
+-- (You may want to use other keys. I don't use Xinerama so the default mod-r
+-- binding is useless to me.)
+--
+-- After this, pressing @mod-f@ switches the current window to fullscreen mode.
+-- Pressing @mod-f@ again switches it back. Similarly, @mod-r@ rotates the layout
+-- by 90 degrees (and back). The nice thing is that your changes are kept:
+-- Rotating first then changing the size of the master area then rotating back
+-- does not undo the master area changes.
+--
+-- The reason I use two stacked @SwitchTrans@ transformers instead of
+-- @mkSwitch (M.fromList [("full", const $ noBorders full), ("mirror", mirror)])@
+-- is that I use @mod-f@ to "zoom in" on interesting windows, no matter what other
+-- layout transformers may be active. Having an extra fullscreen mode on top of
+-- everything else means I can zoom in and out without implicitly undoing "normal"
+-- layout transformers, like @mirror@. Remember, inside a @SwitchTrans@ there can
+-- be at most one active layout transformer.
+module XMonadContrib.SwitchTrans (
+    Toggle(..),
+    Enable(..),
+    Disable(..),
+    mkSwitch
+) where
+
+import XMonad
+import Operations
+
+import qualified Data.Map as M
+import Data.Map (Map)
+
+-- | Toggle the specified layout transformer.
+data Toggle = Toggle String deriving (Eq, Typeable)
+instance Message Toggle
+-- | Enable the specified transformer.
+data Enable = Enable String deriving (Eq, Typeable)
+instance Message Enable
+-- | Disable the specified transformer.
+data Disable = Disable String deriving (Eq, Typeable)
+instance Message Disable
+
+data State a = State {
+    base :: Layout a,
+    currTag :: Maybe String,
+    currLayout :: Layout a,
+    currFilt :: Layout a -> Layout a,
+    filters :: Map String (Layout a -> Layout a)
+}
+
+-- | Take a transformer table and a base layout, and return a
+-- SwitchTrans layout.
+mkSwitch :: Map String (Layout a -> Layout a) -> Layout a -> Layout a
+mkSwitch fs b = switched st
+    where
+    st = State{
+        base = b,
+        currTag = Nothing,
+        currLayout = b,
+        currFilt = id,
+        filters = fs }
+        
+provided :: Bool -> X (Maybe a) -> X (Maybe a)
+provided c x
+    | c = x
+    | otherwise = return Nothing
+
+switched :: State a -> Layout a
+switched
+    state@State{
+        base = b,
+        currTag = ct,
+        currLayout = cl,
+        currFilt = cf,
+        filters = fs
+    } = Layout {doLayout = dl, modifyLayout = ml}
+    where
+    enable tag alt = do
+        modifyLayout cl (SomeMessage UnDoLayout)
+        return . Just . switched $ state{
+            currTag = Just tag,
+            currFilt = alt,
+            currLayout = alt b }
+    disable = do
+        modifyLayout cl (SomeMessage UnDoLayout)
+        return . Just . switched $ state{
+            currTag = Nothing,
+            currFilt = id,
+            currLayout = b }
+    dl r s = do
+        (x, _) <- doLayout cl r s
+        return (x, Nothing)  -- sorry Dave, I can't let you do that
+    ml m
+        | Just (Disable tag) <- fromMessage m
+        , M.member tag fs
+        = provided (ct == Just tag) $ disable
+        | Just (Enable tag) <- fromMessage m
+        , Just alt <- M.lookup tag fs
+        = provided (ct /= Just tag) $ enable tag alt
+        | Just (Toggle tag) <- fromMessage m
+        , Just alt <- M.lookup tag fs
+        =
+            if (ct == Just tag) then
+                disable
+            else
+                enable tag alt
+        | Just UnDoLayout <- fromMessage m
+        = do
+            modifyLayout cl m
+            return Nothing
+        | otherwise = do
+            x <- modifyLayout b m
+            case x of
+                Nothing -> return Nothing
+                Just b' -> do
+                    modifyLayout cl (SomeMessage UnDoLayout)
+                    return . Just $ switched state{
+                        base = b',
+                        currLayout = cf b' }
}

Context:

[FocusNth initial import
Karsten Schoelzel <kuser@gmx.de>**20070725203305] 
[use a little more contrast in default tabs.
David Roundy <droundy@darcs.net>**20070724143723] 
[3col fix: do not switch to tall layout on resize/incmastern
Kai Grossjohann <kai@emptydomain.de>**20070723212754] 
[3col rounding
Kai Grossjohann <kai@emptydomain.de>**20070721204026] 
[fix 3col layout for nmaster + 1 windows
Kai Grossjohann <kai@emptydomain.de>**20070721150825
 Do like two column layout if there are nmaster+1 windows (putting 1 window
 in the right column).
] 
[Three column layout
Kai Grossjohann <kai@emptydomain.de>**20070721144654
 This layout is similar to tall, but has three columns.  The first column
 is the master column.
] 
[Made the direction of spiral in Spiral.hs optionally configurable
bobstopper@bobturf.org**20070721002307] 
[DeManage: take a Window as argument
Spencer Janssen <sjanssen@cse.unl.edu>**20070718204410] 
[Typo
Spencer Janssen <sjanssen@cse.unl.edu>**20070718204041] 
[Add XMonadContrib.DeManage: a module for unmanaging windows (like panels)
Spencer Janssen <sjanssen@cse.unl.edu>**20070718203107] 
[Tabbed.hs: corrected error in Usage reported by Xavier Maillard
Andrea Rossato <andrea.rossato@unibz.it>**20070717050034] 
[fixes Commands.hs
Andrea Rossato <andrea.rossato@unibz.it>**20070716164017] 
[MetaModule.hs: add missing modules.
joachim.fasting@gmail.com**20070715205857] 
[Magnifier: unbreak: raise focus window
Peter De Wachter <pdewacht@gmail.com>**20070630072206] 
[Spiral.hs: correct module header.
joachim.fasting@gmail.com**20070707212836] 
[LayoutScreens.hs: correct module header.
joachim.fasting@gmail.com**20070701215712] 
[link to xinerama-dmenu patch for dmenu 3.2
Jason Creighton <jcreigh@gmail.com>**20070708021413
 Thanks to Dave Harrison for an updated version of the patch.
] 
[add FlexibleResize to MetaModule
l.mai@web.de**20070708130229] 
[Tabbed: updated usage information
Andrea Rossato <andrea.rossato@unibz.it>**20070707065123] 
[Tabs should stay beneath any floating window
Andrea Rossato <andrea.rossato@unibz.it>**20070707064941
 This ifxes the issue reported by Geoffrey Alan Washburn: " Sometimes the
 tabs will be drawn on top of floating windows." Not anymore!
] 
[Tabbed: added more configuration options
Andrea Rossato <andrea.rossato@unibz.it>**20070706130845
 It is now possible to configure active and inactive border colors, and
 active and inactive text colors (i.e. tabs are now very similar to Ion3
 tabs: former Ion users may appreciate).
] 
[NamedWindows: if fetchName returns Nothing sets the name to resName ClassHint
Andrea Rossato <andrea.rossato@unibz.it>**20070706130644
 fetchName may return a Nothing if the window's name contains multi byte
 characters. In such a case the resName string of the ClassHints of that
 window will be used instead.
] 
[the gaps list should be filled with the default value from Config.hs
Andrea Rossato <andrea.rossato@unibz.it>**20070704224110] 
[SimpleStacking: -Wall police
Alec Berryman <alec@thened.net>**20070704201255] 
[SimpleStacking: remove note about Xinerama incompatability, works fine now
Alec Berryman <alec@thened.net>**20070704200626] 
[ScreenLayouts.hs: updates to the last API changes
Andrea Rossato <andrea.rossato@unibz.it>**20070703201145
 A silent API change broke this nice piece of David's code: Spencer decided
 to move screen details into StackSet, and there we went to manipulate them!
] 
[More ScreenDetails fixes
Spencer Janssen <sjanssen@cse.unl.edu>**20070630065916] 
[Make GreedyView work with ScreenDetails
Spencer Janssen <sjanssen@cse.unl.edu>**20070630065643] 
[resolve conflicts in Decoration and Tabbed.
David Roundy <droundy@darcs.net>**20070629204518
 Note that you no longer need simpleStacking when using tabbed.
] 
[resolve conflict in Square.
David Roundy <droundy@darcs.net>**20070629201636] 
[clean up code in Combo.
David Roundy <droundy@darcs.net>**20070624171346
 This adds some type safety, since the super-layout is now of a distinct
 type from the sublayouts.  This avoids the ugliness we had, of passing
 "fake" windows to the super layout.  Now we directly lay out the layouts.
] 
[add CopyWindow module, to support sticky/tagged windows.
David Roundy <droundy@darcs.net>**20070624155648
 This module allows dwm-style tagging (as I understand dwm).  You can have a
 given window visible in multiple workspaces.  If it's visible in two
 workspaces both of which are visible, a gap will show up in one of them
 (which is something that needs fixing in xmonad core).  Also defines a
 kill1 which is like kill, but only removes from the current workspace a
 window if it's in multiple workspaces.
] 
[make everything work with new doLayout.
David Roundy <droundy@darcs.net>**20070623210952
 This modifies all the contrib modules to work (so far as I know) with the
 new contrib layout.  The exception is the LayoutHooks module, which isn't
 used.  It exports an API that is inherently unsafe, so far as I can tell
 (and always has been).
] 
[move Accordian to use idModify.
David Roundy <droundy@darcs.net>**20070623143745] 
[introduce idModify which is just "const (return Nothing)".
David Roundy <droundy@darcs.net>**20070623143542] 
[move Spiral to LayoutHelpers.
David Roundy <droundy@darcs.net>**20070623143516] 
[flexible resizing for floating windows
l.mai@web.de**20070629171038
 
 The default resize handler for floating windows warps the mouse pointer to
 the bottom right corner of the window (fixing the opposite, upper left,
 corner). This extension lets you use any of the four window corners as
 grabbing points, allowing more flexible resizing.
 
] 
[Note that SimpleStacking is incompatible with Xinerama
Jason Creighton <jcreigh@gmail.com>**20070627035426
 It's unclear to me what SimpleStacking is supposed to accomplish, so I'm just
 going to note that it doesn't work with Xinerama. (Due to assuming that the
 current workspace is the one being laid out)
] 
[Tabbed: Make use of the Stack to get focused window
Jason Creighton <jcreigh@gmail.com>**20070627033910] 
[Accordion.hs: whitespace.
joachim.fasting@gmail.com**20070626071449
 Makes Haddock not complain about not finding documentation for '$'.
] 
[MetaModule.hs: add LayoutHelpers.
joachim.fasting@gmail.com**20070626065522
 Also tweaks import ordering slightly.
] 
[Tabbed.hs: updated usage information
Andrea Rossato <andrea.rossato@unibz.it>**20070625140735] 
[added configration options and moved font stuff to Decorations.hs
Andrea Rossato <andrea.rossato@unibz.it>**20070625140112
 Added a new data type to keep configuration options. tabbed now takes the shrinker and the configuration
 type.
 Fixed a bug related to vertical alignment of text.
] 
[Decoration.hs: added automatic font managment
Andrea Rossato <andrea.rossato@unibz.it>**20070625135722
 newDecoration now takes also a fontname to set fonts in decorations that use them.
 If an empty string is send the the default Xorg fonts will be loaded.
] 
[fix usage instructions on NoBorders.
David Roundy <droundy@darcs.net>**20070624141631] 
[remove BackCompat.hs
daniel@wagner-home.com**20070624171740] 
[Square.hs: put usage instructions after imports for Haddock compatibility.
joachim.fasting@gmail.com**20070623184938] 
[Magnifier.hs: quote screenshot url for Haddock compatibility.
joachim.fasting@gmail.com**20070623223227] 
[add new LayoutHelpers module.
David Roundy <droundy@darcs.net>**20070622142950] 
[Add SinkAll module.
joachim.fasting@gmail.com**20070623050510
 Provides a means of pushing all windows on the current workspace back into
 tiling. Not all that useful, but might be preferable to restarting or manually
 pushing windows.
] 
[Magnifier.hs: needs -fglasgow-exts to compile.
joachim.fasting@gmail.com**20070622111442] 
[fix usage info for LayoutScreens.
David Roundy <droundy@darcs.net>**20070622132618] 
[add new LayoutScreens module.
David Roundy <droundy@darcs.net>**20070622131300] 
[Magnifier: raise the focus window
Peter De Wachter <pdewacht@gmail.com>**20070621192541] 
[Circle: raise the focus window
Peter De Wachter <pdewacht@gmail.com>**20070621191207] 
[Circle cleanups
Peter De Wachter <pdewacht@gmail.com>**20070621191125] 
[make Mosaic lay thigs out a bit better.
David Roundy <droundy@darcs.net>**20070621162632] 
[add SimpleStacking module to make Combo and Tabbed work together.
David Roundy <droundy@darcs.net>**20070621151524
 WARNING! This change will break existing Tabbed configurations.  The
 problem is that there is no way within a Layout's "doLayout" to safely
 modify the layout itself.  This makes LayoutHooks fragile, and more to the
 point, makes SimpleStacking fragile, so we can't safely define a
 
 tabbed' = simpleStacking . tabbed
 
 A workaround would have been to duplicate the tabbed code, but I'd rather
 leave the ugliness and get this fixed.
] 
[Make Magnifier's master window behavior customizable
Peter De Wachter <pdewacht@gmail.com>**20070620170020
 based on a suggestion by Tim Hobbs
] 
[Whitespace.
joachim.fasting@gmail.com**20070620115852] 
[Make Mosaic compile without warnings
Spencer Janssen <sjanssen@cse.unl.edu>**20070620153111] 
[make some layouts more general.
David Roundy <droundy@darcs.net>**20070620125420] 
[Mosaic.hs: get rid off some of the warnings generated by -Wall.
joachim.fasting@gmail.com**20070620123449
 Unused definitions and imports left in, as I assume they'll be used for
 something later on.
] 
[MetaModule.hs: add LayoutHooks.
joachim.fasting@gmail.com**20070620115457] 
[Combo.hs: use case instead of non-standard pattern matching.
joachim.fasting@gmail.com**20070620112805
 Also uses fmap/maybe instead of do/case, which makes the code look a little
 cleaner (imo).
 Please note that I've only been able to test this briefly, but it seems to be
 working like it's supposed to.
] 
[Combo.hs: tweak usage instructions.
joachim.fasting@gmail.com**20070620112555
 tabbed needs an additional argument.
] 
[README: change reference to 'examples/'.
joachim.fasting@gmail.com**20070620093753] 
[Use Data.Ord.comparing in DynamicLog
Shachaf Ben-Kiki <shachaf@gmail.com>**20070620011016
 This patch replaces (compare `on`) with Data.ord.comparing, so on doesn't have
 to be defined.
] 
[Fix type signatures.
joachim.fasting@gmail.com**20070619220323
 Think this fixes the rest of the errors caused by the Layout change.
] 
[MagicFocus.magicFocus: fix type signature.
joachim.fasting@gmail.com**20070619214839
 Layout change caused because of missing type argument.
] 
[LayoutHooks.hs: add module header.
joachim.fasting@gmail.com**20070619204504] 
[Factor out pprWindowSet (and Xinerama version) from dynamicLog.
Shachaf Ben-Kiki <shachaf@gmail.com>**20070619183657
 This patch lets you pretty-print a WindowSet to a string, rather than always
 printing it out to stdout directly.
] 
[clean up TwoPane to work on Stacks as it ought.
David Roundy <droundy@darcs.net>**20070619150928] 
[run-xmonad.sh: don't hard-code path to mkfifo.
joachim.fasting@gmail.com**20070619124212
 mkfifo isn't located in /sbin on all distributions (Gentoo puts it in /bin).
 By temporarily appending /sbin to PATH both setups are supported.
 'which' and friends are not viable options since /sbin usually isn't in
 user's PATH by default.
] 
[Anneal.hs: add module header.
joachim.fasting@gmail.com**20070619002849] 
[run-xmonad.sh: use $HOME when setting PATH.
joachim.fasting@gmail.com**20070618234703] 
[Circle.hs: only compute sqrt 2 once.
joachim.fasting@gmail.com**20070618232051] 
[Magnifier.hs: add usage instructions.
joachim.fasting@gmail.com**20070618212215] 
[MagicFocus.hs: add module header and usage instructions.
joachim.fasting@gmail.com**20070618205421] 
[MagicFocus.magicFocus: add type signature.
joachim.fasting@gmail.com**20070618205222] 
[Accordion.hs: add module header and usage instructions.
joachim.fasting@gmail.com**20070618193626] 
[LayoutHints.hs: add usage thingie for Haddock.
joachim.fasting@gmail.com**20070618143234] 
[LayoutHints.hs: add module header.
joachim.fasting@gmail.com**20070618143059] 
[Dzen.hs: add module header.
joachim.fasting@gmail.com**20070618142915] 
[MetaModule.hs: correct module header.
joachim.fasting@gmail.com**20070618191905] 
[Remove all references to exec
Spencer Janssen <sjanssen@cse.unl.edu>**20070618201652] 
[Add Accordion to MetaModule
Spencer Janssen <sjanssen@cse.unl.edu>**20070618190526] 
[Add an "accordion" layout which puts non-focused windows in ribbons at the top and bottom of the screen.
glasser@mit.edu**20070618153943] 
[RotView.rotView: use Data.Ord.comparing.
joachim.fasting@gmail.com**20070618144502
 Looks a bit cleaner than '\x y -> compare (tag x) (tag y)'
] 
[shrink window names to fit tabs.
David Roundy <droundy@darcs.net>**20070617152340] 
[Tabbed.hs: fixed centerText issues and some binding shadowing warnings
Andrea Rossato <andrea.rossato@unibz.it>**20070617104219
 This patch fixes the centerText issue due to the inappropriate use of
 textExtends and textWidth. Those functions need a FontStruct id to
 operate, and this cannot be retrieved with queryFont (see comments in
 Graphics.X11.Xlib.Font).
 So we now get the FontStruct with loadQueryFont, we set the default
 Xorg fonts and we calculate things for (vertical and horizontal)
 centering.
 It also removes some binding shadows compiler warnings 
] 
[fix leak in Combo.
David Roundy <droundy@darcs.net>**20070616191052
 We leaked decorations, since UnDoLayout wasn't passed to the actual layouts
 that had decorations attached.  :(
] 
[Typo
Spencer Janssen <sjanssen@cse.unl.edu>**20070617000924] 
[Comment only
Spencer Janssen <sjanssen@cse.unl.edu>**20070617000805] 
[Import typo
Spencer Janssen <sjanssen@cse.unl.edu>**20070614211337] 
[Magnifier layout hack
Peter De Wachter <pdewacht@gmail.com>**20070614203219
 This layout hack increases the size of the window that has focus (the master
 window excepted). This causes it to overlap with nearby windows, so not for
 tiling purists :)
 
 Screenshot: http://caladan.rave.org/magnifier.png
] 
[Use Haskell '98 data declaration rather than GADT-style
Spencer Janssen <sjanssen@cse.unl.edu>**20070614205211] 
[WorkspaceDir.hs: info and documentation
Andrea Rossato <andrea.rossato@unibz.it>**20070614144443] 
[Warp.hs: info and documentation
Andrea Rossato <andrea.rossato@unibz.it>**20070614144426] 
[TwoPane.hs: info and documentation
Andrea Rossato <andrea.rossato@unibz.it>**20070614144409] 
[Submap.hs: info and documentation
Andrea Rossato <andrea.rossato@unibz.it>**20070614144348] 
[Square.hs: info and documentation
Andrea Rossato <andrea.rossato@unibz.it>**20070614144317] 
[Spiral.hs: info and documentation
Andrea Rossato <andrea.rossato@unibz.it>**20070614144300] 
[SimpleDate.hs: info and documentation
Andrea Rossato <andrea.rossato@unibz.it>**20070614144241] 
[RotView.hs: info and documentation
Andrea Rossato <andrea.rossato@unibz.it>**20070614144225] 
[NoBorders.hs: info and documentation
Andrea Rossato <andrea.rossato@unibz.it>**20070614144200] 
[NamedWindows.hs: info and documentation
Andrea Rossato <andrea.rossato@unibz.it>**20070614144135] 
[Mosaic.hs: info and documentation
Andrea Rossato <andrea.rossato@unibz.it>**20070614144118] 
[metaModule.hs: info and documentation
Andrea Rossato <andrea.rossato@unibz.it>**20070614144102] 
[HintedTile.hs: info and documentation
Andrea Rossato <andrea.rossato@unibz.it>**20070614144019] 
[GreedyView.hs: info and documentation
Andrea Rossato <andrea.rossato@unibz.it>**20070614143953] 
[FindEmptyWorkspace.hs: info and documentation
Andrea Rossato <andrea.rossato@unibz.it>**20070614143909] 
[DynamicLog.hs: info and documentation
Andrea Rossato <andrea.rossato@unibz.it>**20070614143839] 
[DwmPromote.hs: info and documentation
Andrea Rossato <andrea.rossato@unibz.it>**20070614143813] 
[Dmenu.hs: info and documentation
Andrea Rossato <andrea.rossato@unibz.it>**20070614143753] 
[Decoration.hs: info and documentation
Andrea Rossato <andrea.rossato@unibz.it>**20070614143731] 
[Combo.hs: info and documentation
Andrea Rossato <andrea.rossato@unibz.it>**20070614143700] 
[Circle.hs: info and documentation
Andrea Rossato <andrea.rossato@unibz.it>**20070614143550] 
[BackCompat.hs info e documentation
Andrea Rossato <andrea.rossato@unibz.it>**20070614064850] 
[Tabbed.hs: Get correct color values instead of assuming a 24-bit display
Jason Creighton <jcreigh@gmail.com>**20070613235049
 Using, eg, 0xBBBBBB directly makes assumptions about the server's colormap and
 only works on 24-bit displays.
 
 This patch fetches the colors on every doLayout call, which is ugly, but works.
 It would be nice if we could do all the required initColors only once.
] 
[added info to Commands.hs
Andrea Rossato <andrea.rossato@unibz.it>**20070613190908
 Haddock stuff.
] 
[add bsd-style license for xmonad contrib
Don Stewart <dons@cse.unsw.edu.au>**20070614025454] 
[Update license information
Spencer Janssen <sjanssen@cse.unl.edu>**20070613152829] 
[template for module information e documentation
Andrea Rossato <andrea.rossato@unibz.it>**20070613131029] 
[Remove some debugging statements I forgot about earlier
Stefan O'Rear <stefanor@cox.net>**20070613041112] 
[Update MagicFocus to the new StackSet
Spencer Janssen <sjanssen@cse.unl.edu>**20070613035323] 
[Magic Focus
Peter De Wachter <pdewacht@gmail.com>**20070612175357
 Automatically puts the focused window in the master position. It's magic.
 I wrote this for the Circle layout, but it's actually usable with other
 layouts as well.
] 
[add -fglasgow-exts to some modules that use it.
David Roundy <droundy@darcs.net>**20070612170349] 
[changes to work with Stacks that can't be empty.
David Roundy <droundy@darcs.net>**20070612151209] 
[add Combo and Square to MetaModule.
David Roundy <droundy@darcs.net>**20070612133753] 
[new module NoBorders to let a given layout have windows without borders.
David Roundy <droundy@darcs.net>**20070612133727
 This is designed for layouts like full and tabbed, where the red square
 around the screen actually conveys no information (except for weird windows
 that use the shape extension or something, so that more than one window is
 actually visible).  Save some real estate at no cost.
] 
[make combo sort of work with new doLayout.
David Roundy <droundy@darcs.net>**20070612133027
 For some reason (not entirely clear to me) this doesn't work properly just
 yet with the tabbed layout.  :( But at least it'll compile.  The trouble is
 that we have no way of tracking which tab ought to be visible without
 adding a *lot* of infrastructure.  I'd rather have that infrastructure in
 xmonad proper than reimplement all the focus-handling in combo, so for now
 I'll just delay upgrading my xmonad at work...
] 
[make square work with new doLayout.
David Roundy <droundy@darcs.net>**20070612133009] 
[add "Square" layout.
David Roundy <droundy@darcs.net>**20070612021048
 This is probably only ever useful in combination with Combo.
 It sticks one window in a square region, and makes the rest
 of the windows live with what's left (in a full-screen sense).
] 
[add new combo layout combiner.
David Roundy <droundy@darcs.net>**20070611224922] 
[In Decoration.hs, track rename of ModifyWindows
Stefan O'Rear <stefanor@cox.net>**20070612060713] 
[Refactor Decoration into a general layout-level hooks interface, and a decoration support module on top of that
Stefan O'Rear <stefanor@cox.net>**20070612060210] 
[the Stack can be Empty
Andrea Rossato <andrea.rossato@unibz.it>**20070612055144] 
[Documentation fix
Spencer Janssen <sjanssen@cse.unl.edu>**20070612035655] 
[Comment only
Spencer Janssen <sjanssen@cse.unl.edu>**20070612031305] 
[Fix LayoutHints in the presence of nonzero border widths
Stefan O'Rear <stefanor@cox.net>**20070611005407] 
[add keybinding to make aspect ratio flexible.
David Roundy <droundy@darcs.net>**20070611165915] 
[Note the modules I maintain
Spencer Janssen <sjanssen@cse.unl.edu>**20070611184830] 
[Add MetaModule
Spencer Janssen <sjanssen@cse.unl.edu>**20070611184601] 
[Updates to work with recent API changes
Spencer Janssen <sjanssen@cse.unl.edu>**20070611183439] 
[Rename safeIO to catchIO
Spencer Janssen <sjanssen@cse.unl.edu>**20070611162028] 
[add WorkspaceDir, which sets the current directory in a workspace.
David Roundy <droundy@darcs.net>**20070611154041
 Actually, it sets the current directory in a layout, since there's no way I
 know of to attach a behavior to a workspace.  This means that any terminals
 (or other programs) pulled up in that workspace (with that layout) will
 execute in that working directory.  Sort of handy, I think.
] 
[fmt 
Don Stewart <dons@cse.unsw.edu.au>**20070611053450] 
[added dynamicLogXinerama, a workspace logger that's nicer for Xinerama
Jason Creighton <jcreigh@gmail.com>**20070611051810] 
[redraw decorations on PropertyNotify
Jason Creighton <jcreigh@gmail.com>**20070611021408
 newDecoration now takes a Window parameter, which is the window the decoration
 is "for". If there is a PropertyNotify for that window, the decoration is
 redrawn.
] 
[use safe peek instead of unsafe focus
Jason Creighton <jcreigh@gmail.com>**20070611015437
 Fixes crashing bug with Xinerama where you have a tabbed layout on one screen
 and attempt to switch to an empty workspace on the other.
] 
[make Tabbed respect the y position of the layout rect (statusbar bugfix)
Jason Creighton <jcreigh@gmail.com>**20070610231510] 
[tune layout of Tabbed just a bit.
David Roundy <droundy@darcs.net>**20070610203513] 
[make Decoration set the input mask appropriately.
David Roundy <droundy@darcs.net>**20070610203451] 
[Updates for Layout API change
Spencer Janssen <sjanssen@cse.unl.edu>**20070610203840] 
[color focussed tab differently.
David Roundy <droundy@darcs.net>**20070610195743] 
[update Mosaic for latest changes.
David Roundy <droundy@darcs.net>**20070610145816] 
[maximize rather than minimize the rating.
David Roundy <droundy@darcs.net>**20070601183240] 
[fix error in select.
David Roundy <droundy@darcs.net>**20070601183147] 
[improve changeMosaic.
David Roundy <droundy@darcs.net>**20070601175042] 
[cut obsolete description of mosaic.
David Roundy <droundy@darcs.net>**20070609131456] 
[start switching over to a Monte Carlo algorithm for Mosaic
David Roundy <droundy@darcs.net>**20070601170505] 
[new layout algorithm for Mosaic.
David Roundy <droundy@darcs.net>**20070527191153] 
[display names of windows on tabs.
David Roundy <droundy@darcs.net>**20070610163729] 
[make Decoration draw the window initially.
David Roundy <droundy@darcs.net>**20070610163651
 We still don't respond to expose events.  :(
] 
[Fix name of xmonad-clock in compilation instructions.
glasser@mit.edu**20070610155204] 
[add Decoration module to be used to easily define decorations.
David Roundy <droundy@darcs.net>**20070610153939] 
[add sketch of tabbed layout.
David Roundy <droundy@darcs.net>**20070610153926] 
[make LayoutHints work with new modifyLayout (in X).
David Roundy <droundy@darcs.net>**20070610145740] 
[tag visibles with <N>
Don Stewart <dons@cse.unsw.edu.au>**20070610111931] 
[tweak pkill
Don Stewart <dons@cse.unsw.edu.au>**20070610093027] 
[greedydoc
dave@nullcube.com**20070610091056
 Add documentation on how to use GreedyView as your default workspace switcher.
] 
[use all 3 load values
Don Stewart <dons@cse.unsw.edu.au>**20070610090959] 
[Modified xmonad-clock.c to display battery information from ACPI (will work only on linux though). Also restored three load averages instead of only one.
buisse@cs.chalmers.se**20070610090228] 
[example xinitrc
Don Stewart <dons@cse.unsw.edu.au>**20070610085715] 
[update run-xmonad.sh
Don Stewart <dons@cse.unsw.edu.au>**20070610063915] 
[no need for ./scripts/xmonad-status.c, update run-xmonad.sh
Don Stewart <dons@cse.unsw.edu.au>**20070610062806] 
[add DynamicLog.hs
Don Stewart <dons@cse.unsw.edu.au>**20070610062757] 
[make LayoutHints robust with regard to future addition of Layout fields.
David Roundy <droundy@darcs.net>**20070609173725] 
[remove out of date ./scripts/xmonad-status.hs
Don Stewart <dons@cse.unsw.edu.au>**20070610005107] 
[add new LayoutHints module that makes layouts respect size hints.
David Roundy <droundy@darcs.net>**20070604213716] 
[improve xmonad-status.c
Don Stewart <dons@cse.unsw.edu.au>**20070609140258] 
[Add C script for parsing new logging encoding, and displaying workspace info
Don Stewart <dons@cse.unsw.edu.au>**20070609131856] 
[missing unsetenv
Don Stewart <dons@cse.unsw.edu.au>**20070609090127] 
[add tiny clock program (C) i'm using in the status bar
Don Stewart <dons@cse.unsw.edu.au>**20070609080435] 
[remove obsolete 'examples' dir
Don Stewart <dons@cse.unsw.edu.au>**20070609061450] 
[latest version of xmonad-status.hs
Don Stewart <dons@cse.unsw.edu.au>**20070609060913] 
[remove dead version
Don Stewart <dons@cse.unsw.edu.au>**20070609060857] 
[Circle layout
Peter De Wachter <pdewacht@gmail.com>**20070606064153
 Windows are arranged in a circle around the master window. Rather nice to use
 with a mouse, if you got many windows open.
 
 Screenshot: http://caladan.rave.org/circle.png
] 
[Submap: For creating keyboard submappings
Jason Creighton <jcreigh@gmail.com>**20070606061941] 
[nicer format for dynamic workspaces
Don Stewart <dons@cse.unsw.edu.au>**20070606045705] 
[add script which only draws current workspace, and those with clients
Don Stewart <dons@cse.unsw.edu.au>**20070606044544] 
[In docs, change name of program from mux to xmonad-status.
glasser@mit.edu**20070605140045] 
[Add xmonad-status.hs
Don Stewart <dons@cse.unsw.edu.au>**20070605132108
 
 An external status bar client for xmonad. 
 
 See screenshots:
 
     http://www.cse.unsw.edu.au/~dons/tmp/dons-dzen-status.png
     http://www.cse.unsw.edu.au/~dons/tmp/xmonad-dzen-tags.png
 
] 
[gapless tiled layout obeying size hints
Peter De Wachter <pdewacht@gmail.com>**20070605071716] 
[Contrib package for 6.4 users
daniel@wagner-home.com**20070604225534] 
[XMonadContrib.ReadMap: a Read instance of Map for GHC 6.4 users
daniel@wagner-home.com**20070602064318] 
[keybindings to warp pointer to window center
daniel@wagner-home.com**20070602062328] 
[XMonadContrib.Commands: for workspace and screen commands, leave out W/S tag
glasser@mit.edu**20070601161351] 
[New contrib module: run internal xmonad commands via dmenu
glasser@mit.edu**20070601043849] 
[Note that my xinerama patch is now in dzen.
glasser@mit.edu**20070601041112] 
[Rescreen is in main xmonad now
Spencer Janssen <sjanssen@cse.unl.edu>**20070528050656] 
[replace "name" in NamedWindow with a Show instance.
David Roundy <droundy@darcs.net>**20070526185114] 
[[Spiral] blend in the scale factor so it doesn't have any effect on the smallest windows
joe.thornber@gmail.com**20070525032732] 
[[Spiral] last rect takes all available space
joe.thornber@gmail.com**20070524120239] 
[[Spiral] Introduce a simpler Rect data type to remove a lot of the fromIntegrals
joe.thornber@gmail.com**20070524100423] 
[[Spiral] divideRects now takes a list of directions to split in
joe.thornber@gmail.com**20070524090211] 
[[Spiral] misc tidying
joe.thornber@gmail.com**20070524085537] 
[[Spiral] remove old spiral code
joe.thornber@gmail.com**20070524084805] 
[[Spiral] add fibonacci spiral
joe.thornber@gmail.com**20070524084423] 
[Allow clients of NamedWindows to get at the name.
glasser@mit.edu**20070523184251] 
[dzen module (with xinerama support, which requires glasser's Xinerama patch to dzen)
glasser@mit.edu**20070523184315] 
[Extract NamedWindow support from Mosaic into its own module
glasser@mit.edu**20070523155855] 
[remove SwapFocus (which is no longer possible)
David Roundy <droundy@darcs.net>**20070523153841
 This module depended on the focus stack.
] 
[Fix Spiral's module name
Spencer Janssen <sjanssen@cse.unl.edu>**20070522170909] 
[[SPIRAL] add spiral tiling layout
joe.thornber@gmail.com**20070522062537] 
[Make RotView compile.
Miikka Koskinen <arcatan@kapsi.fi>**20070522075338
 
 As I'm not a Xinerama user, I'm not sure if rotView should consider only
 hidden workspaces or also visible but not focused workspaces. I thought hidden
 workspaces only would be more logical.
] 
[bug fix in DwmPromote. whoops.
Miikka Koskinen <arcatan@kapsi.fi>**20070522062118] 
[make FindEmptyWorkspace compile
Miikka Koskinen <arcatan@kapsi.fi>**20070521123239] 
[make DwmPromote compile
Miikka Koskinen <arcatan@kapsi.fi>**20070521123140] 
[updated Dmenu.hs to work with zipper StackSet
Jason Creighton <jcreigh@gmail.com>**20070521233947] 
[Add GreedyView
Spencer Janssen <sjanssen@cse.unl.edu>**20070521220048] 
[Rescreen: collects new screen information
Spencer Janssen <sjanssen@cse.unl.edu>**20070521164808] 
[Fixes for windowset -> workspace rename
Spencer Janssen <sjanssen@cse.unl.edu>**20070521042118] 
[TwoPane: hide windows that aren't in view
Spencer Janssen <sjanssen@cse.unl.edu>**20070518224240] 
[make Mosaic even less picky by default.
David Roundy <droundy@darcs.net>**20070516175554] 
[add clear window message in Mosaic.
David Roundy <droundy@darcs.net>**20070516175518] 
[Comment only
Spencer Janssen <sjanssen@cse.unl.edu>**20070517211003] 
[Add instructions for TwoPane
Spencer Janssen <sjanssen@cse.unl.edu>**20070517210206] 
[Add TwoPane
Spencer Janssen <sjanssen@cse.unl.edu>**20070517195618] 
[throttle the exponential expense when many windows are present.
David Roundy <droundy@darcs.net>**20070516022123] 
[make mosaic configure windows by name rather than by Window.
David Roundy <droundy@darcs.net>**20070512215644
 Note that this is still pretty flawed.  Often window names change, and the
 layout then stagnates a bit.  Gimp, for example, opens most its windows
 with the same name before renaming them, so you have to hit mod-return or
 something to force a doLayout.  Also, gimp still overrides xmonad regarding
 the size of its main window.  :(
] 
[XMonadContrib.FindEmptyWorkspace
Miikka Koskinen <arcatan@kapsi.fi>**20070513184338
 
 With this module you can find empty workspaces, view them and tag windows to
 them.
] 
[make DwmPromote compile
Miikka Koskinen <arcatan@kapsi.fi>**20070513184254] 
[make DwmPromote compile again
Miikka Koskinen <arcatan@kapsi.fi>**20070510154158] 
[make DwmPromote compile
Miikka Koskinen <arcatan@kapsi.fi>**20070503105236] 
[add SwapFocus.
David Roundy <droundy@darcs.net>**20070512191315] 
[make rotView only consider non-visible workspaces (Xinerama)
Jason Creighton <jcreigh@gmail.com>**20070510012059] 
[fix commend in RotView.
David Roundy <droundy@darcs.net>**20070505185654] 
[switch to Message type for layout messages
Don Stewart <dons@cse.unsw.edu.au>**20070505014332] 
[Fix instructions in Mosaic.
Chris Mears <chris@cmears.id.au>**20070503222345] 
[add Mosaic layout.
David Roundy <droundy@darcs.net>**20070503151024] 
[-Wall police
Spencer Janssen <sjanssen@cse.unl.edu>**20070503211700] 
[Make RotView build, and add a brief description.
Chris Mears <chris@cmears.id.au>**20070503104234] 
[comment: Gave URL to xinerama-enabled dmenu patch
Jason Creighton <jcreigh@gmail.com>**20070503053133] 
[Put dmenu in X too
Spencer Janssen <sjanssen@cse.unl.edu>**20070503053727] 
[Add dmenu (thanks jcreigh)
Spencer Janssen <sjanssen@cse.unl.edu>**20070503052225] 
[add RotView module.
David Roundy <droundy@darcs.net>**20070421233838] 
[XMonadContrib.DwmPromote: dwm-like promote
Miikka Koskinen <arcatan@kapsi.fi>**20070501082031
 I like the way dwm's equivalent to xmonad's promote works, so I
 implemented dwmpromote.
] 
[add simple date example
Don Stewart <dons@cse.unsw.edu.au>**20070429064013] 
[more details
Don Stewart <dons@cse.unsw.edu.au>**20070429061426] 
[add readme
Don Stewart <dons@cse.unsw.edu.au>**20070429061329] 
[Initial import of xmonad contributions
Don Stewart <dons@cse.unsw.edu.au>**20070429061150] 
Patch bundle hash:
0c3214b096ee2bbbf6a8dbd8dacf9fa578ab4d15
