[xmonad] XMonad.Actions.Plane

Malebria malebria at riseup.net
Thu May 22 20:48:09 EDT 2008


Hello there.

My sendmail is not configured, so I'm ataching the patch file.

Thanks.

-- 
Malebria
http://malebria.wordpress.com/
http://marcotmarcot.googlepages.com/
Correio eletrônico: malebria at riseup.net
XMPP: malebria at jabber.org
MSN: marcotmarcot at gmail.com
Telefone: 25151920
Celular: 98116720
Endereço:
 Rua Turfa, 639/701 Prado 30410-370
 Belo Horizonte/MG Brasil
-------------- next part --------------

New patches:

[Add XMonad.Actions.Plane
Malebria <malebria at riseup.net>**20080523004357] {
addfile ./XMonad/Actions/Plane.hs
hunk ./XMonad/Actions/Plane.hs 1
+-----------------------------------------------------------------------------
+-- |
+-- Module      :  XMonad.Actions.Plane
+-- Copyright   :  (c) Malebria <malebria at riseup.net>,
+-- License     :  BSD3-style (see LICENSE)
+--
+-- Maintainer  :  Malebria <malebria at riseup.net>
+-- Stability   :  unstable
+-- Portability :  unportable
+--
+-- This module has functions to navigate through workspaces in a bidimensional
+-- manner.  It allows the organization of workspaces in columns, and provides
+-- functions to move and shift windows in all four directions (left, up, right
+-- and down) possible in a surface.
+--
+-- This functionality was inspired by GNOME (finite) and KDE (infinite)
+-- keybindings for workspace navigation, and by "XMonad.Actions.CycleWS" for
+-- the idea of applying this approach to XMonad.
+-----------------------------------------------------------------------------
+
+module XMonad.Actions.Plane
+    (
+    -- * Usage
+    -- $usage
+
+    -- * Data types
+    Direction (..)
+    , Limits (..)
+
+    -- * Navigating through workspaces
+    -- $navigating
+    , planeShift
+    , planeMove
+    )
+    where
+
+import Control.Monad
+import Data.List hiding (union)
+import Data.Maybe
+
+import XMonad
+import XMonad.StackSet hiding (workspaces)
+
+-- $usage
+-- You can use this module with the following in your @~\/.xmonad\/xmonad.hs@ file:
+--
+-- > import XMonad.Actions.Plane
+-- >
+-- > main = xmonad defaultConfig {keys = myKeys}
+-- >
+-- > myKeys conf = union (keys defaultConfig conf) $ myNewKeys conf
+-- >
+-- > myNewkeys (XConfig {modMask = m}) =
+-- >     fromList
+-- >     [ ((keyMask .|. m, keySym), function 3 Finite direction)
+-- >     | (keySym, direction) <- zip [xK_Left .. xK_Down] $ enumFrom ToLeft
+-- >     , (keyMask, function) <- [(0, planeMove), (shiftMask, planeShift)]
+-- >     ]
+--
+-- For detailed instructions on editing your key bindings, see
+-- "XMonad.Doc.Extending#Editing_key_bindings".
+
+-- | Direction to go in the plane.
+data Direction =  ToLeft | ToUp | ToRight | ToDown deriving Enum
+
+-- | Defines whether it's a finite or a circular organization of workspaces.
+data Limits
+    = Finite   -- ^ When you're at a edge of the plane, there's no way to move
+               -- to the next region.
+    | Circular -- ^ If you try to move, you'll get to the other edge, on the
+               -- other side.
+    deriving Eq
+
+-- $navigating
+--
+-- There're two parameters that must be provided to navigate, and it's a good
+-- idea to use them with the same values in each keybinding.
+--
+-- The first is the number of columns in which the workspaces are going to be
+-- organized.  It's possible to use a number of columns that is not a divisor
+-- of the number of workspaces, but the results are better when using a
+-- divisor.  If it's not a divisor, the last line will have the remaining
+-- workspaces.
+--
+-- The other one is 'Limits'.
+
+-- | Shift a window to the next workspace in 'Direction'.  Note that this will
+-- also move to the next workspace.
+planeShift
+    :: Int  -- ^ Number of columns.
+    -> Limits
+    -> Direction
+    -> X ()
+planeShift = plane shift'
+
+shift' ::
+    (Eq s, Eq i, Ord a) => i -> StackSet i l a s sd -> StackSet i l a s sd
+shift' area = greedyView area . shift area
+
+-- | Move to the next workspace in 'Direction'.
+planeMove
+    :: Int  -- ^ Number of columns.
+    -> Limits
+    -> Direction
+    -> X ()
+planeMove = plane greedyView
+
+plane ::
+    (WorkspaceId -> WindowSet -> WindowSet) -> Int -> Limits -> Direction ->
+    X ()
+plane function columns limits direction = do
+    state <- get
+    xconf <- ask
+    let vertical f =
+            if mod currentWS columns >= mod areas columns
+                then mod (f currentWS columns) $ div areas columns * columns
+                else mod (f currentWS columns) $ ((div areas columns + 1) * columns)
+        horizontal f = mod (f currentWS) columns + line * columns
+        line = div currentWS columns
+        column = mod currentWS columns
+        currentWS = fromJust mCurrentWS
+        mCurrentWS = elemIndex (currentTag $ windowset state) areaNames
+        run condition position =
+            when (limits == Circular || condition) $
+            windows $ function $ areaNames !! position
+        areas = length areaNames
+        areaNames = workspaces $ config $ xconf
+
+    when (isJust mCurrentWS) $
+        case direction of
+            ToUp    -> run (line   /= 0                ) $ vertical (-)
+            ToDown  -> run (currentWS + columns < areas) $ vertical (+)
+            ToLeft  -> run (column /= 0                ) $ horizontal pred
+            ToRight -> run (column /= columns - 1      ) $ horizontal succ
hunk ./xmonad-contrib.cabal 88
+                        XMonad.Actions.Plane
}

