[Xmonad] darcs patch: Docstring parser for generating xmonad build configs with default settings for extensions

Alex Tarkovsky alextarkovsky at gmail.com
Mon Aug 13 11:37:23 EDT 2007

This docstring system complements the existing $usage docstrings in
xmonad extension sources by automating the manual configuration steps
outlined therein. The aim is to make enabling and configuring multiple
extensions at build-time more convenient, hopefully resulting in happier
users and downstream packagers (like myself). It also happens to provide
another method for testing extensions against API breakage.

For each Haskell source file in an xmonad contrib directory,
generate-configs.sh parses custom docstring markup containing default
configuration and build-time settings for the extension. This is similar
to Haddock, but rather than producing documentation the script makes
modified copies of xmonad's Config.hs and xmonad.cabal files into which
the parsed tag content is inserted at specified markers. By default the
data inserted into Config.hs is commented out, though
generate-configs.sh can be easily modified to behave otherwise. Each
group of tag data inserted at each Config.sh marker is labeled with the
extension that data was sourced from.

The docstring markup can be extended as needed. Currently the following
tags are defined, shown with some examples:



    Cabal build dependency. Value is appended to the "build-depends"
    line in xmonad.cabal and automatically prefixed with ", ".  NB:
    Don't embed comments in this tag!

-- %cabalbuilddep readline>=1.0


    General definition. Value is appended to the end of Config.sh.

-- %def commands :: [(String, X ())]
-- %def commands = defaultCommands


    Module needed by Config.sh to build the extension. Value is appended
    to the end of the default import list in Config.sh and automatically
    prefixed with "import ".

-- %import XMonadContrib.Accordion
-- %import qualified XMonadContrib.FlexibleManipulate as Flex


    Tuple defining a key binding. Must be prefixed with ", ". Value is
    inserted at the end of the "keys" list in Config.sh.

-- %keybind , ((modMask, xK_d), date)


    Same as %keybind, but instead of a key binding tuple the definition
    is a list of key binding tuples (or a list comprehension producing
    them). This list is concatenated to the "keys" list must begin with
    the "++" operator rather than ", ".

-- %keybindlist ++
-- %keybindlist -- mod-[1..9] @@ Switch to workspace N
-- %keybindlist -- mod-shift-[1..9] @@ Move client to workspace N
-- %keybindlist -- mod-control-shift-[1..9] @@ Copy client to workspace N
-- %keybindlist [((m .|. modMask, k), f i)
-- %keybindlist     | (i, k) <- zip [0..fromIntegral (workspaces-1)]
[xK_1 ..]
-- %keybindlist     , (f, m) <- [(view, 0), (shift, shiftMask), (copy,
shiftMask .|. controlMask)]]


    A layout. Must be prefixed with ", ". Value is inserted at the end
    of the "defaultLayouts" list in Config.sh.

-- %layout , accordion


    Tuple defining a mouse binding. Must be prefixed with ", ". Value is
    inserted at the end of the "mouseBindings" list in Config.sh.

-- %mousebind , ((modMask, button3), (\\w -> focus w >>
Flex.mouseResizeWindow w))


NB: '/' and '\' characters must be escaped with a '\' character!

Tags may also contain comments, as illustrated in the %keybindlist
examples above. Comments are a good place for special user instructions:

-- %def -- comment out default logHook definition above if you uncomment
-- %def logHook = dynamicLog


Two darcs patches are attached: one for the main xmonad repository,
adding insert markers to Config.hs; and one for the XMonadContrib
repository, providing the generate-configs.sh script and adding new
docstrings to most of the extension sources. The latter patch also
updates some outdated $usage docstrings in several extension sources to
bring them up to date with the current xmonad extension API.

It appears that the following sources currently wouldn't benefit from
this docstring system (correct me if I'm mistaken), so they aren't
modified by these patches:


If none of this makes much sense, I've also attached a zip file
containing the Config.hs and xmonad.cabal files output by
generate-configs.sh when the script is run on the current contrib
repository. Merely diff these configs against the default versions and
all should become clear. ;)

Alex Tarkovsky

-------------- next part --------------

New patches:

[Add insert markers to Config.hs for docstring parser
Alex Tarkovsky <alextarkovsky at gmail.com>**20070813133952] {
hunk ./Config.hs 31
+-- Extension-provided imports
hunk ./Config.hs 90
-defaultLayouts = [ tiled , mirror tiled , full ]
+defaultLayouts = [ tiled
+                 , mirror tiled
+                 , full
+                 -- Extension-provided layouts
+                 ]
hunk ./Config.hs 163
-    ] ++
+    -- Extension-provided key bindings
+    ]
+    ++
hunk ./Config.hs 171
+    ++
hunk ./Config.hs 174
-    ++
hunk ./Config.hs 177
+    -- Extension-provided key bindings lists
hunk ./Config.hs 186
-    , ((modMask, button3), (\w -> focus w >> mouseResizeWindow w)) ]
+    , ((modMask, button3), (\w -> focus w >> mouseResizeWindow w))
+    -- Extension-provided mouse bindings
+    ]
+-- Extension-provided definitions


