Based on a suggestion by sjanssen, I adapted the modules in contrib to
use the new method for hooking X event processing from my previous
patch[1] instead of using the Hooks.EventHook module, which suffered
from some drawbacks and should be no longer needed anymore.
(Thus this patch depends on [1] being applied first to work.)
[1] http://article.gmane.org/gmane.comp.lang.haskell.xmonad/6747
Sat Jan 10 23:13:10 CET 2009 Daniel Schoepe
* Adjustments to new userCode function
Mon Jan 12 19:57:05 CET 2009 Daniel Schoepe
* Adjustments to use the new event hook feature instead of Hooks.EventHook
New patches:
[Adjustments to new userCode function
Daniel Schoepe **20090110221310] {
hunk ./XMonad/Hooks/UrgencyHook.hs 335
callUrgencyHook wuh w
else
clearUrgency w
- userCode =<< asks (logHook . config) -- call *after* IORef has been modified
+ userCodeDef () =<< asks (logHook . config) -- call *after* IORef has been modified
DestroyWindowEvent {ev_window = w} ->
clearUrgency w
_ ->
hunk ./XMonad/Hooks/UrgencyHook.hs 345
callUrgencyHook :: UrgencyHook h => WithUrgencyHook h -> Window -> X ()
callUrgencyHook (WithUrgencyHook hook UrgencyConfig { suppressWhen = sw, remindWhen = rw }) w =
whenX (not <$> shouldSuppress sw w) $ do
- userCode $ urgencyHook hook w
+ userCodeDef () $ urgencyHook hook w
case rw of
Repeatedly times int -> addReminder w int $ Just times
Every int -> addReminder w int Nothing
}
[Adjustments to use the new event hook feature instead of Hooks.EventHook
Daniel Schoepe **20090112185705] {
hunk ./XMonad/Config/Arossato.hs 93
map show [7 .. 9 :: Int]
, logHook = myDynLog xmobar -- REMOVE this line if you do not have xmobar installed!
, manageHook = newManageHook
- , layoutHook = eventHook ServerMode $
- avoidStruts $
+ , layoutHook = avoidStruts $
decorated |||
noBorders mytabs |||
otherLays
hunk ./XMonad/Config/Arossato.hs 101
, normalBorderColor = "white"
, focusedBorderColor = "black"
, keys = newKeys
+ , handleEventHook = serverModeEventHook
, focusFollowsMouse = False
}
where
hunk ./XMonad/Config/Desktop.hs 30
{ logHook = ewmhDesktopsLogHook
, layoutHook = desktopLayoutModifiers $ layoutHook defaultConfig
, manageHook = manageHook defaultConfig <+> manageDocks
+ , handleEventHook = ewmhDesktopsEventHook
, keys = \c -> desktopKeys c `M.union` keys defaultConfig c }
desktopKeys (XConfig {modMask = modm}) = M.fromList $
hunk ./XMonad/Config/Desktop.hs 36
[ ((modm, xK_b), sendMessage ToggleStruts) ]
-desktopLayoutModifiers layout = avoidStruts $ ewmhDesktopsLayout layout
+desktopLayoutModifiers layout = avoidStruts layout
hunk ./XMonad/Config/Droundy.hs 47
import XMonad.Hooks.ManageDocks ( avoidStruts, manageDocks )
import XMonad.Hooks.EwmhDesktops ( ewmhDesktopsLogHook,
- ewmhDesktopsLayout )
+ ewmhDesktopsEventHook )
myXPConfig :: XPConfig
myXPConfig = defaultXPConfig {font="-*-lucida-medium-r-*-*-14-*-*-*-*-*-*-*"
hunk ./XMonad/Config/Droundy.hs 124
config = defaultConfig
{ borderWidth = 1 -- Width of the window border in pixels.
, XMonad.workspaces = ["mutt","iceweasel"]
- , layoutHook = ewmhDesktopsLayout $ showWName $ workspaceDir "~" $
+ , layoutHook = showWName $ workspaceDir "~" $
boringWindows $ smartBorders $ windowNavigation $
maximizeVertical $ toggleLayouts Full $ avoidStruts $
named "tabbed" mytab |||
hunk ./XMonad/Config/Droundy.hs 138
, terminal = "xterm" -- The preferred terminal program.
, normalBorderColor = "#222222" -- Border color for unfocused windows.
, focusedBorderColor = "#00ff00" -- Border color for focused windows.
+ , handleEventHook = ewmhDesktopsEventHook
, XMonad.modMask = mod1Mask
, XMonad.keys = keys
}
hunk ./XMonad/Hooks/EwmhDesktops.hs 18
module XMonad.Hooks.EwmhDesktops (
-- * Usage
-- $usage
- EwmhDesktopsHook,
ewmhDesktopsLogHook,
ewmhDesktopsLogHookCustom,
hunk ./XMonad/Hooks/EwmhDesktops.hs 20
- ewmhDesktopsLayout
+ ewmhDesktopsEventHook
) where
import Data.List
hunk ./XMonad/Hooks/EwmhDesktops.hs 32
import XMonad.Hooks.SetWMName
import XMonad.Util.WorkspaceCompare
-import XMonad.Hooks.EventHook
-- $usage
-- You can use this module with the following in your @~\/.xmonad\/xmonad.hs@:
hunk ./XMonad/Hooks/EwmhDesktops.hs 42
-- > myLogHook :: X ()
-- > myLogHook = ewmhDesktopsLogHook
-- >
--- > myLayoutHook = ewmhDesktopsLayout $ avoidStruts $ layoutHook defaultConfig
+-- > myHandleEventHook = ewmhDesktopsEventHandler
-- >
hunk ./XMonad/Hooks/EwmhDesktops.hs 44
--- > main = xmonad defaultConfig { layoutHook = myLayouts, logHook = myLogHook }
+-- > main = xmonad defaultConfig { handleEventHook = myHandleEventHook, logHook = myLogHook }
--
-- 'avoidStruts' is used to automatically leave space for dock programs, and
-- can be found in 'XMonad.Hooks.ManageDocks'.
hunk ./XMonad/Hooks/EwmhDesktops.hs 120
--
-- * _NET_ACTIVE_WINDOW (activate another window, changing workspace if needed)
--
-ewmhDesktopsLayout :: layout a -> HandleEvent EwmhDesktopsHook layout a
-ewmhDesktopsLayout = eventHook EwmhDesktopsHook
-
-data EwmhDesktopsHook = EwmhDesktopsHook deriving ( Show, Read )
-instance EventHook EwmhDesktopsHook where
- handleEvent _ e@ClientMessageEvent {} = do handle e
- handleEvent _ _ = return ()
+ewmhDesktopsEventHook :: Event -> X Bool
+ewmhDesktopsEventHook e = handle e >> return True
handle :: Event -> X ()
handle ClientMessageEvent {
hunk ./XMonad/Hooks/ServerMode.hs 62
( -- * Usage
-- $usage
ServerMode (..)
- , eventHook
+ , serverModeEventHook
) where
import Control.Monad (when)
hunk ./XMonad/Hooks/ServerMode.hs 71
import XMonad
import XMonad.Actions.Commands
-import XMonad.Hooks.EventHook
-- $usage
-- You can use this module with the following in your
hunk ./XMonad/Hooks/ServerMode.hs 78
--
-- > import XMonad.Hooks.ServerMode
--
--- Then edit your @layoutHook@ by adding the 'eventHook':
+-- Then edit your @handleEventHook@ by adding the 'serverModeEventHook':
--
hunk ./XMonad/Hooks/ServerMode.hs 80
--- > layoutHook = eventHook ServerMode $ avoidStruts $ simpleTabbed ||| Full ||| etc..
+-- > main = xmonad defaultConfig { handleEventHook = serverModeEventHook }
--
hunk ./XMonad/Hooks/ServerMode.hs 82
--- and then:
---
--- > main = xmonad defaultConfig { layoutHook = myLayouts }
---
--- For more detailed instructions on editing the layoutHook see:
---
--- "XMonad.Doc.Extending#Editing_the_layout_hook"
data ServerMode = ServerMode deriving ( Show, Read )
hunk ./XMonad/Hooks/ServerMode.hs 85
-instance EventHook ServerMode where
- handleEvent _ (ClientMessageEvent {ev_message_type = mt, ev_data = dt}) = do
+serverModeEventHook :: Event -> X Bool
+serverModeEventHook (ClientMessageEvent {ev_message_type = mt, ev_data = dt}) = do
d <- asks display
a <- io $ internAtom d "XMONAD_COMMAND" False
when (mt == a && dt /= []) $ do
hunk ./XMonad/Hooks/ServerMode.hs 95
case lookup (fromIntegral (head dt) :: Int) (zip [1..] cl) of
Just (c,_) -> runCommand' c
Nothing -> mapM_ (io . hPutStrLn stderr) . listOfCommands $ cl
- handleEvent _ _ = return ()
+ return True
+serverModeEventHook _ = return True
hunk ./XMonad/Hooks/UrgencyHook.hs 73
import XMonad
import qualified XMonad.StackSet as W
-import XMonad.Hooks.EventHook
import XMonad.Util.Dzen (dzenWithArgs, seconds)
import XMonad.Util.NamedWindows (getName)
import XMonad.Util.Timer (TimerId, startTimer, handleTimer)
hunk ./XMonad/Hooks/UrgencyHook.hs 201
-- 'urgencyConfig' to control behavior. To change this, use 'withUrgencyHook'
-- instead.
withUrgencyHook :: (LayoutClass l Window, UrgencyHook h) =>
- h -> XConfig l -> XConfig (HandleEvent (WithUrgencyHook h) l)
+ h -> XConfig l -> XConfig l
withUrgencyHook hook conf = withUrgencyHookC hook urgencyConfig conf
-- | This lets you modify the defaults set in 'urgencyConfig'. An example:
hunk ./XMonad/Hooks/UrgencyHook.hs 210
--
-- (Don't type the @...@, you dolt.) See 'UrgencyConfig' for details on configuration.
withUrgencyHookC :: (LayoutClass l Window, UrgencyHook h) =>
- h -> UrgencyConfig -> XConfig l -> XConfig (HandleEvent (WithUrgencyHook h) l)
+ h -> UrgencyConfig -> XConfig l -> XConfig l
withUrgencyHookC hook urgConf conf = conf {
hunk ./XMonad/Hooks/UrgencyHook.hs 212
- layoutHook = eventHook (WithUrgencyHook hook urgConf) $ layoutHook conf,
+ handleEventHook = \e -> handleEvent (WithUrgencyHook hook urgConf) e >> handleEventHook conf e,
logHook = cleanupUrgents (suppressWhen urgConf) >> logHook conf
}
hunk ./XMonad/Hooks/UrgencyHook.hs 324
-- ourselves, allowing us to clear urgency when a window is visible, and not to
-- set urgency if a window is visible. If you have a better idea, please, let us
-- know!
-instance UrgencyHook h => EventHook (WithUrgencyHook h) where
- handleEvent wuh event = case event of
- PropertyEvent { ev_event_type = t, ev_atom = a, ev_window = w } -> do
+handleEvent :: UrgencyHook h => WithUrgencyHook h -> Event -> X ()
+handleEvent wuh event =
+ case event of
+ PropertyEvent { ev_event_type = t, ev_atom = a, ev_window = w } -> do
when (t == propertyNotify && a == wM_HINTS) $ withDisplay $ \dpy -> do
WMHints { wmh_flags = flags } <- io $ getWMHints dpy w
if (testBit flags urgencyHintBit) then do
hunk ./XMonad/Hooks/UrgencyHook.hs 336
else
clearUrgency w
userCodeDef () =<< asks (logHook . config) -- call *after* IORef has been modified
- DestroyWindowEvent {ev_window = w} ->
+ DestroyWindowEvent {ev_window = w} ->
clearUrgency w
hunk ./XMonad/Hooks/UrgencyHook.hs 338
- _ ->
+ _ ->
mapM_ handleReminder =<< readReminders
where handleReminder reminder = handleTimer (timer reminder) event $ reminderHook wuh reminder
}
Context:
[CenteredMaster
portnov84@rambler.ru**20090111134513
centerMaster layout modifier places master window at top of other, at center of screen. Other windows are managed by base layout.
topRightMaster is similar, but places master window at top right corner.
]
[XMonad.Util.XSelection: update maintainer information
gwern0@gmail.com**20090110213000
Ignore-this: 1592ba07f2ed5d2258c215c2d175190a
]
[X.U.XSelection: get rid of warning about missing newline, add Haddock link
Brent Yorgey **20090102194357]
[adds haddock documentation for transformPromptSelection
loupgaroublond@gmail.com**20090102190954
also renames the function per mailing list recommendation
]
[adds a weird function to XSelection
loupgaroublond@gmail.com**20081222020730
This enables you to pass a function of (String -> String) to a selection function to modify the string before executing it. This way, you can input your own escape routines to make it shell command line safe, and/or do other fancier things.
]
[ThreeColumnsMiddle
xmonad@c-otto.de**20090102091019]
[fix-fromJust-errors
rupa@lrrr.us**20081224045509
bogner wrote all this stuff and i just tested it.
I had:
myLogHook = ewmhDesktopLogHookCustom ScratchpadFilterOutWorkspace >> updatePointer Nearest
Everytime I invoked or hid Scratchpad, it would leave a 'Maybe.fromJust: Nothing' line in .xsession-errors, and updatePointer would stop working.
]
[ Prompt: Change Filemode to 600 for history-file (fixes bug 244)
Dominik Bruhn **20081218001601]
[X.L.Monitor: changes in message passing
Roman Cheplyaka **20081226220851
- transform mbName (Maybe String) to name (String)
- slghtly change semantics of messages, document it
]
[X.L.Monitor: change interface
Roman Cheplyaka **20081226213118
- remove add*Monitor
- add manageMonitor, monitor template
]
[X.U.WindowProperties: propertyToQuery+docs
Roman Cheplyaka **20081225080702]
[X.L.Monitor: docs
Roman Cheplyaka **20081225073904]
[hlintify XUtils, XSelection, Search, WindowGo
gwern0@gmail.com**20081220153302
Ignore-this: 7e877484e3cd8954b74232ea83180fa9
]
[fix focus issue for XMonad.Actions.Warp.banishScreen
Norbert Zeh **20081212203532
This patch ensures that the focus (or in fact the whose windowset)
does not change as a result of a banishScreen. The way this is implemented
will become problematic if xmonad ever goes multithreaded.
]
[addition of XMonad.Actions.Warp.banishScreen
Norbert Zeh **20081212192621
This works on top of warpToScreen and, thus, suffers from the same issue:
focus change.
]
[fixed documentation for banish
Norbert Zeh **20081212191819
banish actually warps to the specified corner of the current window, not
the screen.
]
[addition of combined TallGrid layout
Norbert Zeh **20081212184836
Added a module XMonad.Layouts.GridVariants, which defines layouts
Grid and TallGrid. The former is a customizable version of Grid. The latter
is a combination of Grid and Tall (see doc of the module).
]
[Add FixedColumn, a layout like Tall but based on the resize hints of windows
Justin Bogner **20081213073054]
[XMonad.Actions.WindowGo: fix a floating-related focus bug
gwern0@gmail.com**20081205150755
Ignore-this: c8b6625aa2bd4136937acbd2ad64ffd3
If a floating window was focused, a cross-workspace 'raise' would cause a loop of
shifting windows. Apparently the problem was 'focus' and its mouse-handling. Spencer
suggested that the calls to focus be replaced with 'focusWindow', which resolved it.
]
[Prompt.hs: +greenXPConfig and amberXPConfig
gwern0@gmail.com**20081119213122
Ignore-this: 95ac7dbe9c8fe3618135966f251f4fc6
]
[Prompt.hs: increase font size to 12 from niggardly 10
gwern0@gmail.com**20081119212523
Ignore-this: 74a6e1ac5e1774da4ffc7c6667c034c
]
[Prompt.hs: replace magic numbers with understandable names
gwern0@gmail.com**20081119212502
Ignore-this: 8401c0213be9a32c925e1bd0ba5e01f1
]
[X.L.Monitor: recommend doHideIgnore (docs)
Roman Cheplyaka **20081215190710]
[X.L.Monitor: docs
Roman Cheplyaka **20081215184423]
[X.L.Monitor: export Monitor datatype
Roman Cheplyaka **20081215184318]
[X.H.ManageHelpers: add doHideIgnore
Roman Cheplyaka **20081215182758]
[Add KDE 4 config, thanks to Shirakawasuna on IRC
Spencer Janssen **20081211071141
Ignore-this: 51698961ab5b6e569c294d174f2804a9
]
[I use the deleteConsecutive history filter
Spencer Janssen **20081025070438]
[Remove XMonad.Config.PlainConfig, it has been turned into the separate xmonad-light project.
Braden Shepherdson **20081203161534]
[XMonad.Prompt: swap up and down per bug #243
gwern0@gmail.com**20081203013323
Ignore-this: 8ab0481a0da7a983f501ac2fec4a68e8
]
[Fix boolean operator precedence in GridSelect keybindings
Aleksandar Dimitrov **20081201120928
The vim-like hjkl keys were ORed to the key event AND arrow keys.
]
[GridSelect.hs: navigate grid with h,j,k,l as well as arrow keys
sean.escriva@gmail.com**20081122084725]
[Export setOpacity from FadeInactive. Document how to make monitor transparent (X.L.Monitor)
Roman Cheplyaka **20081117153027]
[Monitor: use broadcastMessage instead of sendMessage; this solves several issues
Roman Cheplyaka **20081117133957]
[FadeInactive: fade all inactive windows (including focused windows on visible screens)
Roman Cheplyaka **20081117130115]
[Monitor: documented one more issue
Roman Cheplyaka **20081117113807]
[Monitor: improved the docs
Roman Cheplyaka **20081117073709]
[added XMonad.Layout.Monitor
Roman Cheplyaka **20081115104735]
[WindowProperties: added allWithProperty
Roman Cheplyaka **20081115104525]
[ManageHelpers: added doSideFloat (generalization of doCenterFloat)
Roman Cheplyaka **20081114113015]
[GridSelect: Export default_colorizer
Dominik Bruhn **20081112140005]
[Simplify code for restriction-calculation and remove compiletime warnings
Dominik Bruhn **20081112134630]
[Simplify handle/eventLoop, introduce findInWindowMap, partial updates for key movements (less flickering)
Clemens Fruhwirth **20081111100405
* handle/eventLoop carried the display and the drawing window as
parameters. The display is available from the embedded X monad, the
drawing windows was added.
* updateWindows now takes a list of windows to
update. updateAllWindows updates all windows.
* only the windows that are modified by key movements are redrawn
now. This means less flickering.
]
[GridSelect: force cursor stay in visible area
Roman Cheplyaka **20081111063348]
[GridSelect: fix infiniteness problem with diamondRestrict
Roman Cheplyaka **20081111055350]
[GridSelect: remove tabs
Roman Cheplyaka **20081111053647]
[Exported shrinkWhile from Decoration to use in GridSelect
Roman Cheplyaka **20081110191534]
[GridSelect: added link to a screenshot
Roman Cheplyaka **20081110190617]
[GridSelect: various improvements
Roman Cheplyaka **20081110184644
Added documentation
Restricted export list for the sake of haddock
Added functions:
withSelectedWindow
bringSelected (by Clemens Fruhwirth)
goToSelected (by Dominik Bruhn)
]
[Initial version of GridSelect.hs with a lot room for improvement/cleanups
Clemens Fruhwirth **20081107115114]
[documentation: XMonad.Util.Search.hs, add EZConfig keybindings example
sean.escriva@gmail.com**20081106171707]
[typo
Don Stewart **20081104043044
Ignore-this: bdac0ff3316c821bce321b51c62f6e89
]
[place an upper bound on the version of base we support
Don Stewart **20081104035857
Ignore-this: 29139cc4f0ecb299b56ae99f7d20b854
]
[explicit import list for things in the process library
Don Stewart **20081104035319
Ignore-this: 91b7f96421828788760e8bcff7dec317
]
[Work around ghc 6.10 bug #2738
Don Stewart **20081104034819
Ignore-this: c75da9693fa642025eac0d074869423d
]
[windowPromptBringCopy
deadguysfrom@gmail.com**20081023173019]
[generic menu and window bringer
Travis B. Hartwell **20081027005523]
[Search.hs: +hackage search, courtesy of byorgey
gwern0@gmail.com**20081031214937
Ignore-this: 24db0ceed49f8bd37ce98ccf8f8ca2ab
]
[Prompt.hs rename deleteConsecutiveDuplicates
gwern0@gmail.com**20081008205131
That name is really unwieldy and long.
]
[Prompt.hs: have historyCompletion filter dupes
gwern0@gmail.com**20081008204710
Specifically, it calls deleteConsecutiveDuplicates on the end product. uniqSort reverses order in an unfortunate way, so we don't use that.
The use-case is when a user has added the same input many times - as it stands, if the history records 30 'top's or whatever, the completion will show 30 'top' entries! This fixes that.
]
[Prompt.hs: tweak haddocks
gwern0@gmail.com**20081008204649]
[Prompt.hs: mv uniqSort to next to its confreres, and mention the trade-off
gwern0@gmail.com**20081008192645]
[Do not consider XMONAD_TIMER unknown
Joachim Breitner **20081008195643]
[Kill window without focusing it first
Joachim Breitner **20081005002533
This patch requires the patch "add killWindow function" in xmonad.
Before this patch, people would experience “workspace flicker” when closing
a window via EWMH that is not on the current workspace, for example when
quitting pidgin via the panel icon.
]
[let MagnifyLess actually magnify less
daniel@wagner-home.com**20081015153911]
[Actions.Search: add a few search engines
intrigeri@boum.org**20081008104033
Add Debian {package, bug, tracking system} search engines, as well as Google
Images and isohunt.
]
[Implement HiddenNonEmptyWS with HiddenWS and NonEmptyWS
Joachim Breitner **20081006211027
(Just to reduce code duplication)
]
[Add straightforward HiddenWS to WSType
Joachim Breitner **20081006210548
With NonEmptyWS and HiddenNonEmptyWS present, HiddenWS is obviously missing.
]
[Merge emptyLayoutMod into redoLayout
Joachim Breitner **20081005190220
This removes the emptyLayoutMod method from the LayoutModifier class, and
change the Stack parameter to redoLayout to a Maybe Stack one. It also changes
all affected code. This should should be a refactoring without any change in
program behaviour.
]
[SmartBorders even for empty layouts
Joachim Breitner **20081005184426
Fixes: http://code.google.com/p/xmonad/issues/detail?id=223
]
[Paste.hs: improve haddocks
gwern0@gmail.com**20080927150158]
[Paste.hs: fix haddock
gwern0@gmail.com**20080927145238]
[minor explanatory comment
daniel@wagner-home.com**20081003015919]
[XMonad.Layout.HintedGrid: add GridRatio (--no-test because of haddock breakage)
Lukas Mai **20080930141715]
[XMonad.Util.Font: UTF8 -> USE_UTF8
Lukas Mai **20080930140056]
[Paste.hs: implement noModMask suggestion
gwern0@gmail.com**20080926232056]
[fix a divide by zero error in Grid
daniel@wagner-home.com**20080926204148]
[-DUTF8 flag with -DUSE_UTF8
gwern0@gmail.com**20080921154014]
[XSelection.hs: use CPP to compile against utf8-string
gwern0@gmail.com**20080920151615]
[add XMonad.Config.Azerty
Devin Mullins **20080924044946]
[flip GridRatio to match convention (x/y)
Devin Mullins **20080922033354]
[let Grid have a configurable aspect ratio goal
daniel@wagner-home.com**20080922010950]
[Paste.hs: +warning about ASCII limitations
gwern0@gmail.com**20080921155038]
[Paste.hs: shorten comment lines to under 80 columns per sjanssen
gwern0@gmail.com**20080921154950]
[Forgot to enable historyFilter :(
Spencer Janssen **20080921094254]
[Prompt: add configurable history filters
Spencer Janssen **20080921093453]
[Update my config to use 'statusBar'
Spencer Janssen **20080921063513]
[Rename pasteKey functions to sendKey
Spencer Janssen **20080921062016]
[DynamicLog: doc fixes
Spencer Janssen **20080921061314]
[Move XMonad.Util.XPaste to XMonad.Util.Paste
Spencer Janssen **20080921060947]
[Depend on X11 >= 1.4.3
Spencer Janssen **20080921055456]
[statusBar now supplies the action to toggle struts
Spencer Janssen **20080918013858]
[cleanup - use currentTag
Devin Mullins **20080921011159]
[XPaste.hs: improve author info
gwern0@gmail.com**20080920152342]
[+XMonad.Util.XPaste: a module for pasting strings to windows
gwern0@gmail.com**20080920152106]
[UrgencyHook bug fix: cleanupUrgents should clean up reminders, too
Devin Mullins **20080920062117]
[Sketch of XMonad.Config.Monad
Spencer Janssen **20080917081838]
[raiseMaster
seanmce33@gmail.com**20080912184830]
[Add missing space between dzen command and flags
Daniel Neri **20080915131009]
[Big DynamicLog refactor. Added statusBar, improved compositionality for dzen and xmobar
Spencer Janssen **20080913205931
Compatibility notes:
- dzen type change
- xmobar type change
- dynamicLogDzen removed
- dynamicLogXmobar removed
]
[Take maintainership of XMonad.Prompt
Spencer Janssen **20080911230442]
[Overhaul Prompt to use a zipper for history navigation. Fixes issue #216
Spencer Janssen **20080911225940]
[Use the new completion on tab setting
Spencer Janssen **20080911085940]
[Only start to show the completion window with more than one match
Joachim Breitner **20080908110129]
[XPrompt: Add showCompletionOnTab option
Joachim Breitner **20080908105758
This patch partially implements
http://code.google.com/p/xmonad/issues/detail?id=215
It adds a XPConfig option that, if enabled, hides the completion window
until the user presses Tab once. Default behaviour is preserved.
TODO: If Tab causes a unique completion, continue to hide the completion
window.
]
[XMonad.Actions.Plane.planeKeys: function to make easier to configure
Marco Túlio Gontijo e Silva **20080714153601]
[XMonad.Actions.Plane: removed unneeded hiding
Marco Túlio Gontijo e Silva **20080714152631]
[Improvements in documentation
Marco Túlio Gontijo e Silva **20080709002425]
[Fix haddock typos in XMonad.Config.{Desktop,Gnome,Kde}
Spencer Janssen **20080911040808]
[add clearUrgents for your keys
Devin Mullins **20080909055425]
[add reminder functionality to UrgencyHook
Devin Mullins **20080824200548
I'm considering rewriting remindWhen and suppressWhen as UrgencyHookModifiers, so to speak. Bleh.
]
[TAG 0.8
Spencer Janssen **20080905195420]
[Bump version to 0.8
Spencer Janssen **20080905194415]
[Take maintainership of X.L.WindowNavigation
Devin Mullins **20080902070247
Since I've been working on a rewrite, it seems only fair that I be forced to
better understand the existing code / issues.
]
[Take maintainership of NoBorders
Spencer Janssen **20080829201325]
[Only move pointers over managed windows
Joachim Breitner **20080610195916]
[Fix window region checking in UpdatePointer
robreim@bobturf.org**20080511094056]
[remove myself as maintainer from modules I don't maintain or use.
David Roundy **20080828151830]
[change withUrgencyHookC api
Devin Mullins **20080821052046
Now it takes an UrgencyConfig record type.
]
[Accept a range of xmonad versions
Spencer Janssen **20080820214056]
[StackTile_fix
acura@allyourbase.se**20080820061918]
[X.H.UrgencyHook: haddock fixes
Devin Mullins **20080816195220]
[Improve documentation for XMonad.Hooks.EwmhDesktops
Spencer Janssen **20080813191857]
[simplify WindowBringer code, and change greedyView to focusWindow
Devin Mullins **20080811033137]
[Updates to my config
Spencer Janssen **20080812050124]
[Added XMonad.Hooks.DynamicHooks
Braden Shepherdson **20080724222054
Allows runtime creation and modification of ManageHooks. Also allows one-shot
ManageHooks that are removed after the fire. Note that if several transient
hooks fire at once, only the most recently defined is executed, and all
are removed.
]
[XMonad.Hooks.UrgencyHook: +FocusHook
gwern0@gmail.com**20080716224745
This is a hook for simply traveling to whatever window has just set an urgent flag, instead of doing something more involved like printing to a status bar and letting the user do something manually.
]
[Grid/HintedGrid: prefer wider windows
Lukas Mai **20080717205138]
[I prefer the spencerjanssen@gmail.com address
Spencer Janssen **20080714204005]
[callUrgencyHook after adjustUrgents
Devin Mullins **20080714043020
So folks can readUrgents inside their urgencyHook, should they so desire.
]
[XMonad/Doc/Developing.hs: update haddock ln, cpedit
gwern0@gmail.com**20080708205058]
[XMonad/Doc.hs: why link to a specific version instead of the latest?
gwern0@gmail.com**20080708202236]
[XMonad.Actions.Plane.Linear
leoserra@minaslivre.org**20080706175303]
[XMonad.Actions.Plane: Improvements in code quality
Marco Túlio Gontijo e Silva **20080706172829]
[XMonad.Actions.Plane: Treat error in read
Marco Túlio Gontijo e Silva **20080710135342]
[XMonad.Actions.Plane: GConf support
Marco Túlio Gontijo e Silva **20080709001900
Thanks to Johan Dahlin.
]
[X.A.WindowNavigation: comments
Devin Mullins **20080710041028]
[add autoComplete option to XMonad.Prompt
Devin Mullins **20080704073415
Maybe this will get Gwern one step closer to a complete Ratpoison binding.
]
[XMonad.Actions.Plane: Copyright update
Marco Túlio Gontijo e Silva **20080709001548]
[XMonad.Actions.Plane: removed missing haddock chunck
Marco Túlio Gontijo e Silva **20080709010530]
[Added function to filter out scratchpad workspace for use with ewmhLogHookCustom.
Braden Shepherdson **20080706161027]
[Added ewmhLogHookCustom, which allows arbitrary transformation of the workspace list.
Braden Shepherdson **20080706160847]
[adding thesaurus.reference.com and Google Labs Code Search searches
brian@lorf.org**20080701090142]
[fillout banish example in Warp.hs
gwern0@gmail.com**20080629202047
We also include a nice little type to avoid specifying 0 0 stuff.
]
[fix Actions.Wap doc
gwern0@gmail.com**20080629115504
warp 1 1 has a comment claiming that this moves the cursor to the lower *left*, but if you look at the warpToWindow haddock, it says that 1 1 is actually lower *right* - as indeed it proved to do. This was annoying as it led me astray for a minute or so.
]
[allow function keys up to F24
brian@lorf.org**20080626040516]
[Now using -name instead of -title as the term app argument, and correspondingly resource for the ManageHook.
Braden Shepherdson **20080608180748]
[Actions/Search.hs: export SearchEngine constructor
Brent Yorgey **20080620212016]
[Export PerWorkspace to allow type signatures
Malebria **20080620015046]
[XMonad.Util.EZConfig: add keypad bindings
Lukas Mai **20080615143702]
[XMonad.Util.EZConfig: minor cleanups
Lukas Mai **20080528165450]
[make default highlighting a bit dimmer for neighbors in WindowNavigation.
David Roundy **20080610174200]
[keep drag panes on the bottom of the window stack.
David Roundy **20080610174044]
[add support to Magnifier for vertical zooming.
David Roundy **20080610173747]
[XMonad.Hooks.EwmhDesktops export EwmHDesktopsHook
Malebria **20080610130614
Any function that a user may write in his configuration file that is related to ewmhDesktopsLayout cannot have it's type signature if this type is not exported.
]
[XMonad.Config.Desktop type problem (monomorphism?)
Malebria **20080610182856
With main = xmonad defaultConfig {layoutHook = desktopLayoutModifiers Full} I got a type error, that's not present with the patch.
]
[Make prompt keybindings work when numLock or capsLock are active
Justin Bogner **20080608172057]
[Replaced old "spawn on mod+s" semantics with "spawn/summon or banish on mod+s".
Braden Shepherdson **20080608045457
Originally the key binding just spawned a new floating terminal on every keypress.
Now it spawns if it doesn't exist, summons from another workspace if it does but
isn't visible, or banishes it to a dynamically created workspace if it is on the
current workspace.
]
[Exporting addHiddenWorkspace, it's needed by the new Scratchpad
Braden Shepherdson **20080608045318]
[Added scratchpadSpawnActionTerminal to specify the terminal program directly as a String.
Braden Shepherdson **20080608032619]
[Removed odd scratchpadSpawnDefault, improved documentation.
Braden Shepherdson **20080608032439]
[Actions.Search.hs: switch inappropriate use of getShellCompl for a historyCompletion
gwern0@gmail.com**20080607071331
It's inappropriate because if I am searching Wikipedia, say, why on earth do I want completion of files and executables on my PC? A previous search query is much more likely to be what I want.
]
[Prompt.hs: +a historyCompletion function for use in XPrompts
gwern0@gmail.com**20080607071225]
[Add C-w to XMonad.Prompt
Trevor Elliott **20080605220656
* Bind C-w to kill the previous word
]
[Add missing xfce module to .cabal
Don Stewart **20080602174219]
[Use lines instead of columns in configuration (similar to GNOME and KDE)
Malebria **20080526225337]
[Bug correction when areasColumn > 1
Malebria **20080526223220]
[more documentation for WindowNavigation and UrgencyHook
Devin Mullins **20080525050231]
[X.A.WindowNavigation: add logHook for better state tracking
Devin Mullins **20080525032325]
[doco tweaks
Devin Mullins **20080524211849]
[made fadeInactiveLogHook take an argument amount to fade
Justin Bogner **20080523213937]
[add FadeInactive to fade out inactive windows using xcompmgr
Justin Bogner **20080523205838]
[add close window functionality to EwmhDesktops
Justin Bogner **20080523185908]
[Add XMonad.Actions.Plane
Malebria **20080523004357]
[Default Xfce config, this time with me holding the copyright, maintainership, etc.
Ivan.Miljenovic@gmail.com**20080522105316]
[StackTile: minor documentation fix
Joachim Fasting **20080521182637
That '[]' in the example seems incorrect
]
[StackTile
acura@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@gmail.com**20080519190912
It's called searchEngine now, and is a wrapper around the SearchEngine type. Different type as well
]
[sp ShowWName.hs
gwern0@gmail.com**20080519190520]
[remove ScratchWorkspace.
David Roundy **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 **20080518204602]
[add site name in search prompt dialog
zhen.sydow@gmail.com**20080518101357]
[add youtube to search engines
zhen.sydow@gmail.com**20080513212508]
[SwapWorkspaces: swapTo Next|Prev
Devin Mullins **20080518024121]
[UrgencyHook: removeVisiblesFromUrgents -> cleanupUrgents
Devin Mullins **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 **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 **20080516221011]
[I no longer use ScratchWorkspace.
David Roundy **20080516185715]
[fix bug in smartBorders when combined with decorated windows.
David Roundy **20080516184855]
[decent documentation for UrgencyHook
Devin Mullins **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 **20080515062211
Aside from documentation, this is pretty much usable, now.
]
[X.A.WindowNavigation: have currentPosition handle axes independently
Devin Mullins **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 **20080515051728]
[add BoringWindows module to make certain windows skipped when rotating focus.
David Roundy **20080514162846]
[UrgencyHook: some documentation (more is needed)
Devin Mullins **20080514080104]
[UrgencyHook: got rid of the need for instances to know about suppressWhen
Devin Mullins **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@gmail.com**20080513201252]
[X.A.WindowNavigation: comment cleanup
Devin Mullins **20080513091313]
[windowRect now compensates for border width
Devin Mullins **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 **20080513044229]
[X.A.WindowNavigation: minor cleanup
Devin Mullins **20080512170410]
[X.A.WindowNavigation: simplify inr somewhat
Devin Mullins **20080512090647]
[X.A.WindowNavigation: clarity
Devin Mullins **20080512085338]
[X.A.WindowNavigation: ugh, typo
Devin Mullins **20080512082228]
[X.A.WindowNavigation: implement swap, extract withTargetWindow commonality
Devin Mullins **20080512064715
Why doesn't mapWindows exist already?
]
[add more flexible withWindowNavigationKeys
Devin Mullins **20080512050637
Names aren't permanent yet, so don't cry if they change.
]
[X.A.WindowNavigation: TODO
Devin Mullins **20080511222116]
[X.A.WindowNavigation: add withWindowNavigation, for easy setup
Devin Mullins **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 **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 **20080511211326]
[X.A.WindowNavigation state is now workspace-specific
Devin Mullins **20080511071656
racking up some code debt, here...
]
[X.A.WindowNavigation: minor doco changes
Devin Mullins **20080506074235]
[add draft XMonad.Actions.WindowNavigation
Devin Mullins **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@gmail.com**20080513134754]
[pull suppressWhen logic into main WithUrgencyHook handler
Devin Mullins **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 **20080513054615]
[WindowNavigation: extract navigable function
Devin Mullins **20080422045248]
[UrgencyHook: doc typo
Devin Mullins **20080512052137]
[UrgencyHook: extract whenNotVisible
Devin Mullins **20080512041852]
[SpawnUrgencyHook, FWIW
Devin Mullins **20080512040449]
[make UrgencyHook an EventHook
Devin Mullins **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 **20080508194918]
[HintedTile: Fix mistake in documentation.
lithis **20080508003552]
[Use gnome-session-save for the mod-shift-q binding
Spencer Janssen **20080507082205]
[Use the named constant 'none' rather than 0
Spencer Janssen **20080507081854]
[HintedTile: Improve documentation.
lithis **20080508000245]
[Whitespace only
Spencer Janssen **20080507031306]
[Add a binding for Gnome's "Run Application" dialog
Spencer Janssen **20080507031127]
[Add some keybindings to the Kde config
Spencer Janssen **20080507022658]
[Indentation
Spencer Janssen **20080507022553]
[Add ToggleStruts to the desktop config
Spencer Janssen **20080507022516]
[Refactor my config
Spencer Janssen **20080507021504]
[Add XMonad.Config.Kde
Spencer Janssen **20080507020833]
[Don't move the pointer if the user is moving the mouse
Klaus Weidner **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 **20080506053402]
[Add full documentation
Don Stewart **20080505210546]
[minor cleanup on getName
Devin Mullins **20080504054923]
[bug doco for UrgencyHook
Devin Mullins **20080426203638]
[NamedWindows: when converting the text property, handle the empty list.
Spencer Janssen **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 **20080501062357]
[My monitor is larger now :)
Spencer Janssen **20080430083026]
[manageHooks for my config
Spencer Janssen **20080430082536]
[Remove redundant type signature
Spencer Janssen **20080430082447]
[Add XMonad.Config.Desktop and XMonad.Config.Gnome
Spencer Janssen **20080430082253]
[Alphabetize exposed-modules
Spencer Janssen **20080430035453]
[new contrib layout: XMonad.Layout.SimplestFloat - A floating layout like SimpleFloat, but without decoration
joamaki@gmail.com**20080424220957]
[stricitfy some gap fields
Don Stewart **20080427191247]
[XMonad.Hooks.ManageHelpers: quick&dirty support for _NET_WM_STATE_FULLSCREEN
Lukas Mai **20080426132745]
[XMonad.Hooks.Script: haddock fixes
Lukas Mai **20080426132629]
[Error fix for Tabbed when tabbar always shown
Ivan.Miljenovic@gmail.com**20080424063135]
[remove my config file -- the wiki is where its at.
Don Stewart **20080419195650]
[tweaks to docs for SimpleDecoration
Don Stewart **20080418215155]
[Allow tabbar to always be shown.
Ivan.Miljenovic@gmail.com**20080415043728
Patch take 4, hopefully the final version. Includes droundy's suggestions.
]
[polish
Don Stewart **20080418033133]
[Script-based hooks
Trevor Elliott **20080416213024]
[Don't strictify the Display component, this triggers a bug in GHC 6.6
Spencer Janssen **20080416185733]
[Fix to IM modifier.
Roman Cheplyaka **20080414232437
Avoid differentiating integrated stack by using StackSet.filter.
]
[IM layout converted to LayoutModifier, which can be applied to any layout
Ivan N. Veselov **20080413205824]
[stictify some fields
Don Stewart **20080413070117]
[strictify some fields
Don Stewart **20080413065958]
[Fix window order in EWMH
Joachim Breitner **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 **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 **20080409174935]
[Generalize copyWindow, minor style change
Spencer Janssen **20080408210050]
[XMonad.Actions.CopyWindow: added copyToAll and killAllOtherCopies functions
Ivan N. Veselov **20080408195111]
[XMonad.Actions.UpdatePointer: doc fix
Lukas Mai **20080407152741]
[XMonad.Util.Font: minor reformatting
Lukas Mai **20080406020935]
[DynamicLog: resolve merge conflict
Lukas Mai **20080406020527]
[Encode the entire DynamicLog output, instead of just window title.
lithis **20080329031537]
[DynamicLog: add support for UTF-8 locales when compiled with XFT or UFT-8 support
Andrea Rossato **20080313102643]
[XMonad.Util.Font: don't call setlocale; core does it for us
Lukas Mai **20080406013123]
[XMonad.Util.NamedWindows: fix imports
Lukas Mai **20080326172745]
[Changed getName to use locale-aware functions
Mats Jansborg **20070819132104
Rewrote getName using getTextProperty and wcTextPropertyToTextList.
]
[Added next-window versions of the raise* functions.
Ian Zerny **20080405182900]
[XMonad.Layout.Master: initial import
Lukas Mai **20080404220734]
[update contrib for applySizeHints changes
Lukas Mai **20080404220558]
[XMonad.Hooks.ManageDocks: haddock fix
Lukas Mai **20080404220532]
[MultiToggle/Instances: ghc 6.6 can't parse LANGUAGE pragma
Brent Yorgey **20080404200157]
[Document _NET_ACTIVE_WINDOW behaviour more exactly
Joachim Breitner **20080404072944]
[_NET_ACTIVE_WINDOW moves windows if necessary
Joachim Breitner *-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 **20080403203425]
[some bang patterns
Don Stewart **20080403172246]
[have 'dzen' use autoStruts to detect the gaps
Don Stewart **20080403003130]
[Actions/Search.hs: add dictionary.com search
Brent Yorgey **20080402150521]
[_NET_ACTIVE_WINDOW moves windows if necessary
Joachim Breitner **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 **20080402042846]
[HintedGrid: try both bottom-up/top-down window placement to minimize unused space
Lukas Mai **20080402012538]
[Grid/HintedGrid: use an ncolumns formula inspired by dwm's "optimal" mode
Lukas Mai **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 **20080402003742]
[improve WindowGo.hs Haddock formatting
gwern0@gmail.com**20080401023130]
[forgot a haddock for getEditor in Shell.hs
gwern0@gmail.com**20080401022012]
[WindowGo.hs: +raiseBrowser, raiseEditor
gwern0@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@gmail.com**20080401015049]
[Search.hs: remove an argument from selectSearch and promptSearch
gwern0@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@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 **20080401231722]
[Documentation improvement.
Roman Cheplyaka **20080401134305]
[Remove broken link to screenshot.
Roman Cheplyaka **20080331210854]
[MultiToggle: add new XMonad.Layout.MultiToggle.Instances module for common instances of Transformer, update MultiToggle docs accordingly
Brent Yorgey **20080331201739]
[XMonad.Actions.CycleRecentWS: initial import
Michal Janeczek **20080331111906]
[XMonad.Hooks.ManageDocks: export checkDoc
Lukas Mai **20080331012911]
[XMonad.Layout.Grid: fix indentation
Lukas Mai **20080330004859]
[move Direction type from WindowNavigation to ManageDocks (ManageDocks will move into the core, taking Direction with it)
Brent Yorgey **20080331010127]
[ManageDocks: clean up + add more documentation
Brent Yorgey **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 **20080328205446]
[ManageDocks: add avoidStrutsOn, for covering some docks and not others by default.
Brent Yorgey **20080327203940]
[ManageDocks: add ability to toggle individual gaps independently
Brent Yorgey **20080327111722]
[PerWorkspace: add modWorkspace(s) combinators, for selectively applying layout modifiers to certain workspaces but not others
Brent Yorgey **20080326214351]
[Haddock fix
Roman Cheplyaka