Context:

[Default Xfce config, this time with me holding the copyright, maintainership, etc.
Ivan.Miljenovic at gmail.com**20080522105316] 
[StackTile: minor documentation fix
Joachim Fasting <joachim.fasting at gmail.com>**20080521182637
 That '[]' in the example seems incorrect
] 
[StackTile
acura at allyourbase.se**20080520195559
 
 A simple patch to get a dishes like stacking, but with the ability to resize master pane.
] 
[revamp Search.hs to export a replacement for simpleEngine
gwern0 at gmail.com**20080519190912
 It's called searchEngine now, and is a wrapper around the SearchEngine type. Different type as well
] 
[sp ShowWName.hs
gwern0 at gmail.com**20080519190520] 
[remove ScratchWorkspace.
David Roundy <droundy at darcs.net>**20080516185729
 It's ugly code, and I'd be surprised if anyone actually uses it.  I see no
 reason to continue to maintain it.
] 
[Fixed location of xmonad.conf
Roman Cheplyaka <roma at ro-che.info>**20080518204602] 
[add site name in search prompt dialog
zhen.sydow at gmail.com**20080518101357] 
[add youtube to search engines
zhen.sydow at gmail.com**20080513212508] 
[SwapWorkspaces: swapTo Next|Prev
Devin Mullins <me at twifkak.com>**20080518024121] 
[UrgencyHook: removeVisiblesFromUrgents -> cleanupUrgents
Devin Mullins <me at twifkak.com>**20080515164436
 Now only removes windows based on SuppressWhen setting.
] 
[Added XMonad.Config.PlainConfig: proof-of-concept GHC-less plain text configuration file parser
Braden Shepherdson <Braden.Shepherdson at gmail.com>**20080517222916
 
 An example of the config file format can be found in the Haddock.
 Notably missing features are docks and more layouts than just the standard three.
] 
[XMonad.Hooks.SetWMName: Update documentation to reflect the addition of startupHook.
lithis <xmonad at selg.hethrael.org>**20080516221011] 
[I no longer use ScratchWorkspace.
David Roundy <droundy at darcs.net>**20080516185715] 
[fix bug in smartBorders when combined with decorated windows.
David Roundy <droundy at darcs.net>**20080516184855] 
[decent documentation for UrgencyHook
Devin Mullins <me at twifkak.com>**20080515082222
 Blame it on lack of sleep. Or perhaps the causation is the reverse.
] 
[X.A.WindowNavigation: currentPosition and setPosition share the same `inside` logic, now
Devin Mullins <me at twifkak.com>**20080515062211
 Aside from documentation, this is pretty much usable, now.
] 
[X.A.WindowNavigation: have currentPosition handle axes independently
Devin Mullins <me at twifkak.com>**20080515053330
 This improves some subtle interactions between mod-j/k and mod-w/a/s/d, though
 that might not become very apparent until I fix setPosition.
] 
[fix compile warnings in BoringWindows
Devin Mullins <me at twifkak.com>**20080515051728] 
[add BoringWindows module to make certain windows skipped when rotating focus.
David Roundy <droundy at darcs.net>**20080514162846] 
[UrgencyHook: some documentation (more is needed)
Devin Mullins <me at twifkak.com>**20080514080104] 
[UrgencyHook: got rid of the need for instances to know about suppressWhen
Devin Mullins <me at twifkak.com>**20080514072217
 This changes the API a little bit, but that's what you get for using a day-old feature from darcs.
] 
[move AppLauncher from Actions module to Prompt module
zhen.sydow at gmail.com**20080513201252] 
[X.A.WindowNavigation: comment cleanup
Devin Mullins <me at twifkak.com>**20080513091313] 
[windowRect now compensates for border width
Devin Mullins <me at twifkak.com>**20080513090151
 Odd that I have to do (Rectangle x y (w + 2 * bw) (h + 2 * bw)) -- you'd think
 the window would be centered within the bordered area.
] 
[X.A.WindowNavigation: update TODO
Devin Mullins <me at twifkak.com>**20080513044229] 
[X.A.WindowNavigation: minor cleanup
Devin Mullins <me at twifkak.com>**20080512170410] 
[X.A.WindowNavigation: simplify inr somewhat
Devin Mullins <me at twifkak.com>**20080512090647] 
[X.A.WindowNavigation: clarity
Devin Mullins <me at twifkak.com>**20080512085338] 
[X.A.WindowNavigation: ugh, typo
Devin Mullins <me at twifkak.com>**20080512082228] 
[X.A.WindowNavigation: implement swap, extract withTargetWindow commonality
Devin Mullins <me at twifkak.com>**20080512064715
 Why doesn't mapWindows exist already?
] 
[add more flexible withWindowNavigationKeys
Devin Mullins <me at twifkak.com>**20080512050637
 Names aren't permanent yet, so don't cry if they change.
] 
[X.A.WindowNavigation: TODO
Devin Mullins <me at twifkak.com>**20080511222116] 
[X.A.WindowNavigation: add withWindowNavigation, for easy setup
Devin Mullins <me at twifkak.com>**20080511220458
 This should be more flexible than it is -- I've got an idea, but am interested to hear others.
] 
[X.A.WindowNavigation: fix currentPosition
Devin Mullins <me at twifkak.com>**20080511212128
 Now properly deals with an unitialized state (e.g. from a restart) or an
 inconsistent state (e.g. from using mod-j/k). Deserves cleanup.
] 
[X.A.WindowNavigation: add TODOs
Devin Mullins <me at twifkak.com>**20080511211326] 
[X.A.WindowNavigation state is now workspace-specific
Devin Mullins <me at twifkak.com>**20080511071656
 racking up some code debt, here...
] 
[X.A.WindowNavigation: minor doco changes
Devin Mullins <me at twifkak.com>**20080506074235] 
[add draft XMonad.Actions.WindowNavigation
Devin Mullins <me at twifkak.com>**20080504050022
 This is an experiment with replacing the WindowNavigation LayoutModifier with
 one that simply adds keybindings and stores state in an IORef. Credit to
 droundy for the original code -- hopefully I'm not butchering it. The end
 intent is to add Xinerama support, but it'll be a little while before I get
 there.
] 
[new contrib module to launch apps with command line parameters
zhen.sydow at gmail.com**20080513134754] 
[pull suppressWhen logic into main WithUrgencyHook handler
Devin Mullins <me at twifkak.com>**20080513075247
 In order for this to work, I added a new UrgencyHook method to communicate the
 SuppressWhen value. I'm not sure if this is actually better than just providing
 a convenience function, but it's an easy switch.
] 
[add suppressWhen option to dzenUrgencyHook
Devin Mullins <me at twifkak.com>**20080513054615] 
[WindowNavigation: extract navigable function
Devin Mullins <me at twifkak.com>**20080422045248] 
[UrgencyHook: doc typo
Devin Mullins <me at twifkak.com>**20080512052137] 
[UrgencyHook: extract whenNotVisible
Devin Mullins <me at twifkak.com>**20080512041852] 
[SpawnUrgencyHook, FWIW
Devin Mullins <me at twifkak.com>**20080512040449] 
[make UrgencyHook an EventHook
Devin Mullins <me at twifkak.com>**20080512024822
 This gets rid of the stupid bug that led to a need for the clearBit hack, and
 allowed me to simplify the types (since EventHooks aren't required to
 parameterize on the window type). Config files need not change, unless they
 declare instances of UrgencyHook, in which case, they should remove "Window" as
 is seen in this patch.
 
] 
['xmobar' function added to DynamicLog for running xmobar with some defaults
Ivan N. Veselov <veselov at gmail.com>**20080508194918] 
[HintedTile: Fix mistake in documentation.
lithis <xmonad at selg.hethrael.org>**20080508003552] 
[Use gnome-session-save for the mod-shift-q binding
Spencer Janssen <sjanssen at cse.unl.edu>**20080507082205] 
[Use the named constant 'none' rather than 0
Spencer Janssen <sjanssen at cse.unl.edu>**20080507081854] 
[HintedTile: Improve documentation.
lithis <xmonad at selg.hethrael.org>**20080508000245] 
[Whitespace only
Spencer Janssen <sjanssen at cse.unl.edu>**20080507031306] 
[Add a binding for Gnome's "Run Application" dialog
Spencer Janssen <sjanssen at cse.unl.edu>**20080507031127] 
[Add some keybindings to the Kde config
Spencer Janssen <sjanssen at cse.unl.edu>**20080507022658] 
[Indentation
Spencer Janssen <sjanssen at cse.unl.edu>**20080507022553] 
[Add ToggleStruts to the desktop config
Spencer Janssen <sjanssen at cse.unl.edu>**20080507022516] 
[Refactor my config
Spencer Janssen <sjanssen at cse.unl.edu>**20080507021504] 
[Add XMonad.Config.Kde
Spencer Janssen <sjanssen at cse.unl.edu>**20080507020833] 
[Don't move the pointer if the user is moving the mouse
Klaus Weidner <kweidner at pobox.com>**20080417022234
 
 This patch depends on the following xmonad core patch:
 
   Remember if focus changes were caused by mouse actions or by key commands
 
 If the user was moving the mouse, it's not appropriate to move the pointer
 around in resonse to focus changes. Do that only in response to keyboard
 commands.
] 
[Missing pragmas
Don Stewart <dons at galois.com>**20080506053402] 
[Add full documentation
Don Stewart <dons at galois.com>**20080505210546] 
[minor cleanup on getName
Devin Mullins <me at twifkak.com>**20080504054923] 
[bug doco for UrgencyHook
Devin Mullins <me at twifkak.com>**20080426203638] 
[NamedWindows: when converting the text property, handle the empty list.
Spencer Janssen <sjanssen at cse.unl.edu>**20080502104249
 This fixes a "Prelude.head" exception observed with windows that have no title.
 Reproduce by placing several windows in the tabbed layout, then starting
 'xterm -name ""'.  Thanks to Andrea for pointing out the issue.
] 
[Fix issue #179 by handling events correctly
Andrea Rossato <andrea.rossato at unibz.it>**20080501062357] 
[My monitor is larger now :)
Spencer Janssen <sjanssen at cse.unl.edu>**20080430083026] 
[manageHooks for my config
Spencer Janssen <sjanssen at cse.unl.edu>**20080430082536] 
[Remove redundant type signature
Spencer Janssen <sjanssen at cse.unl.edu>**20080430082447] 
[Add XMonad.Config.Desktop and XMonad.Config.Gnome
Spencer Janssen <sjanssen at cse.unl.edu>**20080430082253] 
[Alphabetize exposed-modules
Spencer Janssen <sjanssen at cse.unl.edu>**20080430035453] 
[new contrib layout: XMonad.Layout.SimplestFloat - A floating layout like SimpleFloat, but without decoration
joamaki at gmail.com**20080424220957] 
[stricitfy some gap fields
Don Stewart <dons at galois.com>**20080427191247] 
[XMonad.Hooks.ManageHelpers: quick&dirty support for _NET_WM_STATE_FULLSCREEN
Lukas Mai <l.mai at web.de>**20080426132745] 
[XMonad.Hooks.Script: haddock fixes
Lukas Mai <l.mai at web.de>**20080426132629] 
[Error fix for Tabbed when tabbar always shown
Ivan.Miljenovic at gmail.com**20080424063135] 
[remove my config file -- the wiki is where its at.
Don Stewart <dons at galois.com>**20080419195650] 
[tweaks to docs for SimpleDecoration
Don Stewart <dons at galois.com>**20080418215155] 
[Allow tabbar to always be shown.
Ivan.Miljenovic at gmail.com**20080415043728
 Patch take 4, hopefully the final version.  Includes droundy's suggestions.
] 
[polish
Don Stewart <dons at galois.com>**20080418033133] 
[Script-based hooks
Trevor Elliott <trevor at galois.com>**20080416213024] 
[Don't strictify the Display component, this triggers a bug in GHC 6.6
Spencer Janssen <sjanssen at cse.unl.edu>**20080416185733] 
[Fix to IM modifier.
Roman Cheplyaka <roma at ro-che.info>**20080414232437
 Avoid differentiating integrated stack by using StackSet.filter.
] 
[IM layout converted to LayoutModifier, which can be applied to any layout
Ivan N. Veselov <veselov at gmail.com>**20080413205824] 
[stictify some fields
Don Stewart <dons at galois.com>**20080413070117] 
[strictify some fields
Don Stewart <dons at galois.com>**20080413065958] 
[Fix window order in EWMH
Joachim Breitner <mail at joachim-breitner.de>**20080411134411
 For pagers to draw the stacking order correctly, the focused window has to
 be the last in the list. Thus put an appropriate implementation of allWindows
 into the Module.
 This does not work perfectly with floating windows.
] 
[remove myself as maintainer of CopyWindow.
David Roundy <droundy at darcs.net>**20080409144333
 I'm not sure who's maintaining this, but it's not me.
] 
[XMonad.Util.WindowProperties: add WM_WINDOW_ROLE as Role
Roman Cheplyaka <roma at ro-che.info>**20080409174935] 
[Generalize copyWindow, minor style change
Spencer Janssen <sjanssen at cse.unl.edu>**20080408210050] 
[XMonad.Actions.CopyWindow: added copyToAll and killAllOtherCopies functions
Ivan N. Veselov <veselov at gmail.com>**20080408195111] 
[XMonad.Actions.UpdatePointer: doc fix
Lukas Mai <l.mai at web.de>**20080407152741] 
[XMonad.Util.Font: minor reformatting
Lukas Mai <l.mai at web.de>**20080406020935] 
[DynamicLog: resolve merge conflict
Lukas Mai <l.mai at web.de>**20080406020527] 
[Encode the entire DynamicLog output, instead of just window title.
lithis <xmonad at selg.hethrael.org>**20080329031537] 
[DynamicLog: add support for UTF-8 locales when compiled with XFT or UFT-8 support
Andrea Rossato <andrea.rossato at unibz.it>**20080313102643] 
[XMonad.Util.Font: don't call setlocale; core does it for us
Lukas Mai <l.mai at web.de>**20080406013123] 
[XMonad.Util.NamedWindows: fix imports
Lukas Mai <l.mai at web.de>**20080326172745] 
[Changed getName to use locale-aware functions
Mats Jansborg <mats at jansb.org>**20070819132104
 Rewrote getName using getTextProperty and wcTextPropertyToTextList.
] 
[Added next-window versions of the raise* functions.
Ian Zerny <ian at zerny.dk>**20080405182900] 
[XMonad.Layout.Master: initial import
Lukas Mai <l.mai at web.de>**20080404220734] 
[update contrib for applySizeHints changes
Lukas Mai <l.mai at web.de>**20080404220558] 
[XMonad.Hooks.ManageDocks: haddock fix
Lukas Mai <l.mai at web.de>**20080404220532] 
[MultiToggle/Instances: ghc 6.6 can't parse LANGUAGE pragma
Brent Yorgey <byorgey at gmail.com>**20080404200157] 
[Document _NET_ACTIVE_WINDOW behaviour more exactly
Joachim Breitner <mail at joachim-breitner.de>**20080404072944] 
[_NET_ACTIVE_WINDOW moves windows if necessary
Joachim Breitner <mail at joachim-breitner.de>*-20080402143811
 This makes EWMH behave a bit more like metacity: If _NET_ACTIVE_WINDOW is
 received and the window is not on the current worspace, it is brought here 
 (instead of the workspace switched to the other one). So for example, if you
 click on the pidgin icon in the panel and the buddy list is already open some
 where it is moved here.
] 
[onstart=lower, solves floating dzen issue
Don Stewart <dons at galois.com>**20080403203425] 
[some bang patterns
Don Stewart <dons at galois.com>**20080403172246] 
[have 'dzen' use autoStruts to detect the gaps
Don Stewart <dons at galois.com>**20080403003130] 
[Actions/Search.hs: add dictionary.com search
Brent Yorgey <byorgey at gmail.com>**20080402150521] 
[_NET_ACTIVE_WINDOW moves windows if necessary
Joachim Breitner <mail at joachim-breitner.de>**20080402143811
 This makes EWMH behave a bit more like metacity: If _NET_ACTIVE_WINDOW is
 received and the window is not on the current worspace, it is brought here 
 (instead of the workspace switched to the other one). So for example, if you
 click on the pidgin icon in the panel and the buddy list is already open some
 where it is moved here.
] 
[HintedGrid: guesstimate window flexibility and layout rigid windows first
Lukas Mai <l.mai at web.de>**20080402042846] 
[HintedGrid: try both bottom-up/top-down window placement to minimize unused space
Lukas Mai <l.mai at web.de>**20080402012538] 
[Grid/HintedGrid: use an ncolumns formula inspired by dwm's "optimal" mode
Lukas Mai <l.mai at web.de>**20080402012126] 
[XMonad.Layout.Gaps: new contrib module for manual gap support, in the few cases where ManageDocks is not appropriate (dock apps that don't set STRUTS properly, adjusting for a display that is cut off on one edge, etc.)
Brent Yorgey <byorgey at gmail.com>**20080402003742] 
[improve WindowGo.hs Haddock formatting
gwern0 at gmail.com**20080401023130] 
[forgot a haddock for getEditor in Shell.hs
gwern0 at gmail.com**20080401022012] 
[WindowGo.hs: +raiseBrowser, raiseEditor
gwern0 at gmail.com**20080401021740
 Specialize runOrRaise in the same way as with Actions.Search, for one's browser and one's editors.
] 
[RunOrRaise.hs: FF 3 doesn't use the "Firefox-bin" classname
gwern0 at gmail.com**20080401015049] 
[Search.hs: remove an argument from selectSearch and promptSearch
gwern0 at gmail.com**20080401013947
 The new getBrowser function allows us to mv the old selectSearch and promptSearch aside as too-general functions, and replace them with new versions, which employ getBrowser to supply one more argument. This allows us to replace the tedious 'selectSearch google "firefox"; selectSearch yahoo "firefox"...' with shorter 'selectSearch google' and so on. One less argument.
 
 Also, update the docs.
] 
[Shell.hs: +getBrowser, getEditor, helper function
gwern0 at gmail.com**20080401013447
 The helper function asks the shell for the value of a variable, else returns the second argument.
 getBrowser and getEditor obviously specialize it for two particular possibly queries
] 
[XMonad.Layout.HintedGrid: initial import
Lukas Mai <l.mai at web.de>**20080401231722] 
[Documentation improvement.
Roman Cheplyaka <roma at ro-che.info>**20080401134305] 
[Remove broken link to screenshot.
Roman Cheplyaka <roma at ro-che.info>**20080331210854] 
[MultiToggle: add new XMonad.Layout.MultiToggle.Instances module for common instances of Transformer, update MultiToggle docs accordingly
Brent Yorgey <byorgey at gmail.com>**20080331201739] 
[XMonad.Actions.CycleRecentWS: initial import
Michal Janeczek <janeczek at gmail.com>**20080331111906] 
[XMonad.Hooks.ManageDocks: export checkDoc
Lukas Mai <l.mai at web.de>**20080331012911] 
[XMonad.Layout.Grid: fix indentation
Lukas Mai <l.mai at web.de>**20080330004859] 
[move Direction type from WindowNavigation to ManageDocks (ManageDocks will move into the core, taking Direction with it)
Brent Yorgey <byorgey at gmail.com>**20080331010127] 
[ManageDocks: clean up + add more documentation
Brent Yorgey <byorgey at gmail.com>**20080331002929] 
[Util.Run, Hooks.DynamicLog: re-export hPutStrLn and hPutStr from Util.Run for convenience, and update DynamicLog documentation to show proper imports
Brent Yorgey <byorgey at gmail.com>**20080328205446] 
[ManageDocks: add avoidStrutsOn, for covering some docks and not others by default.
Brent Yorgey <byorgey at gmail.com>**20080327203940] 
[ManageDocks: add ability to toggle individual gaps independently
Brent Yorgey <byorgey at gmail.com>**20080327111722] 
[PerWorkspace: add modWorkspace(s) combinators, for selectively applying layout modifiers to certain workspaces but not others
Brent Yorgey <byorgey at gmail.com>**20080326214351] 
[Haddock fix
Roman Cheplyaka <roma at ro-che.info>**20080330134435] 
[Remove stale status gaps code
Spencer Janssen <sjanssen at cse.unl.edu>**20080329230737] 
[TAG 0.7
Spencer Janssen <sjanssen at cse.unl.edu>**20080329202416] 
Patch bundle hash:
1e852904d42ceeef15d250ad45e1033ae7a9fcee


More information about the xmonad mailing list