[trailing whitespace only
Don Stewart <dons at cse.unsw.edu.au>**20070805072716] 
[added workspaces to hs-boot (needed by XMonadContrib.Commands and possibly other modules)
Andrea Rossato <andrea.rossato at unibz.it>**20070728131756] 
[QuickCheck filter preserves order
Karsten Schoelzel <kuser at gmx.de>**20070728184534] 
[Bugfix: reordering when filtering out the last window on a workspace
Karsten Schoelzel <kuser at gmx.de>**20070728132507
 Say you have three windows A B C* on a workspace with * marking the focus.
 If you close C or move it to another workspace, the resulting order will be B* A,
 thus reordering the other windows, defying the comment of filter.
[shift: use guards instead of if
Spencer Janssen <sjanssen at cse.unl.edu>**20070724152340] 
[Remove unnecessary Integral constraints
Spencer Janssen <sjanssen at cse.unl.edu>**20070724152257] 
[make delete work when window is in multiple workspaces.
David Roundy <droundy at darcs.net>**20070724142045] 
[Remove redundant 'n >= 0' check from shift.  (from David Roundy's 'simplify shift, removing unneeded check.' patch)
Spencer Janssen <sjanssen at cse.unl.edu>**20070724145927] 
[Cleanup of shift code
Michael G. Sloan <mgsloan at gmail.com>**20070722205337] 
[use $HOME in examples
Don Stewart <dons at cse.unsw.edu.au>**20070719063348] 
[Tweak dmenu binding
Peter De Wachter <pdewacht at gmail.com>**20070717190722
 Add an "eval", so quotes and environment variables get evaluated
 according to sh rules.
[restore focus to currently focused window after "float" (closes #32)
Jason Creighton <jcreigh at gmail.com>**20070710042631] 
[Operations.screenWorkspace: return Nothing when the screen does not exist
Spencer Janssen <sjanssen at cse.unl.edu>**20070707223842] 
[Operations.rescreen: screen indexes start at zero
Spencer Janssen <sjanssen at cse.unl.edu>**20070707223334] 
[Note and workaround bugs in Operations.float
Spencer Janssen <sjanssen at cse.unl.edu>**20070705195213] 
[refresh after starting
Spencer Janssen <sjanssen at cse.unl.edu>**20070630050346] 
[UPGRADE X11-Extras!  Manage iconified windows
Spencer Janssen <sjanssen at cse.unl.edu>**20070630021026] 
[Move screen details into StackSet
Spencer Janssen <sjanssen at cse.unl.edu>**20070629213917] 
[Change a window's workspace when dragging across screens (closes #30)
Jason Creighton <jcreigh at gmail.com>**20070628025023] 
[support self-modifying layouts.
David Roundy <droundy at darcs.net>**20070623201447] 
[comment for (dubious?) integrate'
Don Stewart <dons at cse.unsw.edu.au>**20070626052431] 
[broadcast unidentified events.
David Roundy <droundy at darcs.net>**20070623214125
 This change is independent of the doLayout change I just sent in, but fixes
 the problem that change introduces in Decoration, by ensuring that all
 Layouts get redraw events.  I think this is the correct behavior.
[add 2 properties to state where focus goes on delete of focused window
Don Stewart <dons at cse.unsw.edu.au>**20070626040907] 
[fix empty case in 'filter', and note differences in semantics wrt. focus to 'delete'
Don Stewart <dons at cse.unsw.edu.au>**20070626035741] 
[clean up 'StackSet.filter' for style
Don Stewart <dons at cse.unsw.edu.au>**20070626033202] 
[minor tweaks, ideas from joachim.fasting@
Don Stewart <dons at cse.unsw.edu.au>**20070621033613] 
[only perform mouse events on managed windows. closes #28
Don Stewart <dons at cse.unsw.edu.au>**20070621011700] 
[Update Layout documentation
Spencer Janssen <sjanssen at cse.unl.edu>**20070620150858] 
[-Wall police
Spencer Janssen <sjanssen at cse.unl.edu>**20070620150823] 
[Stack windows in the order they are returned by doLayout
Spencer Janssen <sjanssen at cse.unl.edu>**20070620150419] 
[remove out of date `(Included with GHC)' text in README
Don Stewart <dons at cse.unsw.edu.au>**20070620060430] 
[make Layouts able to layout whatever they like.
David Roundy <droundy at darcs.net>**20070619150816] 
[float fixed size windows
Peter De Wachter <pdewacht at gmail.com>**20070618214657] 
[Remove all references to 'exec'
Spencer Janssen <sjanssen at cse.unl.edu>**20070618201532] 
[-Wall police, and turn on -fno-warn-orphans
Don Stewart <dons at cse.unsw.edu.au>**20070617052322] 
[make workspace tag not need to be a Num.
David Roundy <droundy at darcs.net>**20070614140709
 This change also removes the barely used 'size' field, and replaces
 it with a tagMember predicate.  The idea is to move towards the ability
 to make the workspace tag be a String, which by default might be "1".."9",
 but could also be customized to be something meaningful to the user.
[Fix float stacking
Spencer Janssen <sjanssen at cse.unl.edu>**20070614213412] 
[Remove 'temporary work around' in 'windows'
Spencer Janssen <sjanssen at cse.unl.edu>**20070614211450] 
[haddock tuning for StackSet.hs
Andrea Rossato <andrea.rossato at unibz.it>**20070614064511
 with this patch the documentation of StackSet.hs will have a nice TOC
[move initColor to Operations and only store the Pixel value of colors
Jason Creighton <jcreigh at gmail.com>**20070613234501
 Moving initColor to Operations allows it to be used by extensions.
 The Pixel component of the color is the only thing we need, so it's simpler
 just to deal with that.
[haddick fine tuning
Andrea Rossato <andrea.rossato at unibz.it>**20070613185902] 
Spencer Janssen <sjanssen at cse.unl.edu>**20070613043018] 
[prevent keyboard focus from getting lost in some cases
Jason Creighton <jcreigh at gmail.com>**20070613025350] 
[resolve conflict in Operations.
David Roundy <droundy at darcs.net>**20070612170625] 
[add catchX to catch exceptions.
David Roundy <droundy at darcs.net>**20070612154253] 
[make focus, up and down complete functions.
David Roundy <droundy at darcs.net>**20070612150555
 This is a rerun of my change to make (Stack a) never be empty.  Gives
 us more type-safety.
[add differentiate function to StackSet to go [a] -> Stack a.
David Roundy <droundy at darcs.net>**20070612132853] 
[Make 'view' a total function
Spencer Janssen <sjanssen at cse.unl.edu>**20070612143248] 
Don Stewart <dons at cse.unsw.edu.au>**20070612134938] 
[-Wall police
Stefan O'Rear <stefanor at cox.net>**20070612060546] 
[Use a more descriptive name for the layout reversal message
Stefan O'Rear <stefanor at cox.net>**20070612055859] 
[Use broadcastMessage in windows and switchLayout, should improve Xinerama for tabbed and make xmonad robust in the presence of state-altering unlayout hooks
Stefan O'Rear <stefanor at cox.net>**20070612055510] 
[Add a broadcastMessage function, which sends to all visible workspaces without refreshing. (+6 loc)
Stefan O'Rear <stefanor at cox.net>**20070612055339] 
[TODO for scan
Spencer Janssen <sjanssen at cse.unl.edu>**20070611214217] 
[Set withdrawn state after calling windows
Spencer Janssen <sjanssen at cse.unl.edu>**20070611213327] 
[Remove obsolete 'layout' function
Spencer Janssen <sjanssen at cse.unl.edu>**20070611203622] 
[-Wall police
Spencer Janssen <sjanssen at cse.unl.edu>**20070611202007] 
[Comment only
Spencer Janssen <sjanssen at cse.unl.edu>**20070611195827] 
[Hide windows that are not supposed to be visible
Spencer Janssen <sjanssen at cse.unl.edu>**20070611191809] 
[-Wall police
Spencer Janssen <sjanssen at cse.unl.edu>**20070611185708] 
[API CHANGE: Give doLayout a Stack rather than a flattened list
Spencer Janssen <sjanssen at cse.unl.edu>**20070611182629] 
[-Wall police
Spencer Janssen <sjanssen at cse.unl.edu>**20070611180123] 
[Add StackSet.filter
Spencer Janssen <sjanssen at cse.unl.edu>**20070611165154] 
[Use catchIO in 'restart'
Spencer Janssen <sjanssen at cse.unl.edu>**20070611161152] 
[Rename safeIO to catchIO
Spencer Janssen <sjanssen at cse.unl.edu>**20070611160608] 
[add safeIO which catches and logs exceptions.
David Roundy <droundy at darcs.net>**20070611153650] 
[Ensure windows get at least 1 pixel for width/height
Spencer Janssen <sjanssen at cse.unl.edu>**20070611061930] 
[Restrict the master/slave ratio to [0, 1]
Spencer Janssen <sjanssen at cse.unl.edu>**20070611053230] 
[comment only
Jason Creighton <jcreigh at gmail.com>**20070611020249] 
[a few modifications to event-sending to make Tabbed layout work.
David Roundy <droundy at darcs.net>**20070610153836] 
[send message when "windows" is called.
David Roundy <droundy at darcs.net>**20070610013531] 
[implement Spencer's decoration suggestion.
David Roundy <droundy at darcs.net>**20070610012237] 
[haddock compatibility
Andrea Rossato <andrea.rossato at unibz.it>**20070610123746] 
[Move state logging into Config.hs, via logHook :: X ()
Don Stewart <dons at cse.unsw.edu.au>**20070610061932] 
[polish serialisation code (-7 lines)
Don Stewart <dons at cse.unsw.edu.au>**20070610045551] 
[cut incorrect comment.
David Roundy <droundy at darcs.net>**20070609173447] 
[doLayout cleanup and commented exception-handling.
David Roundy <droundy at darcs.net>**20070609145036] 
[Give refresh sole responsibility for establishing window properties (-3 loc)
Stefan O'Rear <stefanor at cox.net>*-20070609185835] 
[Give refresh sole responsibility for establishing window properties (-3 loc)
Stefan O'Rear <stefanor at cox.net>**20070609185835] 
[HEADS UP: (logging format change). use a custom pretty printer, for an easier format to parse, than 'show' produces
Don Stewart <dons at cse.unsw.edu.au>**20070609131716] 
[Add notes on using X11-extras from darcs
Don Stewart <dons at cse.unsw.edu.au>**20070609025045] 
[Fix unmap handling
Spencer Janssen <sjanssen at cse.unl.edu>**20070606214006
 According to the ICCCM, clients should send a synthetic unmap event when they
 initiate an unmap.  The old code waited for these synthetic unmaps to unmanage
 windows.  However, certain 'obsolete' clients do not send synthetic unmaps
 (notably xpdf's find dialog).  These windows entered a zombified state: xmonad
 does not manage them, yet they are still mapped and raised on screen.
 The new algorithm (derived from wmii):
  - track windows that are mapped on screen
  - track the number of expected unmap events for each window, increment every
    time 'hide' is called on a window that is not mapped.
  - decrement the expected unmap counter on each unmap event
  - treat an unmap event as genuine (ie. unmap the window) when:
     - the event is synthetic (per ICCCM)
     - OR there are no expected unmap events for this window
[dead import
Don Stewart <dons at cse.unsw.edu.au>**20070606025226] 
[move extraModifiers/cleanMask to Operations.hs
Jason Creighton <jcreigh at gmail.com>**20070606005056
 so XMonadContrib can use them
[temporary workaround for delete/focus issue in fullscreen mode
Don Stewart <dons at cse.unsw.edu.au>**20070606024938] 
Don Stewart <dons at cse.unsw.edu.au>**20070606024857] 
[simplify code
Don Stewart <dons at cse.unsw.edu.au>**20070606004603] 
[mention why StackSet needs -fglasgow-exts (for deriving Typeable)
Don Stewart <dons at cse.unsw.edu.au>**20070605092659] 
[comments only
Don Stewart <dons at cse.unsw.edu.au>**20070605091803] 
[clean size hint code
Don Stewart <dons at cse.unsw.edu.au>**20070605091354] 
[Enable logging of state changes to stdout
Don Stewart <dons at cse.unsw.edu.au>**20070605083735] 
[remove accidental logging of events
Don Stewart <dons at cse.unsw.edu.au>**20070605081452] 
[Fix lost eventNotifyMask bug
Don Stewart <dons at cse.unsw.edu.au>**20070605043040
 When resuming, we were (implicitly) relying on 'scan' to find all
 windows, and reset their event masks and WM_STATE. When we moved to
 Iconfified hidden workspaces, 'scan' would only find and reset states on 
 the current workspace.
 The result being that hidden workspace windows no longer received
 enterNotify events.
 Fix this by traversing the StackSet serialised during a restart, setting
 the intial X states for each window, whether visible or hidden.
[whitespace only
Don Stewart <dons at cse.unsw.edu.au>**20070605000723] 
[Comment only
Spencer Janssen <sjanssen at cse.unl.edu>**20070604211956] 
Spencer Janssen <sjanssen at cse.unl.edu>**20070604211816] 
[-Wall police
Spencer Janssen <sjanssen at cse.unl.edu>**20070604211531] 
[apply size hints to floating windows
Peter De Wachter <pdewacht at gmail.com>**20070604192943] 
[size hints infrastructure
Peter De Wachter <pdewacht at gmail.com>**20070604192753] 
[Delete stale comment
Spencer Janssen <sjanssen at cse.unl.edu>**20070604204617] 
[Comment only
Spencer Janssen <sjanssen at cse.unl.edu>**20070604203659] 
[Use 'windows' in 'focus'
Spencer Janssen <sjanssen at cse.unl.edu>**20070604201639] 
[realign guard
l.mai at web.de**20070604182045] 
[swapUp/Down are also mirrored
Spencer Janssen <sjanssen at cse.unl.edu>**20070604183535] 
[Remove redundant cases in swapUp/Down
Spencer Janssen <sjanssen at cse.unl.edu>**20070604183344] 
[focusUp/Down are the same, in reversed order
Spencer Janssen <sjanssen at cse.unl.edu>**20070604183143] 
[Simplify focusUp/Down
Spencer Janssen <sjanssen at cse.unl.edu>**20070604182228] 
[Integral implies Eq
Spencer Janssen <sjanssen at cse.unl.edu>**20070604180745] 
[Comment typo.
Spencer Janssen <sjanssen at cse.unl.edu>**20070604180554] 
[Dump state at launch (commented for now)
Spencer Janssen <sjanssen at cse.unl.edu>**20070604162450] 
[Small clean up
Spencer Janssen <sjanssen at cse.unl.edu>**20070604064418] 
[Merge windows and refresh
Spencer Janssen <sjanssen at cse.unl.edu>**20070604063657] 
[Use the new integrate function
Spencer Janssen <sjanssen at cse.unl.edu>**20070604062653] 
[Add integrate
Spencer Janssen <sjanssen at cse.unl.edu>**20070604062501] 
[Delete stale comments
Spencer Janssen <sjanssen at cse.unl.edu>**20070604061719] 
[Remove inaccurate warnings about 'hide'
Spencer Janssen <sjanssen at cse.unl.edu>**20070604060611] 
[base >= 2.0 means we can use forM_
Spencer Janssen <sjanssen at cse.unl.edu>**20070604050914] 
[Remove no-longer-needed 'dimensions' state (-5 loc)
Stefan O'Rear <stefanor at cox.net>**20070604044715] 
[Set WM_STATE, iconify invisible windows (+9 loc)
Stefan O'Rear <stefanor at cox.net>**20070604042343
 Note that this breaks compatibility with certain programs described as
 "obsolete" in the ICCCM (1994).  See the command above the UnmapEvent handler
 for details.
[clean up Main.hs slightly
Don Stewart <dons at cse.unsw.edu.au>**20070604035637] 
Don Stewart <dons at cse.unsw.edu.au>**20070604015532] 
Don Stewart <dons at cse.unsw.edu.au>**20070604014630] 
[do not cache atom values within Xmonad, instead let Xlib worry about caching (a documented feature)
Stefan O'Rear <stefanor at cox.net>**20070604013938] 
[Honor configure requests from unmanaged windows
Spencer Janssen <sjanssen at cse.unl.edu>**20070603234730] 
[-Wall police
Spencer Janssen <sjanssen at cse.unl.edu>**20070603212055] 
[Correctly handle resize requests (-12 +22)
Stefan O'Rear <stefanor at cox.net>**20070603203153
 Xmonad now implements resize requests in a consistent manner.
 * If the window is FLOATING, we implement the program's request, and
   correctly update the StackSet; so it will keep the new size.  This
   should work correctly even for non-current windows.
 * Otherwise, we ignore the request.  As per ICCCM, we send a fake
   ConfigureNotify containing the new (unchanged) geometry.  This is
   perfectly ICCCM compliant, and if it breaks your client, it's your
   own fault.
 This patch requires setConfigureEvent, which is added to X11-extras by
 a patch approximately contemporaneous with this one.
[comments only
Don Stewart <dons at cse.unsw.edu.au>**20070603071556] 
[Polish core layout code. Lifts limitation on nmaster > 1. it may be 0 now
Don Stewart <dons at cse.unsw.edu.au>**20070603064306] 
[heads up: polish config.hs. moves tiling-local values into lexical scope. removes `wide' as an explicit mode (it's `mirror tall')
Don Stewart <dons at cse.unsw.edu.au>**20070603054740] 
[set build-depends base>=2.0 so people can't miss the missing Read instance issue
Don Stewart <dons at cse.unsw.edu.au>**20070603032319] 
[Fix out-of-date comment in Config.hs.
Chris Mears <chris at cmears.id.au>**20070602114312] 
[only grab button{1,2,3} for click-to-focus (scrollwheel shouldn't focus)
Jason Creighton <jcreigh at gmail.com>**20070602052605] 
[make mouse bindings configurable
Jason Creighton <jcreigh at gmail.com>**20070602040647] 
[commented out implementation state logging. if someone has a client, we can enable this
Don Stewart <dons at cse.unsw.edu.au>**20070601085626] 
[ignore numlock/capslock on mouse bindings
Jason Creighton <jcreigh at gmail.com>**20070601015137] 
[now we handle transients properly, and restack windows, refresh from focus is ok
Don Stewart <dons at cse.unsw.edu.au>**20070601022329] 
[Rename withWorkspace to withWindowSet.
glasser at mit.edu**20070601001325] 
[Revert accidental change to border color
Spencer Janssen <sjanssen at cse.unl.edu>**20070531145509] 
[comments on why fullscreen tiling doesn't work with `implicit' floating
Don Stewart <dons at cse.unsw.edu.au>**20070531090537] 
[clean up mouse code a bit
Don Stewart <dons at cse.unsw.edu.au>**20070531085308] 
[first shot at a floating layer
Jason Creighton <jcreigh at gmail.com>**20070531044733
 This is a first attempting at a floating layer:
 mod-button1: move window
 mod-button2: swapMaster
 mod-button3: resize window
 mod-t: make floating window tiled again
 Moving or resizing a window automatically makes it floating.
 Known issues:
 Hard to manage stacking order. You can promote a window to move it to the top,
 (which you can do with mod-button2) but it should be easier than that.
 Moving a window by dragging it to a different Xinerama screen does not move it
 to that workspace.
 Code is ugly.
[remove LOC cap (but still print count after tests)
Jason Creighton <jcreigh at gmail.com>**20070531043417] 
[TAG 0.2
Spencer Janssen <sjanssen at cse.unl.edu>**20070531010004] 
Patch bundle hash:
-------------- next part --------------

New patches:

[Docstring parser for generating xmonad build configs with default settings for extensions
Alex Tarkovsky <alextarkovsky at gmail.com>**20070813140144] {
addfile ./scripts/generate-configs.sh
hunk ./Accordion.hs 30
+-- %import XMonadContrib.Accordion
+-- %layout , accordion
hunk ./Anneal.hs 19
+-- %import XMonadContrib.Anneal
hunk ./Circle.hs 31
+-- %import XMonadContrib.Circle
hunk ./Combo.hs 35
--- > simpleStacking $ combo (twoPane 0.03 0.5) [(full,1),(tabbed shrinkText,1)]
+-- > simpleStacking $ combo (twoPane 0.03 0.5) [(full,1),(tabbed shrinkText defaultTConf,1)]
hunk ./Combo.hs 46
+-- %import XMonadContrib.Combo
+-- %import XMonadContrib.SimpleStacking
+-- %layout , simpleStacking $ combo (twoPane 0.03 0.5) [(full,1),(tabbed shrinkText defaultTConf,1)]
hunk ./Commands.hs 45
--- >    , ((modMask .|. controlMask, xK_y), runCommand)
+-- >    , ((modMask .|. controlMask, xK_y), runCommand commands)
hunk ./Commands.hs 57
+-- %def commands :: [(String, X ())]
+-- %def commands = defaultCommands
+-- %import XMonadContrib.Commands
+-- %keybind , ((modMask .|. controlMask, xK_y), runCommand commands)
hunk ./CopyWindow.hs 45
+-- %import XMonadContrib.CopyWindow
+-- %keybind -- comment out default close window binding above if you uncomment this:
+-- %keybind , ((modMask .|. shiftMask, xK_c     ), kill1) -- @@ Close the focused window
+-- %keybindlist ++
+-- %keybindlist -- mod-[1..9] @@ Switch to workspace N
+-- %keybindlist -- mod-shift-[1..9] @@ Move client to workspace N
+-- %keybindlist -- mod-control-shift-[1..9] @@ Copy client to workspace N
+-- %keybindlist [((m .|. modMask, k), f i)
+-- %keybindlist     | (i, k) <- zip [0..fromIntegral (workspaces-1)] [xK_1 ..]
+-- %keybindlist     , (f, m) <- [(view, 0), (shift, shiftMask), (copy, shiftMask .|. controlMask)]]
hunk ./DeManage.hs 47
+-- %import XMonadContrib.DeManage
+-- %keybind , ((modMask,               xK_d     ), withFocused demanage)
hunk ./Dmenu.hs 32
+-- %import XMonadContrib.Dmenu
hunk ./DwmPromote.hs 38
+-- %import XMonadContrib.DwmPromote
+-- %keybind , ((modMask,               xK_Return), dwmpromote)
hunk ./DynamicLog.hs 42
+-- %import XMonadContrib.DynamicLog
+-- %def -- comment out default logHook definition above if you uncomment this:
+-- %def logHook = dynamicLog
hunk ./FindEmptyWorkspace.hs 43
+-- %import XMonadContrib.FindEmptyWorkspace
+-- %keybind , ((modMask,                xK_m    ), viewEmptyWorkspace)
+-- %keybind , ((modMask .|. shiftMask,  xK_m    ), tagToEmptyWorkspace)
hunk ./FlexibleManipulate.hs 50
+-- %import qualified XMonadContrib.FlexibleManipulate as Flex
+-- %mousebind , ((modMask, button1), (\\w -> focus w >> Flex.mouseWindow Flex.linear w))
hunk ./FlexibleResize.hs 34
+-- %import qualified XMonadContrib.FlexibleResize as Flex
+-- %mousebind , ((modMask, button3), (\\w -> focus w >> Flex.mouseResizeWindow w))
hunk ./FocusNth.hs 29
+-- %import XMonadContrib.FocusNth
+-- %keybdindextra ++
+-- %keybdindextra -- mod4-[1..9] @@ Switch to window N
+-- %keybdindextra [((mod4Mask, k), focusNth i)
+-- %keybdindextra     | (i, k) <- zip [0 .. 8] [xK_1 ..]]
hunk ./GreedyView.hs 50
+-- %import XMonadContrib.GreedyView
+-- %keybindlist -- comment out default workspace switch bindings above if you uncomment this:
+-- %keybindlist ++
+-- %keybindlist -- mod-[1..9] @@ Switch to workspace N
+-- %keybindlist -- mod-shift-[1..9] @@ Move client to workspace N
+-- %keybindlist [((m .|. modMask, k), f i)
+-- %keybindlist     | (i, k) <- zip [0 .. fromIntegral workspaces - 1] [xK_1 ..]
+-- %keybindlist     , (f, m) <- [(greedyView, 0), (shift, shiftMask)]]
hunk ./HintedTile.hs 32
--- > import XMonadContrib.HintedTile
+-- > import qualified XMonadContrib.HintedTile
+-- %import qualified XMonadContrib.HintedTile
hunk ./LayoutHints.hs 29
+-- %import XMonadContrib.LayoutHints
+-- %layout , layoutHints tiled
+-- %layout , layoutHints $ mirror tiled
hunk ./LayoutScreens.hs 42
+-- %import XMonadContrib.LayoutScreens
+-- %keybind , ((modMask .|. shiftMask, xK_space), layoutScreens 2 (twoPane 0.5 0.5))
+-- %keybind , ((controlMask .|. modMask .|. shiftMask, xK_space), rescreen)
hunk ./MagicFocus.hs 25
+-- %import XMonadContrib.MagicFocus
+-- %layout , magicFocus tiled
+-- %layout , magicFocus $ mirror tiled
hunk ./Magnifier.hs 32
+-- %import XMonadContrib.Magnifier
+-- %layout , magnifier tiled
+-- %layout , magnifier $ mirror tiled
hunk ./Mosaic.hs 48
--- > defaultLayouts :: [Layout]
--- > defaultLayouts = [ mosaic 0.25 0.5 M.empty M.empty, full,
--- >                    tall defaultDelta (1%2), wide defaultDelta (1%2) ]
+-- > defaultLayouts = [ mosaic 0.25 0.5 M.empty, full, ... ]
hunk ./Mosaic.hs 61
+-- %import XMonadContrib.Mosaic
+-- %keybind , ((controlMask .|. modMask .|. shiftMask, xK_h), withNamedWindow (sendMessage . tallWindow))
+-- %keybind , ((controlMask .|. modMask .|. shiftMask, xK_l), withNamedWindow (sendMessage . wideWindow))
+-- %keybind , ((modMask .|. shiftMask, xK_h     ), withNamedWindow (sendMessage . shrinkWindow))
+-- %keybind , ((modMask .|. shiftMask, xK_l     ), withNamedWindow (sendMessage . expandWindow))
+-- %keybind , ((modMask .|. shiftMask, xK_s     ), withNamedWindow (sendMessage . squareWindow))
+-- %keybind , ((modMask .|. shiftMask, xK_o     ), withNamedWindow (sendMessage . myclearWindow))
+-- %keybind , ((controlMask .|. modMask .|. shiftMask, xK_o     ), withNamedWindow (sendMessage . flexibleWindow))
+-- %layout , mosaic 0.25 0.5 M.empty
hunk ./NoBorders.hs 42
+-- %import XMonadContrib.NoBorders
+-- %layout -- prepend noBorders to default layouts above to remove their borders, like so:
+-- %layout , noBorders full
hunk ./Roledex.hs 31
+-- %import XMonadContrib.Roledex
+-- %layout , roledex
hunk ./RotSlaves.hs 37
+-- %import XMonadContrib.RotSlaves
+-- %keybind , ((modMask .|. shiftMask, xK_Tab   ), rotSlavesUp)
hunk ./RotView.hs 37
+-- %import XMonadContrib.RotView
+-- %keybind , ((modMask .|. shiftMask, xK_Right), rotView True)
+-- %keybind , ((modMask .|. shiftMask, xK_Left), rotView False)
hunk ./ShellPrompt.hs 48
+-- %cabalbuilddep readline>=1.0
+-- %import XMonadContrib.ShellPrompt
+-- %import XMonadContrib.XPrompt
+-- %keybind , ((modMask .|. controlMask, xK_x), shellPrompt defaultXPConfig)
hunk ./SimpleDate.hs 34
+-- %import XMonadContrib.SimpleDate
+-- %keybind , ((modMask,               xK_d     ), date)
hunk ./SinkAll.hs 27
+-- %import XMonadContrib.SinkAll
+-- %keybind , ((modMask .|. shiftMask, xK_t), sinkAll)
hunk ./Spiral.hs 36
--- >   defaultLayouts :: [Layout]
--- >   defaultLayouts = [ full,
--- >                      tall defaultWindowsInMaster defaultDelta (1%2),
--- >                      wide defaultWindowsInMaster defaultDelta (1%2),
--- >                      spiral (1 % 1) ]
+-- >   defaultLayouts = [ full, spiral (1 % 1), ... ]
+-- %import XMonadContrib.Spiral
+-- %layout , spiral (1 % 1)
hunk ./Square.hs 40
+-- %import XMonadContrib.Square
hunk ./SshPrompt.hs 39
+-- %import XMonadContrib.XPrompt
+-- %import XMonadContrib.SshPrompt
+-- %keybind , ((modMask .|. controlMask, xK_x), xmonadPrompt defaultXPConfig)
hunk ./Submap.hs 45
+-- %import XMonadContrib.Submap
+-- %keybind , ((modMask, xK_a), submap . M.fromList $
+-- %keybind     [ ((0, xK_n),     spawn "mpc next")
+-- %keybind     , ((0, xK_p),     spawn "mpc prev")
+-- %keybind     , ((0, xK_z),     spawn "mpc random")
+-- %keybind     , ((0, xK_space), spawn "mpc toggle")
+-- %keybind     ])
hunk ./Tabbed.hs 53
+-- %import XMonadContrib.Tabbed
+-- %layout , tabbed shrinkText defaultTConf
hunk ./ThreeColumns.hs 40
--- > threeCol
+-- > threeCol nmaster delta ratio
+-- %import XMonadContrib.ThreeColumns
+-- %layout , threeCol nmaster delta ratio
hunk ./TwoPane.hs 35
--- > twoPane defaultDelta (1%2)
+-- > twoPane delta (1%2)
+-- %import XMonadContrib.TwoPane
+-- %layout , twoPane delta (1%2)
hunk ./Warp.hs 47
+-- %import XMonadContrib.Warp
+-- %keybind , ((modMask,   xK_z     ), warpToWindow (1%2) (1%2)) -- @@ Move pointer to currently focused window
+-- %keybindlist ++
+-- %keybindlist -- mod-ctrl-{w,e,r} @@ Move mouse pointer to screen 1, 2, or 3
+-- %keybindlist [((modMask .|. controlMask, key), warpToScreen sc (1%2) (1%2))
+-- %keybindlist     | (key, sc) <- zip [xK_w, xK_e, xK_r] [0..]]
hunk ./WorkspaceDir.hs 46
+-- %import XMonadContrib.WorkspaceDir
+-- %keybind , ((modMask .|. shiftMask, xK_x     ), changeDir ["~","\/tmp"])
+-- %layout -- prepend 'map (workspaceDir "~")' to defaultLayouts definition above,
+-- %layout -- just before the list, like the following (don't uncomment next line):
+-- %layout -- defaultLayouts = map (workspaceDir "~") [ tiled, ... ]
hunk ./XMonadPrompt.hs 36
+-- %import XMonadContrib.XPrompt
+-- %import XMonadContrib.XMonadPrompt
+-- %keybind , ((modMask .|. controlMask, xK_x), xmonadPrompt defaultXPConfig)
hunk ./scripts/generate-configs.sh 1
+# generate-configs.sh - Docstring parser for generating xmonad build configs
+#                       with default settings for extensions
+# Author: Alex Tarkovsky <alextarkovsky at gmail.com>
+# Released into the public domain
+# This script parses custom docstrings specifying build-time configuration data
+# from xmonad extension source files, then inserts the data into copies of
+# xmonad's Config.hs and xmonad.cabal files accordingly.
+# Usage: generate-configs.sh PATH_TO_CONTRIBS
+# Run this script from the directory containing xmonad's main Config.hs and
+# xmonad.cabal files, otherwise you'll need to change the value of
+# $REPO_DIR_BASE below.
+# The docstring markup can be extended as needed. Currently the following tags
+# are defined, shown with some examples:
+# ~~~~~
+# %cabalbuilddep
+#     Cabal build dependency. Value is appended to the "build-depends" line in
+#     xmonad.cabal and automatically prefixed with ", ".  NB: Don't embed
+#     comments in this tag!
+# -- %cabalbuilddep readline>=1.0
+# %def
+#     General definition. Value is appended to the end of Config.sh.
+# -- %def commands :: [(String, X ())]
+# -- %def commands = defaultCommands
+# %import
+#     Module needed by Config.sh to build the extension. Value is appended to
+#     the end of the default import list in Config.sh and automatically
+#     prefixed with "import ".
+# -- %import XMonadContrib.Accordion
+# -- %import qualified XMonadContrib.FlexibleManipulate as Flex
+# %keybind
+#     Tuple defining a key binding. Must be prefixed with ", ". Value is
+#     inserted at the end of the "keys" list in Config.sh.
+# -- %keybind , ((modMask, xK_d), date)
+# %keybindlist
+#     Same as %keybind, but instead of a key binding tuple the definition is a
+#     list of key binding tuples (or a list comprehension producing them). This
+#     list is concatenated to the "keys" list must begin with the "++" operator
+#     rather than ", ".
+# -- %keybindlist ++
+# -- %keybindlist -- mod-[1..9] @@ Switch to workspace N
+# -- %keybindlist -- mod-shift-[1..9] @@ Move client to workspace N
+# -- %keybindlist -- mod-control-shift-[1..9] @@ Copy client to workspace N
+# -- %keybindlist [((m .|. modMask, k), f i)
+# -- %keybindlist     | (i, k) <- zip [0..fromIntegral (workspaces-1)] [xK_1 ..]
+# -- %keybindlist     , (f, m) <- [(view, 0), (shift, shiftMask), (copy, shiftMask .|. controlMask)]]
+# %layout
+#     A layout. Must be prefixed with ", ". Value is inserted at the end of the
+#     "defaultLayouts" list in Config.sh.
+# -- %layout , accordion
+# %mousebind
+#     Tuple defining a mouse binding. Must be prefixed with ", ". Value is
+#     inserted at the end of the "mouseBindings" list in Config.sh.
+# -- %mousebind , ((modMask, button3), (\\w -> focus w >> Flex.mouseResizeWindow w))
+# ~~~~~
+# NB: '/' and '\' characters must be escaped with a '\' character!
+# Tags may also contain comments, as illustrated in the %keybindlist examples
+# above. Comments are a good place for special user instructions:
+# -- %def -- comment out default logHook definition above if you uncomment this:
+# -- %def logHook = dynamicLog
+if [[ -z "$1" || $# > 1 || ! -d "$1" ]] ; then
+    echo "Usage: generate-configs.sh PATH_TO_CONTRIB"
+    exit 1
+# Markup tag to search for in source files.
+# Insert markers to search for in Config.sh and xmonad.cabal. Values are
+# extended sed regular expressions.
+INS_MARKER_DEF='-- Extension-provided definitions$'
+INS_MARKER_IMPORT='-- Extension-provided imports$'
+INS_MARKER_KEYBIND='-- Extension-provided key bindings$'
+INS_MARKER_KEYBINDLIST='-- Extension-provided key bindings lists$'
+INS_MARKER_LAYOUT='-- Extension-provided layouts$'
+INS_MARKER_MOUSEBIND='-- Extension-provided mouse bindings$'
+# Literal indentation strings. Values may contain escaped chars such as \t.
+INS_INDENT_LAYOUT="                 "
+# Prefix applied to inserted values after indent strings have been applied.
+INS_PREFIX_IMPORT="--import "
+for extension_srcfile in $(ls --color=never -1 "${1}"/*.hs | head -n -1 | sort -r) ; do
+    for tag in $TAG_CABALBUILDDEP \
+               $TAG_DEF \
+               $TAG_IMPORT \
+               $TAG_KEYBIND \
+               $TAG_KEYBINDLIST \
+               $TAG_LAYOUT \
+               $TAG_MOUSEBIND ; do
+        ifs="$IFS"
+        IFS=$'\n'
+        tags=( $(sed -n -r -e "s/^.*--\s*${tag}\s//p" "${extension_srcfile}") )
+        IFS="${ifs}"
+        case $tag in
+                                ins_marker=$INS_MARKER_CABALBUILDDEP
+                                ins_prefix=$INS_PREFIX_CABALBUILDDEP
+                                ;;
+            $TAG_DEF)           ins_indent=$INS_INDENT_DEF
+                                ins_marker=$INS_MARKER_DEF
+                                ins_prefix=$INS_PREFIX_DEF
+                                ;;
+            $TAG_IMPORT)        ins_indent=$INS_INDENT_IMPORT
+                                ins_marker=$INS_MARKER_IMPORT
+                                ins_prefix=$INS_PREFIX_IMPORT
+                                ;;
+            $TAG_KEYBIND)       ins_indent=$INS_INDENT_KEYBIND
+                                ins_marker=$INS_MARKER_KEYBIND
+                                ins_prefix=$INS_PREFIX_KEYBIND
+                                ;;
+                                ins_marker=$INS_MARKER_KEYBINDLIST
+                                ins_prefix=$INS_PREFIX_KEYBINDLIST
+                                ;;
+            $TAG_LAYOUT)        ins_indent=$INS_INDENT_LAYOUT
+                                ins_marker=$INS_MARKER_LAYOUT
+                                ins_prefix=$INS_PREFIX_LAYOUT
+                                ;;
+            $TAG_MOUSEBIND)     ins_indent=$INS_INDENT_MOUSEBIND
+                                ins_marker=$INS_MARKER_MOUSEBIND
+                                ins_prefix=$INS_PREFIX_MOUSEBIND
+                                ;;
+        esac
+        # Insert in reverse so values will ultimately appear in correct order.
+        for i in $( seq $(( ${#tags[*]} - 1 )) -1 0 ) ; do
+            [ -z "${tags[i]}" ] && continue
+            if [[ $tag == $TAG_CABALBUILDDEP ]] ; then
+                sed -i -r -e "s/${ins_marker}/\\0${ins_prefix}${tags[i]}/" "${CABAL_FILE_CONTRIB}"
+            else
+                sed -i -r -e "/${ins_marker}/{G;s/$/${ins_indent}${ins_prefix}${tags[i]}/;}" "${CONFIG_FILE_CONTRIB}"
+            fi
+        done
+        if [[ $tag != $TAG_CABALBUILDDEP && -n "${tags}" ]] ; then
+            ins_group_comment="${ins_indent}--   For extension $(basename $extension_srcfile .hs):"
+            sed -i -r -e "/${ins_marker}/{G;s/$/${ins_group_comment}/;}" "${CONFIG_FILE_CONTRIB}"
+        fi
+    done


[Decoration: don't crash when given a non-existent font
Andrea Rossato <andrea.rossato at unibz.it>**20070810182433] 
[actually use the selected font in XPrompt.
David Roundy <droundy at darcs.net>**20070810174543] 
[increase default contrast in XPrompt.
David Roundy <droundy at darcs.net>**20070810174724] 
[center prompt text in window.
David Roundy <droundy at darcs.net>**20070810173746] 
[don't crash when given a non-existent font in XPrompt.
David Roundy <droundy at darcs.net>**20070810170445] 
[Add ViewPrev to MetaModule
Spencer Janssen <sjanssen at cse.unl.edu>**20070810211242] 
nelhage at mit.edu**20070810032653
 Add a ViewPrev extension which gives a viewPrev command to view the
 previously visible workspace.
[fix CopyWindow to not require Integral WorkspaceId.
David Roundy <droundy at darcs.net>**20070801144543] 
[SshPrompt now uses RunInXTerm to launch the command
Andrea Rossato <andrea.rossato at unibz.it>**20070807101911] 
[RunInXTerm: a simple module to run commands in an X terminal
Andrea Rossato <andrea.rossato at unibz.it>**20070807101603
 This is just a wrapper around spawn to launch commands in an X
 terminal: runInXTerm will check the for the XTERMCMD environmental
 variable, and use it to run the command. If the variable is not set
 the command will be executed with xterm.
[XPrompt: removed touchFile (which is not the equivalent of touch!)
Andrea Rossato <andrea.rossato at unibz.it>**20070805225906] 
[LayoutScreen: haddock cleanup
Andrea Rossato <andrea.rossato at unibz.it>**20070805215800] 
[XPrompt.hs: getCompletion should check for completions of the last word of the command line
Andrea Rossato <andrea.rossato at unibz.it>**20070805124130] 
[work around Magnifier's problems with floating windows
Peter De Wachter <pdewacht at gmail.com>**20070805141051] 
[Add Roledex to MetaModule
Spencer Janssen <sjanssen at cse.unl.edu>**20070806151628] 
[XPrompt.hs: read history lazily
Andrea Rossato <andrea.rossato at unibz.it>**20070804185914
 Instead of forcing the reading of all the history file we read it lazily.
[XPrompt.hs: removed defaultPromptConfig. use defautlXPConfig instead
Andrea Rossato <andrea.rossato at unibz.it>**20070804183252] 
[weird formatting fixed
Don Stewart <dons at cse.unsw.edu.au>**20070806032739] 
tim.thelion at gmail.com**20070804235730
 Cascading windows...
[XPrompt.hs: haddock corrections and some comments
Andrea Rossato <andrea.rossato at unibz.it>**20070804104622] 
[XMonadPrompt.hs: minor haddock corrections
Andrea Rossato <andrea.rossato at unibz.it>**20070804104534] 
[SwitchTrans.hs: minor haddock corrections
Andrea Rossato <andrea.rossato at unibz.it>**20070804104458] 
[SshPrompt.hs: minor haddock corrections
Andrea Rossato <andrea.rossato at unibz.it>**20070804104441] 
[ShellPrompt.hs: minor haddock corrections
Andrea Rossato <andrea.rossato at unibz.it>**20070804104408] 
[FlexibleManipulate.hs: minor haddock corrections
Andrea Rossato <andrea.rossato at unibz.it>**20070804104330] 
[MetaModule: added XPrompt and others
Andrea Rossato <andrea.rossato at unibz.it>**20070804093049
 XPrompt, XMonadPrompt, SshPrompt.
 ShellPrompt is commented out since it requires readline and the related
 xmonad.cabal modifications.
[XPrompt: fixes a couple of bugs
Andrea Rossato <andrea.rossato at unibz.it>**20070804090817
 - we run the action passed to mkXPrompt only if we have a command;
 - updateWindows must call destroyComplWin if there are no completions;
 - some comments (more to come)
 - a shorthand in keyPressHandle
 - removed all warnings
[RotSlaves rework
Karsten Schoelzel <kuser at gmx.de>**20070803185337
 Rework the logic of RotSlaves and rename it RotSlavesDown, add RotSlavesUp. These rotate
 the slaves in different directions.
 Also changed the usage, eliminating the need for "windows" in the keybinding.
[XPrompt: code cleanup
Andrea Rossato <andrea.rossato at unibz.it>**20070803181905
 The completion list is not cached anymore: this greatly simplify the code
 making its runtime behaviour more predictable...;-) Suggested by Spencer.
[Make 'compList :: [String]', rather than Maybe.  No completions is represented by []
Spencer Janssen <sjanssen at cse.unl.edu>**20070803160424] 
[Rename 'setCompletionList' to 'refreshCompletionList'
Spencer Janssen <sjanssen at cse.unl.edu>**20070803155942] 
[XPrompt: added comletion and history support
Andrea Rossato <andrea.rossato at unibz.it>**20070803154531
 This is a long patch the brings us a real prompt, more or less: completions
 now work. Added history support, with a configuration option: defaul history
 size is 256.  
 defaultPromptConfig is now deprecated: please use defaultXPConfig instead
[Prompts: updated and corrected usage info
Andrea Rossato <andrea.rossato at unibz.it>**20070803130158] 
[Make the XPrompt appear on the current screen
Spencer Janssen <sjanssen at cse.unl.edu>**20070802184231] 
[XPrompt: a module for easily writing graphical prompts
Andrea Rossato <andrea.rossato at unibz.it>**20070802171552] 
[ XMonadPrompt: a graphical prompt for running XMonad internal commands
Andrea Rossato <andrea.rossato at unibz.it>**20070802165336] 
[SshPrompt: a graphical prompt for ssh connection
Andrea Rossato <andrea.rossato at unibz.it>**20070802155943] 
[ShellPrompt: a graphical shell prompt
Andrea Rossato <andrea.rossato at unibz.it>**20070802155845
 This module requires readline and so a modification to xmonad.cabal. See
 usage for instructions.
[FlexibleManipulate.hs: needs -fglasgow-exts to compile.
joachim.fasting at gmail.com**20070802144042] 
[MetaModule.hs: add FocusNth.
joachim.fasting at gmail.com**20070802144023] 
[Add ThreeColumns to MetaModule
Spencer Janssen <sjanssen at cse.unl.edu>**20070802143356] 
[Add RotSlaves to MetaModule
Spencer Janssen <sjanssen at cse.unl.edu>**20070802143334] 
Hans Philipp Annen <haphi at gmx.net>**20070802094408] 
[DeManage.hs: haddock compatibility.
joachim.fasting at gmail.com**20070725100910] 
[Fix warnings in FlexibleManipulate (Sorry!)
Michael G. Sloan <mgsloan at gmail.com>**20070729032407] 
[Add FlexibleManipulate extension
Michael G. Sloan <mgsloan at gmail.com>**20070729031402] 
[Commands: refactoring to include in MetaModule
Andrea Rossato <andrea.rossato at unibz.it>**20070728132029
 Just a small refactooring (well, now runCommand requires a command list, and
 I added runCommand's that will take a string to run it against the default
 command list) to include this module in MetaModule so that we can track it
 in case of API changes (this patch has been requested by Spencer).
[SwitchTrans.hs, initial version
l.mai at web.de**20070728153826] 
[fix WorkspaceDir (which was broken) using LayoutHelpers.
David Roundy <droundy at darcs.net>**20070726133520] 
[FocusNth initial import
Karsten Schoelzel <kuser at gmx.de>**20070725203305] 
[use a little more contrast in default tabs.
David Roundy <droundy at darcs.net>**20070724143723] 
[3col fix: do not switch to tall layout on resize/incmastern
Kai Grossjohann <kai at emptydomain.de>**20070723212754] 
[3col rounding
Kai Grossjohann <kai at emptydomain.de>**20070721204026] 
[fix 3col layout for nmaster + 1 windows
Kai Grossjohann <kai at 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 at 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 at bobturf.org**20070721002307] 
[DeManage: take a Window as argument
Spencer Janssen <sjanssen at cse.unl.edu>**20070718204410] 
Spencer Janssen <sjanssen at cse.unl.edu>**20070718204041] 
[Add XMonadContrib.DeManage: a module for unmanaging windows (like panels)
Spencer Janssen <sjanssen at cse.unl.edu>**20070718203107] 
[Tabbed.hs: corrected error in Usage reported by Xavier Maillard
Andrea Rossato <andrea.rossato at unibz.it>**20070717050034] 
[fixes Commands.hs
Andrea Rossato <andrea.rossato at unibz.it>**20070716164017] 
[MetaModule.hs: add missing modules.
joachim.fasting at gmail.com**20070715205857] 
[Magnifier: unbreak: raise focus window
Peter De Wachter <pdewacht at gmail.com>**20070630072206] 
[Spiral.hs: correct module header.
joachim.fasting at gmail.com**20070707212836] 
[LayoutScreens.hs: correct module header.
joachim.fasting at gmail.com**20070701215712] 
[add FlexibleResize to MetaModule
l.mai at web.de**20070708130229] 
[link to xinerama-dmenu patch for dmenu 3.2
Jason Creighton <jcreigh at gmail.com>**20070708021413
 Thanks to Dave Harrison for an updated version of the patch.
[Tabbed: updated usage information
Andrea Rossato <andrea.rossato at unibz.it>**20070707065123] 
[Tabs should stay beneath any floating window
Andrea Rossato <andrea.rossato at 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 at 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 at 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 at unibz.it>**20070704224110] 
[SimpleStacking: -Wall police
Alec Berryman <alec at thened.net>**20070704201255] 
[SimpleStacking: remove note about Xinerama incompatability, works fine now
Alec Berryman <alec at thened.net>**20070704200626] 
[ScreenLayouts.hs: updates to the last API changes
Andrea Rossato <andrea.rossato at 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 at cse.unl.edu>**20070630065916] 
[Make GreedyView work with ScreenDetails
Spencer Janssen <sjanssen at cse.unl.edu>**20070630065643] 
[flexible resizing for floating windows
l.mai at 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.
[resolve conflicts in Decoration and Tabbed.
David Roundy <droundy at darcs.net>**20070629204518
 Note that you no longer need simpleStacking when using tabbed.
[resolve conflict in Square.
David Roundy <droundy at darcs.net>**20070629201636] 
[clean up code in Combo.
David Roundy <droundy at 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 at 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 at 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 at darcs.net>**20070623143745] 
[introduce idModify which is just "const (return Nothing)".
David Roundy <droundy at darcs.net>**20070623143542] 
[move Spiral to LayoutHelpers.
David Roundy <droundy at darcs.net>**20070623143516] 
[Note that SimpleStacking is incompatible with Xinerama
Jason Creighton <jcreigh at 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 at gmail.com>**20070627033910] 
[Accordion.hs: whitespace.
joachim.fasting at gmail.com**20070626071449
 Makes Haddock not complain about not finding documentation for '$'.
[MetaModule.hs: add LayoutHelpers.
joachim.fasting at gmail.com**20070626065522
 Also tweaks import ordering slightly.
[Tabbed.hs: updated usage information
Andrea Rossato <andrea.rossato at unibz.it>**20070625140735] 
[added configration options and moved font stuff to Decorations.hs
Andrea Rossato <andrea.rossato at unibz.it>**20070625140112
 Added a new data type to keep configuration options. tabbed now takes the shrinker and the configuration
 Fixed a bug related to vertical alignment of text.
[Decoration.hs: added automatic font managment
Andrea Rossato <andrea.rossato at 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 at darcs.net>**20070624141631] 
[remove BackCompat.hs
daniel at wagner-home.com**20070624171740] 
[Square.hs: put usage instructions after imports for Haddock compatibility.
joachim.fasting at gmail.com**20070623184938] 
[Magnifier.hs: quote screenshot url for Haddock compatibility.
joachim.fasting at gmail.com**20070623223227] 
[add new LayoutHelpers module.
David Roundy <droundy at darcs.net>**20070622142950] 
[Add SinkAll module.
joachim.fasting at 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 at gmail.com**20070622111442] 
[fix usage info for LayoutScreens.
David Roundy <droundy at darcs.net>**20070622132618] 
[add new LayoutScreens module.
David Roundy <droundy at darcs.net>**20070622131300] 
[Magnifier: raise the focus window
Peter De Wachter <pdewacht at gmail.com>**20070621192541] 
[Circle: raise the focus window
Peter De Wachter <pdewacht at gmail.com>**20070621191207] 
[Circle cleanups
Peter De Wachter <pdewacht at gmail.com>**20070621191125] 
[make Mosaic lay thigs out a bit better.
David Roundy <droundy at darcs.net>**20070621162632] 
[add SimpleStacking module to make Combo and Tabbed work together.
David Roundy <droundy at 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 at gmail.com>**20070620170020
 based on a suggestion by Tim Hobbs
joachim.fasting at gmail.com**20070620115852] 
[Make Mosaic compile without warnings
Spencer Janssen <sjanssen at cse.unl.edu>**20070620153111] 
[make some layouts more general.
David Roundy <droundy at darcs.net>**20070620125420] 
[Mosaic.hs: get rid off some of the warnings generated by -Wall.
joachim.fasting at 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 at gmail.com**20070620115457] 
[Combo.hs: use case instead of non-standard pattern matching.
joachim.fasting at 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 at gmail.com**20070620112555
 tabbed needs an additional argument.
[README: change reference to 'examples/'.
joachim.fasting at gmail.com**20070620093753] 
[Use Data.Ord.comparing in DynamicLog
Shachaf Ben-Kiki <shachaf at 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 at gmail.com**20070619220323
 Think this fixes the rest of the errors caused by the Layout change.
[MagicFocus.magicFocus: fix type signature.
joachim.fasting at gmail.com**20070619214839
 Layout change caused because of missing type argument.
[LayoutHooks.hs: add module header.
joachim.fasting at gmail.com**20070619204504] 
[Factor out pprWindowSet (and Xinerama version) from dynamicLog.
Shachaf Ben-Kiki <shachaf at 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 at darcs.net>**20070619150928] 
[run-xmonad.sh: don't hard-code path to mkfifo.
joachim.fasting at 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 at gmail.com**20070619002849] 
[run-xmonad.sh: use $HOME when setting PATH.
joachim.fasting at gmail.com**20070618234703] 
[Circle.hs: only compute sqrt 2 once.
joachim.fasting at gmail.com**20070618232051] 
[Magnifier.hs: add usage instructions.
joachim.fasting at gmail.com**20070618212215] 
[MagicFocus.hs: add module header and usage instructions.
joachim.fasting at gmail.com**20070618205421] 
[MagicFocus.magicFocus: add type signature.
joachim.fasting at gmail.com**20070618205222] 
[Accordion.hs: add module header and usage instructions.
joachim.fasting at gmail.com**20070618193626] 
[LayoutHints.hs: add usage thingie for Haddock.
joachim.fasting at gmail.com**20070618143234] 
[LayoutHints.hs: add module header.
joachim.fasting at gmail.com**20070618143059] 
[Dzen.hs: add module header.
joachim.fasting at gmail.com**20070618142915] 
[MetaModule.hs: correct module header.
joachim.fasting at gmail.com**20070618191905] 
[Remove all references to exec
Spencer Janssen <sjanssen at cse.unl.edu>**20070618201652] 
[Add Accordion to MetaModule
Spencer Janssen <sjanssen at cse.unl.edu>**20070618190526] 
[Add an "accordion" layout which puts non-focused windows in ribbons at the top and bottom of the screen.
glasser at mit.edu**20070618153943] 
[RotView.rotView: use Data.Ord.comparing.
joachim.fasting at gmail.com**20070618144502
 Looks a bit cleaner than '\x y -> compare (tag x) (tag y)'
[shrink window names to fit tabs.
David Roundy <droundy at darcs.net>**20070617152340] 
[Tabbed.hs: fixed centerText issues and some binding shadowing warnings
Andrea Rossato <andrea.rossato at 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
 So we now get the FontStruct with loadQueryFont, we set the default
 Xorg fonts and we calculate things for (vertical and horizontal)
 It also removes some binding shadows compiler warnings 
[fix leak in Combo.
David Roundy <droundy at darcs.net>**20070616191052
 We leaked decorations, since UnDoLayout wasn't passed to the actual layouts
 that had decorations attached.  :(
Spencer Janssen <sjanssen at cse.unl.edu>**20070617000924] 
[Comment only
Spencer Janssen <sjanssen at cse.unl.edu>**20070617000805] 
[Import typo
Spencer Janssen <sjanssen at cse.unl.edu>**20070614211337] 
[Magnifier layout hack
Peter De Wachter <pdewacht at 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 at cse.unl.edu>**20070614205211] 
[WorkspaceDir.hs: info and documentation
Andrea Rossato <andrea.rossato at unibz.it>**20070614144443] 
[Warp.hs: info and documentation
Andrea Rossato <andrea.rossato at unibz.it>**20070614144426] 
[TwoPane.hs: info and documentation
Andrea Rossato <andrea.rossato at unibz.it>**20070614144409] 
[Submap.hs: info and documentation
Andrea Rossato <andrea.rossato at unibz.it>**20070614144348] 
[Square.hs: info and documentation
Andrea Rossato <andrea.rossato at unibz.it>**20070614144317] 
[Spiral.hs: info and documentation
Andrea Rossato <andrea.rossato at unibz.it>**20070614144300] 
[SimpleDate.hs: info and documentation
Andrea Rossato <andrea.rossato at unibz.it>**20070614144241] 
[RotView.hs: info and documentation
Andrea Rossato <andrea.rossato at unibz.it>**20070614144225] 
[NoBorders.hs: info and documentation
Andrea Rossato <andrea.rossato at unibz.it>**20070614144200] 
[NamedWindows.hs: info and documentation
Andrea Rossato <andrea.rossato at unibz.it>**20070614144135] 
[Mosaic.hs: info and documentation
Andrea Rossato <andrea.rossato at unibz.it>**20070614144118] 
[metaModule.hs: info and documentation
Andrea Rossato <andrea.rossato at unibz.it>**20070614144102] 
[HintedTile.hs: info and documentation
Andrea Rossato <andrea.rossato at unibz.it>**20070614144019] 
[GreedyView.hs: info and documentation
Andrea Rossato <andrea.rossato at unibz.it>**20070614143953] 
[FindEmptyWorkspace.hs: info and documentation
Andrea Rossato <andrea.rossato at unibz.it>**20070614143909] 
[DynamicLog.hs: info and documentation
Andrea Rossato <andrea.rossato at unibz.it>**20070614143839] 
[DwmPromote.hs: info and documentation
Andrea Rossato <andrea.rossato at unibz.it>**20070614143813] 
[Dmenu.hs: info and documentation
Andrea Rossato <andrea.rossato at unibz.it>**20070614143753] 
[Decoration.hs: info and documentation
Andrea Rossato <andrea.rossato at unibz.it>**20070614143731] 
[Combo.hs: info and documentation
Andrea Rossato <andrea.rossato at unibz.it>**20070614143700] 
[Circle.hs: info and documentation
Andrea Rossato <andrea.rossato at unibz.it>**20070614143550] 
[BackCompat.hs info e documentation
Andrea Rossato <andrea.rossato at unibz.it>**20070614064850] 
[Tabbed.hs: Get correct color values instead of assuming a 24-bit display
Jason Creighton <jcreigh at 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 at unibz.it>**20070613190908
 Haddock stuff.
[add bsd-style license for xmonad contrib
Don Stewart <dons at cse.unsw.edu.au>**20070614025454] 
[Update license information
Spencer Janssen <sjanssen at cse.unl.edu>**20070613152829] 
[template for module information e documentation
Andrea Rossato <andrea.rossato at unibz.it>**20070613131029] 
[Remove some debugging statements I forgot about earlier
Stefan O'Rear <stefanor at cox.net>**20070613041112] 
[Update MagicFocus to the new StackSet
Spencer Janssen <sjanssen at cse.unl.edu>**20070613035323] 
[Magic Focus
Peter De Wachter <pdewacht at 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 at darcs.net>**20070612170349] 
[changes to work with Stacks that can't be empty.
David Roundy <droundy at darcs.net>**20070612151209] 
[add Combo and Square to MetaModule.
David Roundy <droundy at darcs.net>**20070612133753] 
[new module NoBorders to let a given layout have windows without borders.
David Roundy <droundy at 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 at 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 at darcs.net>**20070612133009] 
[add "Square" layout.
David Roundy <droundy at 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 at darcs.net>**20070611224922] 
[In Decoration.hs, track rename of ModifyWindows
Stefan O'Rear <stefanor at 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 at cox.net>**20070612060210] 
[the Stack can be Empty
Andrea Rossato <andrea.rossato at unibz.it>**20070612055144] 
[Documentation fix
Spencer Janssen <sjanssen at cse.unl.edu>**20070612035655] 
[Comment only
Spencer Janssen <sjanssen at cse.unl.edu>**20070612031305] 
[Fix LayoutHints in the presence of nonzero border widths
Stefan O'Rear <stefanor at cox.net>**20070611005407] 
[add keybinding to make aspect ratio flexible.
David Roundy <droundy at darcs.net>**20070611165915] 
[Note the modules I maintain
Spencer Janssen <sjanssen at cse.unl.edu>**20070611184830] 
[Add MetaModule
Spencer Janssen <sjanssen at cse.unl.edu>**20070611184601] 
[Updates to work with recent API changes
Spencer Janssen <sjanssen at cse.unl.edu>**20070611183439] 
[Rename safeIO to catchIO
Spencer Janssen <sjanssen at cse.unl.edu>**20070611162028] 
[add WorkspaceDir, which sets the current directory in a workspace.
David Roundy <droundy at 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.
Don Stewart <dons at cse.unsw.edu.au>**20070611053450] 
[added dynamicLogXinerama, a workspace logger that's nicer for Xinerama
Jason Creighton <jcreigh at gmail.com>**20070611051810] 
[redraw decorations on PropertyNotify
Jason Creighton <jcreigh at 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
[use safe peek instead of unsafe focus
Jason Creighton <jcreigh at 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 at gmail.com>**20070610231510] 
[tune layout of Tabbed just a bit.
David Roundy <droundy at darcs.net>**20070610203513] 
[make Decoration set the input mask appropriately.
David Roundy <droundy at darcs.net>**20070610203451] 
[Updates for Layout API change
Spencer Janssen <sjanssen at cse.unl.edu>**20070610203840] 
[color focussed tab differently.
David Roundy <droundy at darcs.net>**20070610195743] 
[update Mosaic for latest changes.
David Roundy <droundy at darcs.net>**20070610145816] 
[maximize rather than minimize the rating.
David Roundy <droundy at darcs.net>**20070601183240] 
[fix error in select.
David Roundy <droundy at darcs.net>**20070601183147] 
[improve changeMosaic.
David Roundy <droundy at darcs.net>**20070601175042] 
[cut obsolete description of mosaic.
David Roundy <droundy at darcs.net>**20070609131456] 
[start switching over to a Monte Carlo algorithm for Mosaic
David Roundy <droundy at darcs.net>**20070601170505] 
[new layout algorithm for Mosaic.
David Roundy <droundy at darcs.net>**20070527191153] 
[display names of windows on tabs.
David Roundy <droundy at darcs.net>**20070610163729] 
[make Decoration draw the window initially.
David Roundy <droundy at darcs.net>**20070610163651
 We still don't respond to expose events.  :(
[Fix name of xmonad-clock in compilation instructions.
glasser at mit.edu**20070610155204] 
[add Decoration module to be used to easily define decorations.
David Roundy <droundy at darcs.net>**20070610153939] 
[add sketch of tabbed layout.
David Roundy <droundy at darcs.net>**20070610153926] 
[make LayoutHints work with new modifyLayout (in X).
David Roundy <droundy at darcs.net>**20070610145740] 
[tag visibles with <N>
Don Stewart <dons at cse.unsw.edu.au>**20070610111931] 
[tweak pkill
Don Stewart <dons at cse.unsw.edu.au>**20070610093027] 
dave at nullcube.com**20070610091056
 Add documentation on how to use GreedyView as your default workspace switcher.
[use all 3 load values
Don Stewart <dons at 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 at cs.chalmers.se**20070610090228] 
[example xinitrc
Don Stewart <dons at cse.unsw.edu.au>**20070610085715] 
[update run-xmonad.sh
Don Stewart <dons at cse.unsw.edu.au>**20070610063915] 
[no need for ./scripts/xmonad-status.c, update run-xmonad.sh
Don Stewart <dons at cse.unsw.edu.au>**20070610062806] 
[add DynamicLog.hs
Don Stewart <dons at cse.unsw.edu.au>**20070610062757] 
[make LayoutHints robust with regard to future addition of Layout fields.
David Roundy <droundy at darcs.net>**20070609173725] 
[remove out of date ./scripts/xmonad-status.hs
Don Stewart <dons at cse.unsw.edu.au>**20070610005107] 
[add new LayoutHints module that makes layouts respect size hints.
David Roundy <droundy at darcs.net>**20070604213716] 
[improve xmonad-status.c
Don Stewart <dons at cse.unsw.edu.au>**20070609140258] 
[Add C script for parsing new logging encoding, and displaying workspace info
Don Stewart <dons at cse.unsw.edu.au>**20070609131856] 
[missing unsetenv
Don Stewart <dons at cse.unsw.edu.au>**20070609090127] 
[add tiny clock program (C) i'm using in the status bar
Don Stewart <dons at cse.unsw.edu.au>**20070609080435] 
[remove obsolete 'examples' dir
Don Stewart <dons at cse.unsw.edu.au>**20070609061450] 
[latest version of xmonad-status.hs
Don Stewart <dons at cse.unsw.edu.au>**20070609060913] 
[remove dead version
Don Stewart <dons at cse.unsw.edu.au>**20070609060857] 
[Circle layout
Peter De Wachter <pdewacht at 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 at gmail.com>**20070606061941] 
[nicer format for dynamic workspaces
Don Stewart <dons at cse.unsw.edu.au>**20070606045705] 
[add script which only draws current workspace, and those with clients
Don Stewart <dons at cse.unsw.edu.au>**20070606044544] 
[In docs, change name of program from mux to xmonad-status.
glasser at mit.edu**20070605140045] 
[Add xmonad-status.hs
Don Stewart <dons at cse.unsw.edu.au>**20070605132108
 An external status bar client for xmonad. 
 See screenshots:
[gapless tiled layout obeying size hints
Peter De Wachter <pdewacht at gmail.com>**20070605071716] 
[Contrib package for 6.4 users
daniel at wagner-home.com**20070604225534] 
[XMonadContrib.ReadMap: a Read instance of Map for GHC 6.4 users
daniel at wagner-home.com**20070602064318] 
[keybindings to warp pointer to window center
daniel at wagner-home.com**20070602062328] 
[XMonadContrib.Commands: for workspace and screen commands, leave out W/S tag
glasser at mit.edu**20070601161351] 
[New contrib module: run internal xmonad commands via dmenu
glasser at mit.edu**20070601043849] 
[Note that my xinerama patch is now in dzen.
glasser at mit.edu**20070601041112] 
[Rescreen is in main xmonad now
Spencer Janssen <sjanssen at cse.unl.edu>**20070528050656] 
[replace "name" in NamedWindow with a Show instance.
David Roundy <droundy at darcs.net>**20070526185114] 
[[Spiral] blend in the scale factor so it doesn't have any effect on the smallest windows
joe.thornber at gmail.com**20070525032732] 
[[Spiral] last rect takes all available space
joe.thornber at gmail.com**20070524120239] 
[[Spiral] Introduce a simpler Rect data type to remove a lot of the fromIntegrals
joe.thornber at gmail.com**20070524100423] 
[[Spiral] divideRects now takes a list of directions to split in
joe.thornber at gmail.com**20070524090211] 
[[Spiral] misc tidying
joe.thornber at gmail.com**20070524085537] 
[[Spiral] remove old spiral code
joe.thornber at gmail.com**20070524084805] 
[[Spiral] add fibonacci spiral
joe.thornber at gmail.com**20070524084423] 
[Allow clients of NamedWindows to get at the name.
glasser at mit.edu**20070523184251] 
[dzen module (with xinerama support, which requires glasser's Xinerama patch to dzen)
glasser at mit.edu**20070523184315] 
[Extract NamedWindow support from Mosaic into its own module
glasser at mit.edu**20070523155855] 
[remove SwapFocus (which is no longer possible)
David Roundy <droundy at darcs.net>**20070523153841
 This module depended on the focus stack.
[Fix Spiral's module name
Spencer Janssen <sjanssen at cse.unl.edu>**20070522170909] 
[[SPIRAL] add spiral tiling layout
joe.thornber at gmail.com**20070522062537] 
[Make RotView compile.
Miikka Koskinen <arcatan at 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 at kapsi.fi>**20070522062118] 
[make FindEmptyWorkspace compile
Miikka Koskinen <arcatan at kapsi.fi>**20070521123239] 
[make DwmPromote compile
Miikka Koskinen <arcatan at kapsi.fi>**20070521123140] 
[updated Dmenu.hs to work with zipper StackSet
Jason Creighton <jcreigh at gmail.com>**20070521233947] 
[Add GreedyView
Spencer Janssen <sjanssen at cse.unl.edu>**20070521220048] 
[Rescreen: collects new screen information
Spencer Janssen <sjanssen at cse.unl.edu>**20070521164808] 
[Fixes for windowset -> workspace rename
Spencer Janssen <sjanssen at cse.unl.edu>**20070521042118] 
[TwoPane: hide windows that aren't in view
Spencer Janssen <sjanssen at cse.unl.edu>**20070518224240] 
[make Mosaic even less picky by default.
David Roundy <droundy at darcs.net>**20070516175554] 
[add clear window message in Mosaic.
David Roundy <droundy at darcs.net>**20070516175518] 
[Comment only
Spencer Janssen <sjanssen at cse.unl.edu>**20070517211003] 
[Add instructions for TwoPane
Spencer Janssen <sjanssen at cse.unl.edu>**20070517210206] 
[Add TwoPane
Spencer Janssen <sjanssen at cse.unl.edu>**20070517195618] 
[throttle the exponential expense when many windows are present.
David Roundy <droundy at darcs.net>**20070516022123] 
[make mosaic configure windows by name rather than by Window.
David Roundy <droundy at 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.  :(
Miikka Koskinen <arcatan at kapsi.fi>**20070513184338
 With this module you can find empty workspaces, view them and tag windows to
[make DwmPromote compile
Miikka Koskinen <arcatan at kapsi.fi>**20070513184254] 
[make DwmPromote compile again
Miikka Koskinen <arcatan at kapsi.fi>**20070510154158] 
[make DwmPromote compile
Miikka Koskinen <arcatan at kapsi.fi>**20070503105236] 
[add SwapFocus.
David Roundy <droundy at darcs.net>**20070512191315] 
[make rotView only consider non-visible workspaces (Xinerama)
Jason Creighton <jcreigh at gmail.com>**20070510012059] 
[fix commend in RotView.
David Roundy <droundy at darcs.net>**20070505185654] 
[switch to Message type for layout messages
Don Stewart <dons at cse.unsw.edu.au>**20070505014332] 
[Fix instructions in Mosaic.
Chris Mears <chris at cmears.id.au>**20070503222345] 
[add Mosaic layout.
David Roundy <droundy at darcs.net>**20070503151024] 
[-Wall police
Spencer Janssen <sjanssen at cse.unl.edu>**20070503211700] 
[Make RotView build, and add a brief description.
Chris Mears <chris at cmears.id.au>**20070503104234] 
[comment: Gave URL to xinerama-enabled dmenu patch
Jason Creighton <jcreigh at gmail.com>**20070503053133] 
[Put dmenu in X too
Spencer Janssen <sjanssen at cse.unl.edu>**20070503053727] 
[Add dmenu (thanks jcreigh)
Spencer Janssen <sjanssen at cse.unl.edu>**20070503052225] 
[add RotView module.
David Roundy <droundy at darcs.net>**20070421233838] 
[XMonadContrib.DwmPromote: dwm-like promote
Miikka Koskinen <arcatan at 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 at cse.unsw.edu.au>**20070429064013] 
[more details
Don Stewart <dons at cse.unsw.edu.au>**20070429061426] 
[add readme
Don Stewart <dons at cse.unsw.edu.au>**20070429061329] 
[Initial import of xmonad contributions
Don Stewart <dons at cse.unsw.edu.au>**20070429061150] 
Patch bundle hash:
-------------- next part --------------
A non-text attachment was scrubbed...
Name: generated-xmonad-configs.zip
Type: application/zip
Size: 4981 bytes
Desc: not available
Url : http://www.haskell.org/pipermail/xmonad/attachments/20070813/66db1106/generated-xmonad-configs-0001.zip

More information about the Xmonad mailing list