[xmonad] darcs patch: A mosaic layout based on MosaicAlt

Adam Vogt vogt.adam at gmail.com
Sat Jan 24 23:37:39 EST 2009

Hopefully this patch fixes the ambiguity.

That state information (that int parameter) as to which aspect ratio layout 
to pick is now hidden, since I could not think of a good reason for it not 
to be the default.

* On Sunday, January 25 2009, Roman Cheplyaka wrote:

>Applied, thanks.
>A few issues with documentation:
>- what does Int (0 in your example) stands for?
>- "The numbers are directly proportional to the area given, with the
>  master window getting the most if you have an ascending list." -- does
>  it mean that area of master is proportional to the last number in the
>  list? I think it should be more clear.
>Roman I. Cheplyaka (aka Feuerbach @ IRC)
>xmonad mailing list
>xmonad at haskell.org
-------------- next part --------------
Sat Jan 24 23:12:29 EST 2009  Adam Vogt <vogt.adam at gmail.com>
  * X.L.Mosaic add documentation, update interface and aspect ratio behavior

New patches:

[X.L.Mosaic add documentation, update interface and aspect ratio behavior
Adam Vogt <vogt.adam at gmail.com>**20090125041229
 Ignore-this: e78027707fc844b3307ea87f28efed73
] {
hunk ./XMonad/Layout/Mosaic.hs 12
 -- Stability   :  unstable
 -- Portability :  unportable
--- Based on MosaicAlt, but aspect ratio messages allways change the aspect
+-- Based on MosaicAlt, but aspect ratio messages always change the aspect
 -- ratios, and rearranging the window stack changes the window sizes.
hunk ./XMonad/Layout/Mosaic.hs 18
 module XMonad.Layout.Mosaic (
+    -- * Usage
     -- $usage
hunk ./XMonad/Layout/Mosaic.hs 20
-    Mosaic(..)
+    Mosaic(Mosaic)
hunk ./XMonad/Layout/Mosaic.hs 22
+    ,shallower
+    ,steeper
hunk ./XMonad/Layout/Mosaic.hs 30
 import Prelude hiding (sum)
 import XMonad(Typeable,
-              LayoutClass(pureLayout, pureMessage, description), Message,
+              LayoutClass(doLayout , pureMessage, description), Message,
               fromMessage, splitHorizontallyBy, splitVerticallyBy, Rectangle)
 import XMonad.StackSet(integrate)
 import Data.Foldable(Foldable(foldMap), sum)
hunk ./XMonad/Layout/Mosaic.hs 43
 -- Then edit your @layoutHook@ by adding the Mosaic layout:
--- > myLayouts = Mosaic 0 [1..10] ||| Full ||| etc..
+-- > myLayouts = Mosaic [4..12] ||| Full ||| etc..
 -- > main = xmonad defaultConfig { layoutHook = myLayouts }
hunk ./XMonad/Layout/Mosaic.hs 46
--- The numbers are directly proportional to the area given, with the
--- master window getting the most if you have an ascending list.
+-- Adding windows tends to result in an excessively tall ratio, but
+-- approximately square ratios can be quickly had by sending a reset to the
+-- layout (alt-shift space), or sending the Reset message.
hunk ./XMonad/Layout/Mosaic.hs 50
--- Unfortunately, infinite lists break serialization, so
--- don't use them
+-- Unfortunately, infinite lists break serialization, so don't use them.
hunk ./XMonad/Layout/Mosaic.hs 52
--- The position of a window in the stack determines its size.
--- To change the choice in aspect ratio, add to your keybindings:
+-- To change the choice in aspect ratio and the relative sizes of windows, add
+-- to your keybindings:
 --  > , ((modMask, xK_a), sendMessage Taller)
 --  > , ((modMask, xK_z), sendMessage Wider)
hunk ./XMonad/Layout/Mosaic.hs 57
---  > , ((modMask, xK_s), sendMessage (SlopeMod (zipWith (*) [1..])))
---  > , ((modMask, xK_d), sendMessage (SlopeMod (zipWith (flip (/)) [1..])))
+--  > , ((modMask, xK_h), sendMessage Shrink >> sendMessage (SlopeMod shallower))
+--  > , ((modMask, xK_l), sendMessage Expand >> sendMessage (SlopeMod steeper))
+--  > , ((modMask, xK_r), sendMessage Reset)
 -- For more detailed instructions on editing the layoutHook see:
hunk ./XMonad/Layout/Mosaic.hs 76
 instance Message Aspect
 data Mosaic a
-    = Mosaic Int [Rational]
+    {- | The relative magnitudes of the positive rational numbers provided
+         determine the relative sizes of the windows. If the numbers are all
+         the same, then the layout looks like Grid. An increasing list results
+         in the master window being the largest. Only as many windows are
+         displayed as there are elements in that list
+    -}
+    = Mosaic [Rational]
+    -- the current index, and the maximum index are carried along
+    | MosaicSt Rational Int [Rational]
     deriving (Read, Show)
 instance LayoutClass Mosaic a where
hunk ./XMonad/Layout/Mosaic.hs 90
     description = const "Mosaic"
-    pureMessage (Mosaic i ss) msg = ixMod $ fromMessage msg
-        where ixMod (Just Wider) = Just $ Mosaic (succ i) ss
-              ixMod (Just Taller)  = if i <= 1 then Nothing else Just $ Mosaic (pred i) ss
-              ixMod (Just Reset) = Just $ Mosaic 0 ss
-              ixMod (Just (SlopeMod f)) = Just $ Mosaic i (f ss)
-              ixMod _ = Nothing
+    pureMessage (Mosaic _ss) _ms = Nothing
+    pureMessage (MosaicSt ix mix ss) ms = fromMessage ms >>= ixMod
+        where ixMod Taller | rix >= mix = Nothing
+                           | otherwise = Just $ MosaicSt (succ ix) mix ss
+              ixMod Wider  | rix <= 0   = Nothing
+                           | otherwise = Just $ MosaicSt (pred ix) mix ss
+              ixMod Reset              = Just $ Mosaic ss
+              ixMod (SlopeMod f)       = Just $ MosaicSt ix mix (f ss)
+              rix = round ix
+    doLayout (Mosaic ss) r st = return (zip (integrate st) rect, newLayout)
+        where rects = splits (length $ integrate st) r ss
+              lrects = length rects
+              rect = rects !! (lrects `div` 2)
+              newLayout = Just $ MosaicSt (fromIntegral lrects / 2) (pred lrects) ss
hunk ./XMonad/Layout/Mosaic.hs 106
-    pureLayout (Mosaic i ss) r st = zip (integrate st) (rect i)
+    doLayout (MosaicSt ix mix ss) r st
+                                = return (zip (integrate st) rect, newLayout)
         where rects = splits (length $ integrate st) r ss
hunk ./XMonad/Layout/Mosaic.hs 109
-              rect 0 = rects !! (length rects `div` 2)
-              rect n = if length rects < n then last rects else rects !! pred n
+              lrects = length rects
+              nix = if mix == 0 || ix `elem` [0,1] then fromIntegral $ lrects `div` 2
+                        else max 0 $ min (fromIntegral $ pred lrects) $ fromIntegral (pred lrects) * ix / fromIntegral mix
+              rect = rects !! round nix
+              newLayout = Just $ MosaicSt nix (pred lrects) ss
+-- | These sample functions scale the ratios of successive windows, other
+-- variations could also be useful.
+-- The windows in each position of the stack should correspond to a specific
+-- element of the list, so it should be possible to resize individual windows,
+-- though it is not yet provided.
+steeper :: [Rational] -> [Rational]
+steeper [] = []
+steeper (x:xs) = map (subtract (x*0.8)) (x:xs)
+shallower :: [Rational] -> [Rational]
+shallower [] = []
+shallower (x:xs) = map (+(x/0.8)) (x:xs)
 splits :: Int -> Rectangle -> [Rational] -> [[Rectangle]]
 splits num rect sz = splitsL rect $ makeTree $ normalize $ take num sz
hunk ./XMonad/Layout/Mosaic.hs 131
---    where --fas = normalize $ map (fromIntegral (sum fas')/) $ map fromIntegral fas'
 normalize :: Fractional a => [a] -> [a]
 normalize x = let s = sum x
hunk ./XMonad/Layout/Mosaic.hs 142
 splitsL rect (Leaf _) = [[rect]]
 splitsL rect (Branch l r) = do
     let mkSplit f = f (sum l / (sum l + sum r)) rect
-    (rl,rr) <- map mkSplit [splitHorizontallyBy,splitVerticallyBy]
+    (rl,rr) <- map mkSplit [splitVerticallyBy,splitHorizontallyBy]
     splitsL rl l `interleave` splitsL rr r
 interleave :: [[a]] -> [[a]] -> [[a]]


[X.L.Mosaic: haddock fix
Roman Cheplyaka <roma at ro-che.info>**20090124235908] 
[A mosaic layout based on MosaicAlt
Adam Vogt <vogt.adam at gmail.com>**20090124022058
 Ignore-this: 92bad7498f1ac402012e3eba6cbb2693
 The position of a window in the stack determines its position and layout. And
 the overall tendency to make wide or tall windows can be changed, though not
 all of the options presented by MosaicAlt can be reached, the layout changes
 with each aspect ratio message.
[uninstallSignalHandlers in spawnPipe
Spencer Janssen <spencerjanssen at gmail.com>**20090122002745
 Ignore-this: e8cfe0f18f278c95d492628da8326fd7
[Create a new session for spawnPiped processes
Spencer Janssen <spencerjanssen at gmail.com>**20090122000441
 Ignore-this: 37529c5fe8b4bf1b97fffb043bb3dfb0
[TAG 0.8.1
Spencer Janssen <spencerjanssen at gmail.com>**20090118220647] 
[Use spawnOn in my config
Spencer Janssen <spencerjanssen at gmail.com>**20090117041026
 Ignore-this: 3f92e4bbe4f2874b86a6c7ad66a31bbb
[Add XMonad.Actions.SpawnOn
Spencer Janssen <spencerjanssen at gmail.com>**20090117040432
 Ignore-this: 63869d1ab11f2ed5aab1690763065800
[Bump version to 0.8.1
Spencer Janssen <spencerjanssen at gmail.com>**20090116223607
 Ignore-this: 1c201e87080e4404f51cadc108b228a1
[Compile without optimizations on x86_64 and GHC 6.10
Spencer Janssen <spencerjanssen at gmail.com>**20090108231650
 Ignore-this: a803235b8022793f648e8953d9f05e0c
 This is a workaround for http://xmonad.org/bugs/226
[Update all uses of doubleFork/waitForProcess
Spencer Janssen <spencerjanssen at gmail.com>**20090116210315
 Ignore-this: 4e15b7f3fd6af3b7317449608f5246b0
[Update to my config
Spencer Janssen <spencerjanssen at gmail.com>**20090116204553
 Ignore-this: 81017fa5b99855fc8ed1fe8892929f53
[Adjustments to new userCode function
Daniel Schoepe <asgaroth_ at gmx.de>**20090110221310] 
[X.U.EZConfig: expand documentation
Brent Yorgey <byorgey at cis.upenn.edu>**20090116153143] 
[add a bit of documentation to HintedTile
Brent Yorgey <byorgey at cis.upenn.edu>**20090114065126] 
[ManageHelpers: add isDialog
johanngiwer at web.de**20090108232505] 
portnov84 at 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 at gmail.com**20090110213000
 Ignore-this: 1592ba07f2ed5d2258c215c2d175190a
[X.U.XSelection: get rid of warning about missing newline, add Haddock link
Brent Yorgey <byorgey at cis.upenn.edu>**20090102194357] 
[adds haddock documentation for transformPromptSelection
loupgaroublond at gmail.com**20090102190954
 also renames the function per mailing list recommendation
[adds a weird function to XSelection
loupgaroublond at 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.
xmonad at c-otto.de**20090102091019] 
rupa at 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 <dominik at dbruhn.de>**20081218001601] 
[X.L.Monitor: changes in message passing
Roman Cheplyaka <roma at ro-che.info>**20081226220851
 - transform mbName (Maybe String) to name (String)
 - slghtly change semantics of messages, document it
[X.L.Monitor: change interface
Roman Cheplyaka <roma at ro-che.info>**20081226213118
 - remove add*Monitor
 - add manageMonitor, monitor template
[X.U.WindowProperties: propertyToQuery+docs
Roman Cheplyaka <roma at ro-che.info>**20081225080702] 
[X.L.Monitor: docs
Roman Cheplyaka <roma at ro-che.info>**20081225073904] 
[hlintify XUtils, XSelection, Search, WindowGo
gwern0 at gmail.com**20081220153302
 Ignore-this: 7e877484e3cd8954b74232ea83180fa9
[fix focus issue for XMonad.Actions.Warp.banishScreen
Norbert Zeh <nzeh at cs.dal.ca>**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 <nzeh at cs.dal.ca>**20081212192621
 This works on top of warpToScreen and, thus, suffers from the same issue:
 focus change.
[fixed documentation for banish
Norbert Zeh <nzeh at cs.dal.ca>**20081212191819
 banish actually warps to the specified corner of the current window, not
 the screen.
[addition of combined TallGrid layout
Norbert Zeh <nzeh at cs.dal.ca>**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 <mail at justinbogner.com>**20081213073054] 
[XMonad.Actions.WindowGo: fix a floating-related focus bug
gwern0 at 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 at gmail.com**20081119213122
 Ignore-this: 95ac7dbe9c8fe3618135966f251f4fc6
[Prompt.hs: increase font size to 12 from niggardly 10
gwern0 at gmail.com**20081119212523
 Ignore-this: 74a6e1ac5e1774da4ffc7c6667c034c
[Prompt.hs: replace magic numbers with understandable names
gwern0 at gmail.com**20081119212502
 Ignore-this: 8401c0213be9a32c925e1bd0ba5e01f1
[X.L.Monitor: recommend doHideIgnore (docs)
Roman Cheplyaka <roma at ro-che.info>**20081215190710] 
[X.L.Monitor: docs
Roman Cheplyaka <roma at ro-che.info>**20081215184423] 
[X.L.Monitor: export Monitor datatype
Roman Cheplyaka <roma at ro-che.info>**20081215184318] 
[X.H.ManageHelpers: add doHideIgnore
Roman Cheplyaka <roma at ro-che.info>**20081215182758] 
[Add KDE 4 config, thanks to Shirakawasuna on IRC
Spencer Janssen <spencerjanssen at gmail.com>**20081211071141
 Ignore-this: 51698961ab5b6e569c294d174f2804a9
[I use the deleteConsecutive history filter
Spencer Janssen <spencerjanssen at gmail.com>**20081025070438] 
[Remove XMonad.Config.PlainConfig, it has been turned into the separate xmonad-light project.
Braden Shepherdson <Braden.Shepherdson at gmail.com>**20081203161534] 
[XMonad.Prompt: swap up and down per bug #243
gwern0 at gmail.com**20081203013323
 Ignore-this: 8ab0481a0da7a983f501ac2fec4a68e8
[Fix boolean operator precedence in GridSelect keybindings
Aleksandar Dimitrov <aleks.dimitrov at googlemail.com>**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 at gmail.com**20081122084725] 
[Export setOpacity from FadeInactive. Document how to make monitor transparent (X.L.Monitor)
Roman Cheplyaka <roma at ro-che.info>**20081117153027] 
[Monitor: use broadcastMessage instead of sendMessage; this solves several issues
Roman Cheplyaka <roma at ro-che.info>**20081117133957] 
[FadeInactive: fade all inactive windows (including focused windows on visible screens)
Roman Cheplyaka <roma at ro-che.info>**20081117130115] 
[Monitor: documented one more issue
Roman Cheplyaka <roma at ro-che.info>**20081117113807] 
[Monitor: improved the docs
Roman Cheplyaka <roma at ro-che.info>**20081117073709] 
[added XMonad.Layout.Monitor
Roman Cheplyaka <roma at ro-che.info>**20081115104735] 
[WindowProperties: added allWithProperty
Roman Cheplyaka <roma at ro-che.info>**20081115104525] 
[ManageHelpers: added doSideFloat (generalization of doCenterFloat)
Roman Cheplyaka <roma at ro-che.info>**20081114113015] 
[GridSelect: Export default_colorizer
Dominik Bruhn <dominik at dbruhn.de>**20081112140005] 
[Simplify code for restriction-calculation and remove compiletime warnings
Dominik Bruhn <dominik at dbruhn.de>**20081112134630] 
[Simplify handle/eventLoop, introduce findInWindowMap, partial updates for key movements (less flickering)
Clemens Fruhwirth <clemens at endorphin.org>**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 <roma at ro-che.info>**20081111063348] 
[GridSelect: fix infiniteness problem with diamondRestrict
Roman Cheplyaka <roma at ro-che.info>**20081111055350] 
[GridSelect: remove tabs
Roman Cheplyaka <roma at ro-che.info>**20081111053647] 
[Exported shrinkWhile from Decoration to use in GridSelect
Roman Cheplyaka <roma at ro-che.info>**20081110191534] 
[GridSelect: added link to a screenshot
Roman Cheplyaka <roma at ro-che.info>**20081110190617] 
[GridSelect: various improvements
Roman Cheplyaka <roma at ro-che.info>**20081110184644
 Added documentation
 Restricted export list for the sake of haddock
 Added functions:
   bringSelected (by Clemens Fruhwirth)
   goToSelected (by Dominik Bruhn)
[Initial version of GridSelect.hs with a lot room for improvement/cleanups
Clemens Fruhwirth <clemens at endorphin.org>**20081107115114] 
[documentation: XMonad.Util.Search.hs, add EZConfig keybindings example
sean.escriva at gmail.com**20081106171707] 
Don Stewart <dons at galois.com>**20081104043044
 Ignore-this: bdac0ff3316c821bce321b51c62f6e89
[place an upper bound on the version of base we support
Don Stewart <dons at galois.com>**20081104035857
 Ignore-this: 29139cc4f0ecb299b56ae99f7d20b854
[explicit import list for things in the process library
Don Stewart <dons at galois.com>**20081104035319
 Ignore-this: 91b7f96421828788760e8bcff7dec317
[Work around ghc 6.10 bug #2738
Don Stewart <dons at galois.com>**20081104034819
 Ignore-this: c75da9693fa642025eac0d074869423d
deadguysfrom at gmail.com**20081023173019] 
[generic menu and window bringer
Travis B. Hartwell <nafai at travishartwell.net>**20081027005523] 
[Search.hs: +hackage search, courtesy of byorgey
gwern0 at gmail.com**20081031214937
 Ignore-this: 24db0ceed49f8bd37ce98ccf8f8ca2ab
[Prompt.hs rename deleteConsecutiveDuplicates
gwern0 at gmail.com**20081008205131
 That name is really unwieldy and long.
[Prompt.hs: have historyCompletion filter dupes
gwern0 at 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 at gmail.com**20081008204649] 
[Prompt.hs: mv uniqSort to next to its confreres, and mention the trade-off
gwern0 at gmail.com**20081008192645] 
[Do not consider XMONAD_TIMER unknown
Joachim Breitner <mail at joachim-breitner.de>**20081008195643] 
[Kill window without focusing it first
Joachim Breitner <mail at joachim-breitner.de>**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 at wagner-home.com**20081015153911] 
[Actions.Search: add a few search engines
intrigeri at 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 <mail at joachim-breitner.de>**20081006211027
 (Just to reduce code duplication)
[Add straightforward HiddenWS to WSType
Joachim Breitner <mail at joachim-breitner.de>**20081006210548
 With NonEmptyWS and HiddenNonEmptyWS present, HiddenWS is obviously missing.
[Merge emptyLayoutMod into redoLayout
Joachim Breitner <mail at joachim-breitner.de>**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 <mail at joachim-breitner.de>**20081005184426
 Fixes: http://code.google.com/p/xmonad/issues/detail?id=223
[Paste.hs: improve haddocks
gwern0 at gmail.com**20080927150158] 
[Paste.hs: fix haddock
gwern0 at gmail.com**20080927145238] 
[minor explanatory comment
daniel at wagner-home.com**20081003015919] 
[XMonad.Layout.HintedGrid: add GridRatio (--no-test because of haddock breakage)
Lukas Mai <l.mai at web.de>**20080930141715] 
[XMonad.Util.Font: UTF8 -> USE_UTF8
Lukas Mai <l.mai at web.de>**20080930140056] 
[Paste.hs: implement noModMask suggestion
gwern0 at gmail.com**20080926232056] 
[fix a divide by zero error in Grid
daniel at wagner-home.com**20080926204148] 
[-DUTF8 flag with -DUSE_UTF8
gwern0 at gmail.com**20080921154014] 
[XSelection.hs: use CPP to compile against utf8-string
gwern0 at gmail.com**20080920151615] 
[add XMonad.Config.Azerty
Devin Mullins <me at twifkak.com>**20080924044946] 
[flip GridRatio to match convention (x/y)
Devin Mullins <me at twifkak.com>**20080922033354] 
[let Grid have a configurable aspect ratio goal
daniel at wagner-home.com**20080922010950] 
[Paste.hs: +warning about ASCII limitations
gwern0 at gmail.com**20080921155038] 
[Paste.hs: shorten comment lines to under 80 columns per sjanssen
gwern0 at gmail.com**20080921154950] 
[Forgot to enable historyFilter :(
Spencer Janssen <spencerjanssen at gmail.com>**20080921094254] 
[Prompt: add configurable history filters
Spencer Janssen <spencerjanssen at gmail.com>**20080921093453] 
[Update my config to use 'statusBar'
Spencer Janssen <spencerjanssen at gmail.com>**20080921063513] 
[Rename pasteKey functions to sendKey
Spencer Janssen <spencerjanssen at gmail.com>**20080921062016] 
[DynamicLog: doc fixes
Spencer Janssen <spencerjanssen at gmail.com>**20080921061314] 
[Move XMonad.Util.XPaste to XMonad.Util.Paste
Spencer Janssen <spencerjanssen at gmail.com>**20080921060947] 
[Depend on X11 >= 1.4.3
Spencer Janssen <spencerjanssen at gmail.com>**20080921055456] 
[statusBar now supplies the action to toggle struts
Spencer Janssen <spencerjanssen at gmail.com>**20080918013858] 
[cleanup - use currentTag
Devin Mullins <me at twifkak.com>**20080921011159] 
[XPaste.hs: improve author info
gwern0 at gmail.com**20080920152342] 
[+XMonad.Util.XPaste: a module for pasting strings to windows
gwern0 at gmail.com**20080920152106] 
[UrgencyHook bug fix: cleanupUrgents should clean up reminders, too
Devin Mullins <me at twifkak.com>**20080920062117] 
[Sketch of XMonad.Config.Monad
Spencer Janssen <spencerjanssen at gmail.com>**20080917081838] 
seanmce33 at gmail.com**20080912184830] 
[Add missing space between dzen command and flags
Daniel Neri <daniel.neri at sigicom.com>**20080915131009] 
[Big DynamicLog refactor.  Added statusBar, improved compositionality for dzen and xmobar
Spencer Janssen <spencerjanssen at gmail.com>**20080913205931
 Compatibility notes:
     - dzen type change
     - xmobar type change
     - dynamicLogDzen removed
     - dynamicLogXmobar removed
[Take maintainership of XMonad.Prompt
Spencer Janssen <spencerjanssen at gmail.com>**20080911230442] 
[Overhaul Prompt to use a zipper for history navigation.  Fixes issue #216
Spencer Janssen <spencerjanssen at gmail.com>**20080911225940] 
[Use the new completion on tab setting
Spencer Janssen <spencerjanssen at gmail.com>**20080911085940] 
[Only start to show the completion window with more than one match
Joachim Breitner <mail at joachim-breitner.de>**20080908110129] 
[XPrompt: Add showCompletionOnTab option
Joachim Breitner <mail at joachim-breitner.de>**20080908105758
 This patch partially implements
 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
[XMonad.Actions.Plane.planeKeys: function to make easier to configure
Marco T?lio Gontijo e Silva <marcot at riseup.net>**20080714153601] 
[XMonad.Actions.Plane: removed unneeded hiding
Marco T?lio Gontijo e Silva <marcot at riseup.net>**20080714152631] 
[Improvements in documentation
Marco T?lio Gontijo e Silva <marcot at riseup.net>**20080709002425] 
[Fix haddock typos in XMonad.Config.{Desktop,Gnome,Kde}
Spencer Janssen <spencerjanssen at gmail.com>**20080911040808] 
[add clearUrgents for your keys
Devin Mullins <me at twifkak.com>**20080909055425] 
[add reminder functionality to UrgencyHook
Devin Mullins <me at twifkak.com>**20080824200548
 I'm considering rewriting remindWhen and suppressWhen as UrgencyHookModifiers, so to speak. Bleh.
[TAG 0.8
Spencer Janssen <spencerjanssen at gmail.com>**20080905195420] 
Patch bundle hash:

More information about the xmonad mailing list