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: ~~~~~ %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 ~~~~~ 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: Decoration.hs Dzen.hs LayoutHelpers.hs LayoutHooks.hs MetaModule.hs NamedWindows.hs RunInXTerm.hs SimpleStacking.hs SwitchTrans.hs ViewPrev.hs XPrompt.hs 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 New patches: [Add insert markers to Config.hs for docstring parser Alex Tarkovsky <alextarkovsky@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 } Context: [trailing whitespace only Don Stewart <dons@cse.unsw.edu.au>**20070805072716] [added workspaces to hs-boot (needed by XMonadContrib.Commands and possibly other modules) Andrea Rossato <andrea.rossato@unibz.it>**20070728131756] [QuickCheck filter preserves order Karsten Schoelzel <kuser@gmx.de>**20070728184534] [Bugfix: reordering when filtering out the last window on a workspace Karsten Schoelzel <kuser@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@cse.unl.edu>**20070724152340] [Remove unnecessary Integral constraints Spencer Janssen <sjanssen@cse.unl.edu>**20070724152257] [make delete work when window is in multiple workspaces. David Roundy <droundy@darcs.net>**20070724142045] [Remove redundant 'n >= 0' check from shift. (from David Roundy's 'simplify shift, removing unneeded check.' patch) Spencer Janssen <sjanssen@cse.unl.edu>**20070724145927] [Cleanup of shift code Michael G. Sloan <mgsloan@gmail.com>**20070722205337] [use $HOME in examples Don Stewart <dons@cse.unsw.edu.au>**20070719063348] [Tweak dmenu binding Peter De Wachter <pdewacht@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@gmail.com>**20070710042631] [Operations.screenWorkspace: return Nothing when the screen does not exist Spencer Janssen <sjanssen@cse.unl.edu>**20070707223842] [Operations.rescreen: screen indexes start at zero Spencer Janssen <sjanssen@cse.unl.edu>**20070707223334] [Note and workaround bugs in Operations.float Spencer Janssen <sjanssen@cse.unl.edu>**20070705195213] [refresh after starting Spencer Janssen <sjanssen@cse.unl.edu>**20070630050346] [UPGRADE X11-Extras! Manage iconified windows Spencer Janssen <sjanssen@cse.unl.edu>**20070630021026] [Move screen details into StackSet Spencer Janssen <sjanssen@cse.unl.edu>**20070629213917] [Change a window's workspace when dragging across screens (closes #30) Jason Creighton <jcreigh@gmail.com>**20070628025023] [support self-modifying layouts. David Roundy <droundy@darcs.net>**20070623201447] [comment for (dubious?) integrate' Don Stewart <dons@cse.unsw.edu.au>**20070626052431] [broadcast unidentified events. David Roundy <droundy@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@cse.unsw.edu.au>**20070626040907] [fix empty case in 'filter', and note differences in semantics wrt. focus to 'delete' Don Stewart <dons@cse.unsw.edu.au>**20070626035741] [clean up 'StackSet.filter' for style Don Stewart <dons@cse.unsw.edu.au>**20070626033202] [minor tweaks, ideas from joachim.fasting@ Don Stewart <dons@cse.unsw.edu.au>**20070621033613] [only perform mouse events on managed windows. closes #28 Don Stewart <dons@cse.unsw.edu.au>**20070621011700] [Update Layout documentation Spencer Janssen <sjanssen@cse.unl.edu>**20070620150858] [-Wall police Spencer Janssen <sjanssen@cse.unl.edu>**20070620150823] [Stack windows in the order they are returned by doLayout Spencer Janssen <sjanssen@cse.unl.edu>**20070620150419] [remove out of date `(Included with GHC)' text in README Don Stewart <dons@cse.unsw.edu.au>**20070620060430] [make Layouts able to layout whatever they like. David Roundy <droundy@darcs.net>**20070619150816] [float fixed size windows Peter De Wachter <pdewacht@gmail.com>**20070618214657] [Remove all references to 'exec' Spencer Janssen <sjanssen@cse.unl.edu>**20070618201532] [-Wall police, and turn on -fno-warn-orphans Don Stewart <dons@cse.unsw.edu.au>**20070617052322] [make workspace tag not need to be a Num. David Roundy <droundy@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@cse.unl.edu>**20070614213412] [Remove 'temporary work around' in 'windows' Spencer Janssen <sjanssen@cse.unl.edu>**20070614211450] [haddock tuning for StackSet.hs Andrea Rossato <andrea.rossato@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@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@unibz.it>**20070613185902] [Indentation Spencer Janssen <sjanssen@cse.unl.edu>**20070613043018] [prevent keyboard focus from getting lost in some cases Jason Creighton <jcreigh@gmail.com>**20070613025350] [resolve conflict in Operations. David Roundy <droundy@darcs.net>**20070612170625] [add catchX to catch exceptions. David Roundy <droundy@darcs.net>**20070612154253] [make focus, up and down complete functions. David Roundy <droundy@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@darcs.net>**20070612132853] [Make 'view' a total function Spencer Janssen <sjanssen@cse.unl.edu>**20070612143248] [fmt Don Stewart <dons@cse.unsw.edu.au>**20070612134938] [-Wall police Stefan O'Rear <stefanor@cox.net>**20070612060546] [Use a more descriptive name for the layout reversal message Stefan O'Rear <stefanor@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@cox.net>**20070612055510] [Add a broadcastMessage function, which sends to all visible workspaces without refreshing. (+6 loc) Stefan O'Rear <stefanor@cox.net>**20070612055339] [TODO for scan Spencer Janssen <sjanssen@cse.unl.edu>**20070611214217] [Set withdrawn state after calling windows Spencer Janssen <sjanssen@cse.unl.edu>**20070611213327] [Remove obsolete 'layout' function Spencer Janssen <sjanssen@cse.unl.edu>**20070611203622] [-Wall police Spencer Janssen <sjanssen@cse.unl.edu>**20070611202007] [Comment only Spencer Janssen <sjanssen@cse.unl.edu>**20070611195827] [Hide windows that are not supposed to be visible Spencer Janssen <sjanssen@cse.unl.edu>**20070611191809] [-Wall police Spencer Janssen <sjanssen@cse.unl.edu>**20070611185708] [API CHANGE: Give doLayout a Stack rather than a flattened list Spencer Janssen <sjanssen@cse.unl.edu>**20070611182629] [-Wall police Spencer Janssen <sjanssen@cse.unl.edu>**20070611180123] [Add StackSet.filter Spencer Janssen <sjanssen@cse.unl.edu>**20070611165154] [Use catchIO in 'restart' Spencer Janssen <sjanssen@cse.unl.edu>**20070611161152] [Rename safeIO to catchIO Spencer Janssen <sjanssen@cse.unl.edu>**20070611160608] [add safeIO which catches and logs exceptions. David Roundy <droundy@darcs.net>**20070611153650] [Ensure windows get at least 1 pixel for width/height Spencer Janssen <sjanssen@cse.unl.edu>**20070611061930] [Restrict the master/slave ratio to [0, 1] Spencer Janssen <sjanssen@cse.unl.edu>**20070611053230] [comment only Jason Creighton <jcreigh@gmail.com>**20070611020249] [a few modifications to event-sending to make Tabbed layout work. David Roundy <droundy@darcs.net>**20070610153836] [send message when "windows" is called. David Roundy <droundy@darcs.net>**20070610013531] [implement Spencer's decoration suggestion. David Roundy <droundy@darcs.net>**20070610012237] [haddock compatibility Andrea Rossato <andrea.rossato@unibz.it>**20070610123746] [Move state logging into Config.hs, via logHook :: X () Don Stewart <dons@cse.unsw.edu.au>**20070610061932] [polish serialisation code (-7 lines) Don Stewart <dons@cse.unsw.edu.au>**20070610045551] [cut incorrect comment. David Roundy <droundy@darcs.net>**20070609173447] [doLayout cleanup and commented exception-handling. David Roundy <droundy@darcs.net>**20070609145036] [Give refresh sole responsibility for establishing window properties (-3 loc) Stefan O'Rear <stefanor@cox.net>*-20070609185835] [Give refresh sole responsibility for establishing window properties (-3 loc) Stefan O'Rear <stefanor@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@cse.unsw.edu.au>**20070609131716] [Add notes on using X11-extras from darcs Don Stewart <dons@cse.unsw.edu.au>**20070609025045] [Fix unmap handling Spencer Janssen <sjanssen@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@cse.unsw.edu.au>**20070606025226] [move extraModifiers/cleanMask to Operations.hs Jason Creighton <jcreigh@gmail.com>**20070606005056 so XMonadContrib can use them ] [temporary workaround for delete/focus issue in fullscreen mode Don Stewart <dons@cse.unsw.edu.au>**20070606024938] [whitespace Don Stewart <dons@cse.unsw.edu.au>**20070606024857] [simplify code Don Stewart <dons@cse.unsw.edu.au>**20070606004603] [mention why StackSet needs -fglasgow-exts (for deriving Typeable) Don Stewart <dons@cse.unsw.edu.au>**20070605092659] [comments only Don Stewart <dons@cse.unsw.edu.au>**20070605091803] [clean size hint code Don Stewart <dons@cse.unsw.edu.au>**20070605091354] [Enable logging of state changes to stdout Don Stewart <dons@cse.unsw.edu.au>**20070605083735] [remove accidental logging of events Don Stewart <dons@cse.unsw.edu.au>**20070605081452] [Fix lost eventNotifyMask bug Don Stewart <dons@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@cse.unsw.edu.au>**20070605000723] [Comment only Spencer Janssen <sjanssen@cse.unl.edu>**20070604211956] [Wibble. Spencer Janssen <sjanssen@cse.unl.edu>**20070604211816] [-Wall police Spencer Janssen <sjanssen@cse.unl.edu>**20070604211531] [apply size hints to floating windows Peter De Wachter <pdewacht@gmail.com>**20070604192943] [size hints infrastructure Peter De Wachter <pdewacht@gmail.com>**20070604192753] [Delete stale comment Spencer Janssen <sjanssen@cse.unl.edu>**20070604204617] [Comment only Spencer Janssen <sjanssen@cse.unl.edu>**20070604203659] [Use 'windows' in 'focus' Spencer Janssen <sjanssen@cse.unl.edu>**20070604201639] [realign guard l.mai@web.de**20070604182045] [swapUp/Down are also mirrored Spencer Janssen <sjanssen@cse.unl.edu>**20070604183535] [Remove redundant cases in swapUp/Down Spencer Janssen <sjanssen@cse.unl.edu>**20070604183344] [focusUp/Down are the same, in reversed order Spencer Janssen <sjanssen@cse.unl.edu>**20070604183143] [Simplify focusUp/Down Spencer Janssen <sjanssen@cse.unl.edu>**20070604182228] [Integral implies Eq Spencer Janssen <sjanssen@cse.unl.edu>**20070604180745] [Comment typo. Spencer Janssen <sjanssen@cse.unl.edu>**20070604180554] [Dump state at launch (commented for now) Spencer Janssen <sjanssen@cse.unl.edu>**20070604162450] [Small clean up Spencer Janssen <sjanssen@cse.unl.edu>**20070604064418] [Merge windows and refresh Spencer Janssen <sjanssen@cse.unl.edu>**20070604063657] [Use the new integrate function Spencer Janssen <sjanssen@cse.unl.edu>**20070604062653] [Add integrate Spencer Janssen <sjanssen@cse.unl.edu>**20070604062501] [Delete stale comments Spencer Janssen <sjanssen@cse.unl.edu>**20070604061719] [Remove inaccurate warnings about 'hide' Spencer Janssen <sjanssen@cse.unl.edu>**20070604060611] [base >= 2.0 means we can use forM_ Spencer Janssen <sjanssen@cse.unl.edu>**20070604050914] [Remove no-longer-needed 'dimensions' state (-5 loc) Stefan O'Rear <stefanor@cox.net>**20070604044715] [Set WM_STATE, iconify invisible windows (+9 loc) Stefan O'Rear <stefanor@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@cse.unsw.edu.au>**20070604035637] [whitespace Don Stewart <dons@cse.unsw.edu.au>**20070604015532] [-Wall Don Stewart <dons@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@cox.net>**20070604013938] [Honor configure requests from unmanaged windows Spencer Janssen <sjanssen@cse.unl.edu>**20070603234730] [-Wall police Spencer Janssen <sjanssen@cse.unl.edu>**20070603212055] [Correctly handle resize requests (-12 +22) Stefan O'Rear <stefanor@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@cse.unsw.edu.au>**20070603071556] [Polish core layout code. Lifts limitation on nmaster > 1. it may be 0 now Don Stewart <dons@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@cse.unsw.edu.au>**20070603054740] [set build-depends base>=2.0 so people can't miss the missing Read instance issue Don Stewart <dons@cse.unsw.edu.au>**20070603032319] [Fix out-of-date comment in Config.hs. Chris Mears <chris@cmears.id.au>**20070602114312] [only grab button{1,2,3} for click-to-focus (scrollwheel shouldn't focus) Jason Creighton <jcreigh@gmail.com>**20070602052605] [make mouse bindings configurable Jason Creighton <jcreigh@gmail.com>**20070602040647] [commented out implementation state logging. if someone has a client, we can enable this Don Stewart <dons@cse.unsw.edu.au>**20070601085626] [ignore numlock/capslock on mouse bindings Jason Creighton <jcreigh@gmail.com>**20070601015137] [now we handle transients properly, and restack windows, refresh from focus is ok Don Stewart <dons@cse.unsw.edu.au>**20070601022329] [Rename withWorkspace to withWindowSet. glasser@mit.edu**20070601001325] [Revert accidental change to border color Spencer Janssen <sjanssen@cse.unl.edu>**20070531145509] [comments on why fullscreen tiling doesn't work with `implicit' floating Don Stewart <dons@cse.unsw.edu.au>**20070531090537] [clean up mouse code a bit Don Stewart <dons@cse.unsw.edu.au>**20070531085308] [first shot at a floating layer Jason Creighton <jcreigh@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@gmail.com>**20070531043417] [TAG 0.2 Spencer Janssen <sjanssen@cse.unl.edu>**20070531010004] Patch bundle hash: 3541c8c3e064584ebdacb670648dbe51799e7037 New patches: [Docstring parser for generating xmonad build configs with default settings for extensions Alex Tarkovsky <alextarkovsky@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 +#!/bin/bash + +# generate-configs.sh - Docstring parser for generating xmonad build configs +# with default settings for extensions +# Author: Alex Tarkovsky <alextarkovsky@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 +fi + +REPO_DIR_BASE="." + +CABAL_FILE_BASE="${REPO_DIR_BASE}/xmonad.cabal" +CABAL_FILE_CONTRIB="${1}/xmonad.cabal" + +CONFIG_FILE_BASE="${REPO_DIR_BASE}/Config.hs" +CONFIG_FILE_CONTRIB="${1}/Config.hs" + +# Markup tag to search for in source files. +TAG_CABALBUILDDEP="%cabalbuilddep" +TAG_DEF="%def" +TAG_IMPORT="%import" +TAG_KEYBIND="%keybind" +TAG_KEYBINDLIST="%keybindlist" +TAG_LAYOUT="%layout" +TAG_MOUSEBIND="%mousebind" + +# Insert markers to search for in Config.sh and xmonad.cabal. Values are +# extended sed regular expressions. +INS_MARKER_CABALBUILDDEP='^build-depends:.*' +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_CABALBUILDDEP="" +INS_INDENT_DEF="" +INS_INDENT_IMPORT="" +INS_INDENT_KEYBIND=" " +INS_INDENT_KEYBINDLIST=" " +INS_INDENT_LAYOUT=" " +INS_INDENT_MOUSEBIND=" " + +# Prefix applied to inserted values after indent strings have been applied. +INS_PREFIX_CABALBUILDDEP=", " +INS_PREFIX_DEF="-- " +INS_PREFIX_IMPORT="--import " +INS_PREFIX_KEYBIND="-- " +INS_PREFIX_KEYBINDLIST="-- " +INS_PREFIX_LAYOUT="-- " +INS_PREFIX_MOUSEBIND="-- " + +cp -f "${CABAL_FILE_BASE}" "${CABAL_FILE_CONTRIB}" +cp -f "${CONFIG_FILE_BASE}" "${CONFIG_FILE_CONTRIB}" + +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 + $TAG_CABALBUILDDEP) ins_indent=$INS_INDENT_CABALBUILDDEP + 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 + ;; + $TAG_KEYBINDLIST) ins_indent=$INS_INDENT_KEYBINDLIST + 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 +done } Context: [Decoration: don't crash when given a non-existent font Andrea Rossato <andrea.rossato@unibz.it>**20070810182433] [actually use the selected font in XPrompt. David Roundy <droundy@darcs.net>**20070810174543] [increase default contrast in XPrompt. David Roundy <droundy@darcs.net>**20070810174724] [center prompt text in window. David Roundy <droundy@darcs.net>**20070810173746] [don't crash when given a non-existent font in XPrompt. David Roundy <droundy@darcs.net>**20070810170445] [Add ViewPrev to MetaModule Spencer Janssen <sjanssen@cse.unl.edu>**20070810211242] [ViewPrev.hs nelhage@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@darcs.net>**20070801144543] [SshPrompt now uses RunInXTerm to launch the command Andrea Rossato <andrea.rossato@unibz.it>**20070807101911] [RunInXTerm: a simple module to run commands in an X terminal Andrea Rossato <andrea.rossato@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@unibz.it>**20070805225906] [LayoutScreen: haddock cleanup Andrea Rossato <andrea.rossato@unibz.it>**20070805215800] [XPrompt.hs: getCompletion should check for completions of the last word of the command line Andrea Rossato <andrea.rossato@unibz.it>**20070805124130] [work around Magnifier's problems with floating windows Peter De Wachter <pdewacht@gmail.com>**20070805141051] [Add Roledex to MetaModule Spencer Janssen <sjanssen@cse.unl.edu>**20070806151628] [XPrompt.hs: read history lazily Andrea Rossato <andrea.rossato@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@unibz.it>**20070804183252] [weird formatting fixed Don Stewart <dons@cse.unsw.edu.au>**20070806032739] [rolodex tim.thelion@gmail.com**20070804235730 Cascading windows... ] [XPrompt.hs: haddock corrections and some comments Andrea Rossato <andrea.rossato@unibz.it>**20070804104622] [XMonadPrompt.hs: minor haddock corrections Andrea Rossato <andrea.rossato@unibz.it>**20070804104534] [SwitchTrans.hs: minor haddock corrections Andrea Rossato <andrea.rossato@unibz.it>**20070804104458] [SshPrompt.hs: minor haddock corrections Andrea Rossato <andrea.rossato@unibz.it>**20070804104441] [ShellPrompt.hs: minor haddock corrections Andrea Rossato <andrea.rossato@unibz.it>**20070804104408] [FlexibleManipulate.hs: minor haddock corrections Andrea Rossato <andrea.rossato@unibz.it>**20070804104330] [MetaModule: added XPrompt and others Andrea Rossato <andrea.rossato@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@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@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@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@cse.unl.edu>**20070803160424] [Rename 'setCompletionList' to 'refreshCompletionList' Spencer Janssen <sjanssen@cse.unl.edu>**20070803155942] [XPrompt: added comletion and history support Andrea Rossato <andrea.rossato@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@unibz.it>**20070803130158] [Make the XPrompt appear on the current screen Spencer Janssen <sjanssen@cse.unl.edu>**20070802184231] [XPrompt: a module for easily writing graphical prompts Andrea Rossato <andrea.rossato@unibz.it>**20070802171552] [ XMonadPrompt: a graphical prompt for running XMonad internal commands Andrea Rossato <andrea.rossato@unibz.it>**20070802165336] [SshPrompt: a graphical prompt for ssh connection Andrea Rossato <andrea.rossato@unibz.it>**20070802155943] [ShellPrompt: a graphical shell prompt Andrea Rossato <andrea.rossato@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@gmail.com**20070802144042] [MetaModule.hs: add FocusNth. joachim.fasting@gmail.com**20070802144023] [Add ThreeColumns to MetaModule Spencer Janssen <sjanssen@cse.unl.edu>**20070802143356] [Add RotSlaves to MetaModule Spencer Janssen <sjanssen@cse.unl.edu>**20070802143334] [RotSlaves Hans Philipp Annen <haphi@gmx.net>**20070802094408] [DeManage.hs: haddock compatibility. joachim.fasting@gmail.com**20070725100910] [Fix warnings in FlexibleManipulate (Sorry!) Michael G. Sloan <mgsloan@gmail.com>**20070729032407] [Add FlexibleManipulate extension Michael G. Sloan <mgsloan@gmail.com>**20070729031402] [Commands: refactoring to include in MetaModule Andrea Rossato <andrea.rossato@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@web.de**20070728153826] [fix WorkspaceDir (which was broken) using LayoutHelpers. David Roundy <droundy@darcs.net>**20070726133520] [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] [add FlexibleResize to MetaModule l.mai@web.de**20070708130229] [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. ] [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] [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. ] [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] [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: 0388707f8851e306f2a78ea8c288c617b6e4c3f2