1 patch for repository http://code.haskell.org/XMonadContrib:

Fri Dec 12 13:02:21 AST 2014  nzeh@cs.dal.ca
  * New layout module XMonad.Layout.Dwindle
  
  Adds two new layouts, Dwindle and Spiral.  The latter is a, to me, more
  intuitive version of XMonad.Layout.Spiral.spiral.  The former produces the
  same window sizes as Spiral but pushes the smallest windows into one of the
  screen corners.


New patches:

[New layout module XMonad.Layout.Dwindle
nzeh@cs.dal.ca**20141212170221
 Ignore-this: 23d1a41b83a174790e47a54947cbfc08
 
 Adds two new layouts, Dwindle and Spiral.  The latter is a, to me, more
 intuitive version of XMonad.Layout.Spiral.spiral.  The former produces the
 same window sizes as Spiral but pushes the smallest windows into one of the
 screen corners.
] {
addfile ./XMonad/Layout/Dwindle.hs
hunk ./XMonad/Layout/Dwindle.hs 1
+{-# LANGUAGE FlexibleInstances, MultiParamTypeClasses #-}
+
+-----------------------------------------------------------------------------
+-- |
+-- Module      :  XMonad.Layout.Spiral
+-- Copyright   :  (c) Norbert Zeh <norbert.zeh@gmail.com>
+-- License     :  GPL
+--
+-- Maintainer  :  Norbert Zeh <norbert.zeh@gmail.com>
+-- Stability   :  experimental
+-- Portability :  portable
+--
+-- Two layouts: One, 'Spiral', is a reimplementation of
+-- 'XMonad.Layout.Spiral.spiral' with, at least to me, more intuitive semantics.
+-- The other, 'Dwindle', is inspired by a similar layout in awesome and produces
+-- the same sequence of decreasing window sizes as Spiral but pushes the
+-- smallest windows into a screen corner rather than the centre.
+--
+-----------------------------------------------------------------------------
+
+module XMonad.Layout.Dwindle ( -- * Usage
+                               -- $usage
+                               Dwindle(..)
+                             , Direction(..)
+                             , Rotation(..)
+                             ) where
+
+import Data.List ( unfoldr )
+import XMonad hiding ( Rotation )
+import XMonad.StackSet ( integrate, Stack )
+
+-- $usage
+-- This module can be used as follows:
+--
+-- > import XMonad.Layout.Dwindle
+--
+-- Then add something like this to your layouts:
+--
+-- > Dwindle R CW 1.5 1.1
+--
+-- or
+--
+-- > Spiral L CW 1.5 1.1
+--
+-- The former produces a layout that places the second window to the right of
+-- the first, the third below the second, the fourth to the right of the third,
+-- and so on.  The first window is 1.5 times as wide as the second one, the
+-- second is 1.5 times as tall as the third one, and so on.  Thus, the further
+-- down the window stack a window is, the smaller it is and the more it is
+-- pushed into the bottom-right corner.
+--
+-- The latter produces a layout with the same window sizes but places the second
+-- window to the left of the first one, the third above the second one, the
+-- fourth to the right of the third one, and so on.
+--
+-- In both cases, the fourth parameter, 1.1, is the factor by which the third
+-- parameter increases or decreases in response to Expand or Shrink messages.
+--
+-- For more detailed instructions on editing the layoutHook see:
+--
+-- "XMonad.Doc.Extending#Editing_the_layout_hook"
+
+-- | Layouts with geometrically decreasing window sizes.  Both layouts split the
+-- screen into a rectangle for the first window and a rectangle for the
+-- remaining windows, which is split recursively to lay out these windows.  Both
+-- layouts alternate between horizontal and vertical splits.
+--
+-- In each recursive step, the split 'Direction' determines the placement of the
+-- remaining windows relative to the current window: to the left, to the right,
+-- above or below.  The split direction of the first split is determined by the
+-- first layout parameter.  The split direction of the second step is rotated 90
+-- degrees relative to the first split direction according to the second layout
+-- parameter of type 'Rotation'.  So, if the first split is 'R' and the second
+-- layout parameter is 'CW', then the second split is 'D'.
+--
+-- For the 'Spiral' layout, the same 'Rotation' is used for computing the split
+-- direction of each step from the split direction of the previous step.  For
+-- example, parameters 'R' and 'CW' produces the direction sequence 'R', 'D',
+-- 'L', 'U', 'R', 'D', 'L', 'U', ...
+--
+-- For the 'Dwindle' layout, the 'Rotation' alternates between 'CW' and 'CCW' in
+-- each step.  For example, parameters 'U' and 'CCW' produce the direction
+-- sequence 'U', 'L', 'U', 'L', ... because 'L' is the 'CCW' rotation of 'U' and
+-- 'U' is the 'CW' rotation of 'L'.
+--
+-- In each split, the current rectangle is split so that the ratio between the
+-- size of the rectangle allocated to the current window and the size of the
+-- rectangle allocated to the remaining windows is the third layout parameter.
+-- This ratio can be altered using 'Expand' and 'Shrink' messages.  The former
+-- multiplies the ratio by the fourth layout parameter.  The latter divides the
+-- ratio by this parameter.
+--
+-- Parameters for both layouts:
+--
+-- * First split direction
+--
+-- * First split rotation
+--
+-- * Size ratio between rectangle allocated to current window and rectangle 
+-- allocated to remaining windows
+--
+-- * Factor by which the size ratio is changed in response to 'Expand' or 'Shrink'
+-- messages
+data Dwindle a = Dwindle !Direction !Rotation !Rational !Rational
+               | Spiral  !Direction !Rotation !Rational !Rational
+               deriving (Read, Show)
+
+-- | Split directions
+data Direction = L | R | U | D
+               deriving (Read, Show)
+
+-- | Rotation between consecutive split directions
+data Rotation = CW | CCW
+              deriving (Read, Show)
+
+instance LayoutClass Dwindle a where
+    pureLayout (Dwindle dir rot ratio _) = dwindle alternate dir rot ratio
+    pureLayout (Spiral  dir rot ratio _) = dwindle rotate    dir rot ratio
+    pureMessage (Dwindle dir rot ratio delta) =
+      fmap (\ratio' -> Dwindle dir rot ratio' delta) . changeRatio ratio delta
+    pureMessage (Spiral dir rot ratio delta) =
+      fmap (\ratio' -> Spiral dir rot ratio' delta) . changeRatio ratio delta
+
+changeRatio :: Rational -> Rational -> SomeMessage -> Maybe Rational
+changeRatio ratio delta = fmap f . fromMessage
+  where f Expand = ratio * delta
+        f Shrink = ratio / delta
+
+dwindle :: AxesGenerator -> Direction -> Rotation -> Rational -> Rectangle -> Stack a -> 
+           [(a, Rectangle)]
+dwindle trans dir rot ratio rect st = unfoldr genRects (integrate st, rect, dirAxes dir, rot)
+  where genRects ([],     _, _, _)  = Nothing
+        genRects ([w],    r, a, rt) = Just ((w, r),  ([], r,   a,  rt))
+        genRects ((w:ws), r, a, rt) = Just ((w, r'), (ws, r'', a', rt'))
+          where (r', r'') = splitRect r ratio a
+                (a', rt') = trans a rt
+
+dbg :: AxesGenerator -> Direction -> Rotation -> Rational -> Rectangle -> [a] -> 
+       [(a, Rectangle)]
+dbg trans dir rot ratio rect st = unfoldr genRects (st, rect, dirAxes dir, rot)
+  where genRects ([],     _, _, _)  = Nothing
+        genRects ([w],    r, a, rt) = Just ((w, r),  ([], r,   a,  rt))
+        genRects ((w:ws), r, a, rt) = Just ((w, r'), (ws, r'', a', rt'))
+          where (r', r'') = splitRect r ratio a
+                (a', rt') = trans a rt
+
+splitRect :: Rectangle -> Rational -> Axes -> (Rectangle, Rectangle)
+splitRect (Rectangle x y w h) ratio (ax, ay) = (Rectangle x' y' w' h', Rectangle x'' y'' w'' h'')
+  where portion = ratio / (ratio + 1)
+        w1  = (round $ fi w * portion) :: Int
+        w2  = fi w - w1
+        h1  = (round $ fi h * portion) :: Int
+        h2  = fi h - h1
+        x'  = x + fi (negate ax * (1 - ax) * w2 `div` 2)
+        y'  = y + fi (negate ay * (1 - ay) * h2 `div` 2)
+        w'  = fi $ w1 + (1 - abs ax) * w2
+        h'  = fi $ h1 + (1 - abs ay) * h2
+        x'' = x + fi (ax * (1 + ax) * w1 `div` 2)
+        y'' = y + fi (ay * (1 + ay) * h1 `div` 2)
+        w'' = fi $ w2 + (1 - abs ax) * w1
+        h'' = fi $ h2 + (1 - abs ay) * h1
+        fi :: (Num b, Integral a) => a -> b
+        fi  = fromIntegral
+
+type Axes          = (Int, Int)
+type AxesGenerator = Axes -> Rotation -> (Axes, Rotation)
+
+dirAxes :: Direction -> Axes
+dirAxes L = (-1,  0)
+dirAxes R = ( 1,  0)
+dirAxes U = ( 0, -1)
+dirAxes D = ( 0,  1)
+
+alternate :: AxesGenerator
+alternate = chDir alt
+
+rotate :: AxesGenerator
+rotate = chDir id
+
+chDir :: (Rotation -> Rotation) -> AxesGenerator
+chDir f (x, y) r = (a' r, r')
+  where a' CW  = (-y,  x)
+        a' CCW = ( y, -x)
+        r' = f r
+
+alt :: Rotation -> Rotation
+alt CW  = CCW
+alt CCW = CW
hunk ./xmonad-contrib.cabal 207
                         XMonad.Layout.DraggingVisualizer
                         XMonad.Layout.DragPane
                         XMonad.Layout.Drawer
+                        XMonad.Layout.Dwindle
                         XMonad.Layout.DwmStyle
                         XMonad.Layout.FixedColumn
                         XMonad.Layout.Fullscreen
}

Context:

[X.C.Prime: doc tweaks
Devin Mullins <devin.mullins@gmail.com>**20141002075939
 Ignore-this: 20d6b829b810f48b5e4b4c161b39b312
] 
[X.A.Navigation2D: add convenience functions for setting config & keybindings
Devin Mullins <devin.mullins@gmail.com>**20141002075757
 Ignore-this: ed01137f03a531f73315ed503d1eb6ef
 1. Added 'additionalNav2DKeys' which adds keybindings for the cartesian product
    of direction keys and (modifier, action) pairs given.
 2. Added 'navigation2D' which combines that with 'withNavigation2DConfig'.
 3. Added 'additionalNav2DKeysP' and 'navigation2DP' which do the same, but use
    the 'additionalKeysP' syntax.
] 
[X.C.Prime: doc fixes
Devin Mullins <devinmullins@gmail.com>**20141001075855
 Ignore-this: dbbe00791b04df61dcd595c50333fba
] 
[X.C.Prime: add 'withScreens' and friends
Devin Mullins <devinmullins@gmail.com>**20141001075250
 Ignore-this: eba37b1ff3da265a4dcc509f538fce4d
 The screen equivalent of 'withWorkspaces' lets you more easily define keys that
 move/swap between screens.
 
 Also, rename wsKeyspecs to wsKeys, and make a couple of doc tweaks.
] 
[Implement proper handling of dynamically changing hostname
Anton Vorontsov <anton@enomsg.org>**20140901072158
 Ignore-this: 2aeac6d2161e666d40cda6a09f78b208
 
 The module implements a proper way of finding out whether the window is
 remote or local.
 
 Just checking for a hostname and WM_CLIENT_MACHINE being equal is often
 not enough because the hostname is a changing subject (without any
 established notification mechanisms), and thus WM_CLIENT_MACHINE and the
 hostname can diverge even for a local window.
 
 This module solves the problem. As soon as there is a new window created,
 we check the hostname and WM_CLIENT_MACHINE, and then we cache the result
 into the XMONAD_REMOTE property.
 
 Notice that XMonad itself does not know anything about hostnames, nor does
 it have any dependency on Network.* modules. For this module it is not a
 problem: you can provide a mean to get the hostname through your config
 file (see usage). Or, if you don't like the hassle of handling dynamic
 hostnames (suppose your hostname never changes), it is also fine: this
 module will fallback to using environment variables.
] 
[Add Stoppable layout for power saving
Anton Vorontsov <anton@enomsg.org>**20140901072141
 Ignore-this: a52805d9f3095cd7af48507847ed2fe3
 
 This module implements a special kind of layout modifier, which when
 applied to a layout, causes xmonad to stop all non-visible processes. In a
 way, this is a sledge-hammer for applications that drain power. For
 example, given a web browser on a stoppable workspace, once the workspace
 is hidden the web browser will be stopped.
 
 Note that the stopped application won't be able to communicate with X11
 clipboard. For this, the module actually stops applications after a
 certain delay, giving a chance for a user to complete copy-paste sequence.
 By default, the delay equals to 15 seconds, it is configurable via
 'Stoppable' constructor.
 
 The stoppable modifier prepends a mark (by default equals to "Stoppable")
 to the layout description (alternatively, you can choose your own mark and
 use it with 'Stoppable' constructor). The stoppable layout (identified by
 a mark) spans to multiple workspaces, letting you to create groups of
 stoppable workspaces that only stop processes when none of the workspaces
 are visible, and conversely, unfreezing all processes even if one of the
 stoppable workspaces are visible.
 
 To stop the process we use signals, which works for most cases. For
 processes that tinker with signal handling (debuggers), another
 (Linux-centric) approach may be used. See
 https://www.kernel.org/doc/Documentation/cgroups/freezer-subsystem.txt
] 
[X.C.Prime: doc changes
Devin Mullins <devinmullins@gmail.com>**20140925203037
 Ignore-this: 51204c1a9f2e6ed21228d2910417fd21
] 
[X.C.Prime: add withWorkspaces et al.
Devin Mullins <devinmullins@gmail.com>**20140925203034
 Ignore-this: 65f691270110cc5de13c950d9dcb0c17
 This allows easier configuration of workspaces and their keybindings. Required
 generalizing the 'Prime' type, so lots of other lines changed in rather trivial
 ways.
] 
[X.C.Prime: add ifThenElse binding
Devin Mullins <devinmullins@gmail.com>**20140924191509
 Ignore-this: ae775c418c27301b9c12d2a233502cec
 This is necessary for if-then-else support in the user's config.
] 
[X.C.Prime: doc fixes
Devin Mullins <devinmullins@gmail.com>**20140915080601
 Ignore-this: 15e3c445a99d3b2d3a235aa76119797
] 
[X.C.Prime: fix 'def' hyperlink in doc
Devin Mullins <devinmullins@gmail.com>**20140914075352
 Ignore-this: a1de1d81a5f140ab7d90edbf393e9bda
] 
[XMonad.Config.Prime, a do-notation for config
Devin Mullins <devinmullins@gmail.com>**20140914064828
 Ignore-this: f7397aa6e6efe5d76acebfa22c567baa
 Note that the use of RebindableSyntax is because of the need to vary the
 layoutHook type throughout the config. The alternative, using the existential
 Layout type, was rejected because it required TemplateHaskell in order to look
 nice, and TemplateHaskell is not portable.
 
 I've tried to make a version of (>>) that also worked on normal monads, but
 have had no luck as of yet. Maybe some intrepid soul can add it later.
] 
[X.P.Shell: fix doc typo
me@twifkak.com**20130317115516
 Ignore-this: bdd385a9142ed039a917d135e76293fe
] 
[reverse workspaces, so that switching to a dynamic workspace group restores the focus to the screen that was focused at group creation time
nwfilardo@gmail.com**20140913174118
 Ignore-this: b74c02b1892159694827e35122c2d517
] 
[add filepath dependency, needed by new X.P.Pass module
me@twifkak.com**20140913070926
 Ignore-this: fec97086c1e66cf8a036265bd1a970a8
] 
[add-new-xmonad-prompt-pass
eniotna.t@gmail.com**20140829131928
 Ignore-this: 11e85dfe3d24cef88d8d89f4e7b1ec0b
 This module provides 3 <XMonad.Prompt> to ease passwords manipulation (generate, read, remove):
 
 - one to lookup passwords in the password-storage.
 
 - one to generate a password for a given password label that the user inputs.
 
 - one to delete a stored password for a given password label that the user inputs.
 
 All those prompts benefit from the completion system provided by the module <XMonad.Prompt>.
 
 The password store is setuped through an environment variable PASSWORD_STORE_DIR.
 If this is set, use the content of the variable.
 Otherwise, the password store is located on user's home @$HOME\/.password-store@.
 
 
 Source:
 
 - The password storage implementation is <http://git.zx2c4.com/password-store the password-store cli>.
 
 - Inspired from <http://babushk.in/posts/combining-xmonad-and-pass.html>
] 
[use Data.Map instead of Data.Map.Strict to support containers < 0.5
Adam Vogt <vogt.adam@gmail.com>**20140815043141
 Ignore-this: 436d18657d8499f4ce57311e84503d9f
] 
[config-mate
allbery.b@gmail.com**20140803020659
 Ignore-this: d5de258c0a28cd5ba64a59cf37cd480a
 Initial support for the Mate desktop environment (http://mate-desktop.org).
 Based on existing Gnome 2 support, since Mate is a maintained fork of
 Gnome 2.
] 
[debug-managehook
allbery.b@gmail.com**20140803020601
 Ignore-this: 51f9255b496cca79e4a53e274c400ecc
 A set of hooks, and convenience combinators, to help with ManageHook debugging.
 Ordinary users may well want to use debugManageHookOn in normal configs,
 specifying a key sequence which can be pressed before running a command in
 order to capture debug information just for that command's main window.
 
 This is especially useful when trying to diagnose issues such as programs
 that do not play well with SpawnOn, or ManageHook matching on 'title' when
 the program does not set the window title until after it is mapped.
] 
[debug-debug
allbery.b@gmail.com**20140803020530
 Ignore-this: cbb2b1d99293e3a4d02a256c2733aeb0
 Various fixes and enhancements to DebugWindow and DebugStack. ManageDebug
 requires these fixes, but some of them are significant even if not using
 ManageDebug.
] 
[derive Applicative instances to suppress AMP warning
Adam Vogt <vogt.adam@gmail.com>**20140710163950
 Ignore-this: c2110d07bccc61462c3fbf73c900aaa1
] 
[clean up cabal file and drop support for base < 3
Adam Vogt <vogt.adam@gmail.com>**20140710013255
 Ignore-this: 76b142e2b114604feac9b8e41cf71ab
] 
[add-duck-duck-go-search-engine
eniotna.t@gmail.com**20140617174246
 Ignore-this: 29bbfb2d07d9ddf36bf0268a4e255f81
] 
[XSelection: getSelection: fix connection exhaustion bug (issue #573); include warning
gwern@gwern.net**20140601025019
 Ignore-this: add21190fc07338b243c2241cc746119
] 
[Fix dbus-send call in XMonad.Config.Gnome
md143rbh7f@gmail.com**20140129032114
 Ignore-this: ed62458b55c8b34b77f73027eeee1a73
 dbus-send --print-reply=string is invalid, but it was silently ignored until recently:
 http://cgit.freedesktop.org/dbus/dbus/commit/tools/dbus-send.c?id=c690ee4351f99ed5e629ffcf5f4a2edcd418d103
 I've changed XMonad.Config.Gnome to run --print-reply=literal, since that's what the old behavior was.
] 
[warning police (unused variables)
Adam Vogt <vogt.adam@gmail.com>**20140505001242
 Ignore-this: a15b4d844b1da4f1f1f9b6095c968705
] 
[This patch makes the Ssh extension works with **user** arguments in ssh, .e.g ssh admin@localhost.
linxray@gmail.com**20140504091120
 Ignore-this: 297673e11d3049c4f127aac3e172d361
] 
[remove trailing whitespace in L.BinarySpacePartition
Adam Vogt <vogt.adam@gmail.com>**20140501011943
 Ignore-this: 8dd677978992e0854801b8f254463dc2
] 
[replace Bound with the equivalent Direction2D
Adam Vogt <vogt.adam@gmail.com>**20140501011540
 Ignore-this: b1f1c256aba07f70918fe1d693c8087b
] 
[remove unused extension in BSP
Adam Vogt <vogt.adam@gmail.com>**20140501011455
 Ignore-this: a4962486b2aa3980536bff19a537451e
] 
[Add BinarySpacePartition layout 
benweitzman@gmail.com**20140430205848
 Ignore-this: a85d1dc51bf54c59ae2bd9d948cc1088
] 
[X.Actions.DynamicWorkspaceGroups: export new function addRawWSGroup
Brent Yorgey <byorgey@cis.upenn.edu>**20140428142901
 Ignore-this: a487882c9571bf91ff921d6561bb4cc6
] 
[Remove unneeded context with the IfMax layout instance
Adam Vogt <vogt.adam@gmail.com>**20140422221105
 Ignore-this: 3b8ac316f56df6a84420754db769fb0
 
 Extra constraints on instances are about as useful as -XDataTypeContexts
] 
[Adding side tabs and replacing TabbarLocation with Direction2D.
nrujac@gmail.com**20140219200811
 Ignore-this: edabeec973b4e0d61515818367689843
] 
[warning police
Daniel Wagner <daniel@wagner-home.com>**20140316183747
 Ignore-this: fd16435ccdd3fee8924723cc690cc239
] 
[New module: XMonad.Util.WindowState
Dmitry Bogatov <KAction@gnu.org>**20140218100229
 Ignore-this: 14a6fa263c423cd8cca3b2645b3930d7
 
 Save almost arbitary data per window 
] 
[Add side tabs to the tabbed layout.
nrujac@gmail.com**20140213215247
 Ignore-this: f81bafe9cb75a30ed6bbbe68cf5d66c0
] 
[SpawnNamedPipe hlint cleanup
cwills.dev@gmail.com**20140202213613
 Ignore-this: dbb68c4c5522026bd108d0158e747b48
] 
[document and cleanup SpawnNamedPipe
cwills.dev@gmail.com**20140202211000
 Ignore-this: b264278f1f1ab1f18b37245a5ff33136
] 
[Added SpawnNamedPipe
cwills.dev@gmail.com**20140202143415
 Ignore-this: 87797ffffc8d0fd088482bd0c5baf0e
] 
[Make commandToComplete in XMonad.Prompt.Shell complete last word
md143rbh7f@gmail.com**20140130200050
 Ignore-this: b0fe22fdd7b9409835fd0ca069f2e01a
 
 The following change from 2013-02-09 breaks shell completion for me:
     hunk ./XMonad/Prompt/Shell.hs 65
     +    commandToComplete _ c = c
 
 It seems to be passing the entire string into compgen in order to get the file completions, but it should only pass the last word. I propose reverting this change. Comments are appreciated.
] 
[expose and document X.L.IndependentScreens.marshallSort
Daniel Wagner <daniel@wagner-home.com>**20140128212844
 Ignore-this: 90c1437c6ffe1dbd8f4a4ed192097ec
] 
[ServerMode properly indent
Adam Vogt <vogt.adam@gmail.com>**20131219201440
 Ignore-this: 761b39c3e3c90b6123f068e8b1d34e5d
] 
[remove ServerMode tabs
Adam Vogt <vogt.adam@gmail.com>**20131219201000
 Ignore-this: f21448c248ec0ac289c309ed964ebcff
] 
[fix -Wall ServerMode
Adam Vogt <vogt.adam@gmail.com>**20131219181030
 Ignore-this: 708dd5fc60f43dee3d1da085002052f
] 
[documentation note that ServerMode is similar to wmctrl
Adam Vogt <vogt.adam@gmail.com>**20131219180748
 Ignore-this: 3215bdf1c698c798eca8ed7f62a0f591
] 
[Generalized XMonad.Hooks.ServerMode
polson2@hawk.iit.edu**20131216025100
 Ignore-this: e58da3b168a1058f32982833ea25a739
] 
[IfMax-Layout
Ilya Portnov <portnov84@rambler.ru>**20131201072634
 Ignore-this: dac53f2a0505e740f05fdf03f1db0c21
 This adds a new ("conditional") layout, IfMax, which simply runs one layout, if there are <= N windows, and else runs another layout.
] 
[fix UrgencyHook and add filterUrgencyHook
Adam Vogt <vogt.adam@gmail.com>**20130924224738
 Ignore-this: 3b7c62275701e6758397977c5c09b744
] 
[export XMonad.Hooks.UrgencyHook.clearUrgency (issue 533)
Adam Vogt <vogt.adam@gmail.com>**20130923031349
 Ignore-this: dafe5763d9abcfa606f5c1a8cf5c57d6
] 
[minor documentation fix: manageDocks doesn't do anything with struts, so don't claim it does
Daniel Wagner <daniel@wagner-home.com>**20130814125106
 Ignore-this: a2610d6c1318ac0977abfc21d1b91632
] 
[don't pretend to be LG3D in X.C.Dmwit because this confuses modern GTK
Daniel Wagner <daniel@wagner-home.com>**20130813211636
 Ignore-this: 8f728dc1b4bf5e472d99419cc5920e51
] 
[XMonad.Actions.UpdatePointer: generalise updatePointer
Liyang HU <git@liyang.hu>**20130730071007
 Ignore-this: 3374a62b6c63dcc152dbf843cd0577f0
 
] 
[XMonad.Actions.UpdatePointer: document TowardsCentre
Liyang HU <git@liyang.hu>**20130730053746
 Ignore-this: 2d684b12e4fff0ebec254bea4a4546a3
 
] 
[Haddock formatting in H.Minimize
Adam Vogt <vogt.adam@gmail.com>**20130723155658
 Ignore-this: 5db3186a51dec58f78954466ded339cb
] 
[Bump version (and xmonad dependency) to 0.12
Adam Vogt <vogt.adam@gmail.com>**20130720205857
 Ignore-this: ce165178ca916223501f266339f1de39
 
 This makes a breakage due to missing patches in core a bit more obvious.
 Previously you would have a build failure regarding some missing identifiers
 (def re-exported by XMonad from Data.Default), while after applying this patch
 it will be clear that xmonad-core needs to be updated.
] 
[Fix issue 551 by also getting manpath without -g flag.
Adam Vogt <vogt.adam@gmail.com>**20130716030536
 Ignore-this: ded2d51eb7b7697c0fdfaa8158d612df
 
 Instead of taking Ondrej's approach of figuring out which man (man-db or
 http://primates.ximian.com/~flucifredi/man/) is used by the system, just try
 both sets of flags.
] 
[Escape dzen markup and remove xmobar tags from window titles by default.
Adam Vogt <vogt.adam@gmail.com>**20130708144813
 Ignore-this: cf56bff752fbf78ea06d5c0cb755f615
 
 The issue was that window titles, such as those set by, for example a browser,
 could set the window title to display something like
 
    <action=malicious shell command>normal title</action>
 
 Which could be executed by xmobar (or dzen).
 
 This adds a ppTitleSanitize which does the above functions. This way when users
 override ppTitle, the benefits are not lost.
 
 Thanks to Raúl Benencia and Joachim Breitner for bringing this to my attention.
] 
[DynamicBars-use-ExtensibleState
gopsychonauts@gmail.com**20130618074755
 Ignore-this: afacba51af2be8ede65b9bcf9b002a7
 
 Hooks.DynamicBars was previously using an MVar and the unsafePerformIO hack (
 http://www.haskell.org/haskellwiki/Top_level_mutable_state ) to store bar
 state. Since ExtensibleState exists to solve these sorts of problems, I've
 switched the file over to use unsafePerformIO instead.
 
 Some functions' types had to be changed to allow access to XState, but the
 public API is unchanged.
 
] 
[Catch exceptions when finding commands on PATH in Prompt.Shell
Thomas Tuegel <ttuegel@gmail.com>**20130616230219
 Ignore-this: 5a4d08c80301864bc14ed784f1054c3f
] 
[Fix haddock parse error in X.A.LinkWorkspaces
Adam Vogt <vogt.adam@gmail.com>**20130528133448
 Ignore-this: 42f05cf8ca9e6d1ffae3bd20666d87ab
] 
[use Data.Default wherever possible, and deprecate the things it replaces
Daniel Wagner <daniel@wagner-home.com>**20130528013909
 Ignore-this: 898458b1d2868a70dfb09faf473dc7aa
] 
[eliminate references to defaultConfig
Daniel Wagner <daniel@wagner-home.com>**20130528005825
 Ignore-this: 37ae613e4b943e99c5200915b9d95e58
] 
[minimal change needed to get xmonad-contrib to build with xmonad's data-default patch
Daniel Wagner <daniel@wagner-home.com>**20130528001040
 Ignore-this: 291e4f6cd74fc2b808062e0369665170
] 
[Remove unneeded XSync call in Layout.ShowWName
Francesco Ariis <fa-ml@ariis.it>**20130517153341
 Ignore-this: 4d107c680572eff464c8f6ed9fabdd41
] 
[Remove misleading comment: we definitely don't support ghc-6.6 anymore
Adam Vogt <vogt.adam@gmail.com>**20130514215851
 Ignore-this: 2d071cb05709a16763d039222264b426
] 
[Fix module name in comment of X.L.Fullscreen
Adam Vogt <vogt.adam@gmail.com>**20130514215727
 Ignore-this: cb5cf18c301c5daf5e1a2527da1ef6bf
] 
[Minor update to cabal file (adding modules & maintainership)
Adam Vogt <vogt.adam@gmail.com>**20130514215632
 Ignore-this: 82785e02e544e1f797799bed5b5d9be2
] 
[Remove trailing whitespace in X.A.LinkWorkspaces
Adam Vogt <vogt.adam@gmail.com>**20130514215421
 Ignore-this: 5015ab4468e7931876eb66b019af804c
] 
[Update documentation of LinkWorkspaces Module
quesel@informatik.uni-oldenburg.de**20110328072813
 Ignore-this: da863534931181f551c9c54bc4076c05
] 
[Added a module for linking workspaces
quesel@informatik.uni-oldenburg.de**20110210165018
 Ignore-this: 1dba2164cc3387409873d33099596d91
 
 This module provides a way to link certain workspaces in a multihead setup.
 That way, when switching to the first one the other heads display the linked
 workspaces.
] 
[Cache results from calcGap in ManageDocks
Adam Vogt <vogt.adam@gmail.com>**20130425155811
 Ignore-this: e5076fdbdfc68bc159424dd4e0f14456
 
 http://www.haskell.org/pipermail/xmonad/2013-April/013670.html
] 
[Remove unnecessary contexts from L.MultiToggle
Adam Vogt <vogt.adam@gmail.com>**20130217163356
 Ignore-this: 6b0e413d8c3a58f62088c32a96c57c51
] 
[Generalises modWorkspace to take any layout-transforming function
gopsychonauts@gmail.com**20130501151425
 Ignore-this: 28c7dc1f6216bb1ebdffef5434ccbcbd
 
 modWorkspace already was capable of modifying the layout with an arbitrary
 layout -> layout function, but its original type restricted it such that it
 could only apply a single LayoutModifier; this was often inconvenient, as for
 example it was not possible simply to compose LayoutModifiers for use with
 modWorkspace.
 
 This patch also reimplements onWorkspaces in terms of modWorkspaces, since with
 the latter's less restrictive type this is now possible.
] 
[since XMonad.Config.Dmwit mentions xmobar, we should include the associated .xmobarrc file
Daniel Wagner <daniel@wagner-home.com>**20130503194055
 Ignore-this: 2f6d7536df81eb767262b79b60eb1b86
] 
[warning police
Daniel Wagner <daniel@wagner-home.com>**20130502012700
 Ignore-this: ae7412ac77c57492a7ad6c5f8f50b9eb
] 
[XMonad.Config.Dmwit
Daniel Wagner <daniel@wagner-home.com>**20130502012132
 Ignore-this: 7402161579fd2e191b60a057d955e5ea
] 
[minor fixes to the haddock markup in X.L.IndependentScreens
Daniel Wagner <daniel@wagner-home.com>**20130411193849
 Ignore-this: b6a139aa43fdb39fc1b86566c0c34c7a
] 
[add whenCurrentOn to X.L.IndependentScreens
Daniel Wagner <daniel@wagner-home.com>**20130408225251
 Ignore-this: ceea3d391f270abc9ed8e52ce19fb1ac
] 
[Allow to specify the initial gaps' states in X.L.Gaps
Paul Fertser <fercerpav@gmail.com>**20130222072232
 Ignore-this: 31596d918d0050e36ce3f64f56205a64
] 
[should bump X11 dependency, too, to make sure we have getAtomName
Daniel Wagner <daniel@wagner-home.com>**20130225180527
 Ignore-this: 260711f27551f18cc66afeb7b4846b9f
] 
[getAtomName is now defined in the X11 library
Daniel Wagner <daniel@wagner-home.com>**20130225180323
 Ignore-this: 3b9e17c234679e98752a47c37132ee4e
] 
[Allow to limit maximum row count in X.Prompt completion window
Paul Fertser <fercerpav@gmail.com>**20130221122050
 Ignore-this: 923656f02996f2de2b1336275392c5f9
 
 On a keyboard-less device (such as a smartphone), where one has to use
 an on-screen keyboard, the maximum completion window height must be
 limited to avoid overlapping the keyboard.
] 
[Note in U.NameActions that xmonad core can list default keys now
Adam Vogt <vogt.adam@gmail.com>**20130217233026
 Ignore-this: 937bff636fa88171932d5192fe8e290b
] 
[Export U.NamedActions.addDescrKeys per evaryont's request.
Adam Vogt <vogt.adam@gmail.com>**20130217232619
 Ignore-this: a694a0a3ece70b52fba6e8f688d86344
] 
[Add EWMH DEMANDS_ATTENTION support to UrgencyHook.
Maarten de Vries <maarten@de-vri.es>**20130212181229
 Ignore-this: 5a4b314d137676758fad9ec8f85ce422
 
 Add support for the _NET_WM_STATE_DEMANDS_ATTENTION atom
 by treating it the same way as the WM_HINTS urgency flag.
 
] 
[Unconditionally set _NET_WORKAREA in ManageDocks
Adam Vogt <vogt.adam@gmail.com>**20130117180851
 Ignore-this: 9f57e53fba9573d8a92cf153beb7fe7a
] 
[spawn command when no completion is available (if alwaysHighlight is True); changes commandToComplete in Prompt/Shell to complete the whole word instead of using getLastWord
c.lopez@kmels.net**20130209190456
 Ignore-this: ca7d354bb301b555b64d5e76e31d10e8
] 
[order-unindexed-ws-last
matthewhague@zoho.com**20120703222726
 Ignore-this: 4af8162ee8b16a60e8fd62fbc915d3c0
 
 Changes the WorkspaceCompare module's comparison by index to put workspaces without an index last (rather than first).
] 
[SpawnOn modification for issue 523
Adam Vogt <vogt.adam@gmail.com>**20130114014642
 Ignore-this: 703f7dc0f800366b752f0ec1cecb52e5
 
 This moves the function to help clean up the `Spawner' to the ManageHook
 rather than in functions like spawnOn. Probably it makes no difference, the
 reason is because there's one manageSpawn function but many different so this
 way there are less functions to write.
] 
[Update L.TrackFloating.useTransient example code
Adam Vogt <vogt.adam@gmail.com>**20130112041239
 Ignore-this: e4e31cf1db742778c1d59d52fdbeed7a
 
 Suggest useTransient goes to the right of trackFloating which is the
 configuration actually tested.
] 
[Adapt ideas of issue 306 patch to a new modifier in L.TrackFloating
Adam Vogt <vogt.adam@gmail.com>**20130112035701
 Ignore-this: d54d27b71b97144ef0660f910fd464aa
] 
[Make X.A.CycleWS not rely on hidden WS order
Dmitri Iouchtchenko <johnnyspoon@gmail.com>**20130109023328
 Ignore-this: 8717a154b33253c5df4e9a0ada4c2c3e
] 
[Add X.H.WorkspaceHistory
Dmitri Iouchtchenko <johnnyspoon@gmail.com>**20130109023307
 Ignore-this: c9e7ce33a944facc27481dde52c7cc80
] 
[Allow removing arbitrary workspaces
Dmitri Iouchtchenko <johnnyspoon@gmail.com>**20121231214343
 Ignore-this: 6fce4bd3d0c5337e5122158583138e74
] 
[Remove first-hidden restriction from X.A.DynamicWorkspaces.removeWorkspace'
Dmitri Iouchtchenko <johnnyspoon@gmail.com>**20121231214148
 Ignore-this: 55fb0859e9a5f476a834ecbdb774aac8
] 
[Add authorspellings file for `darcs show authors'.
Adam Vogt <vogt.adam@gmail.com>**20130101040031
 Ignore-this: c3198072ebc6a71d635bec4d8e2c78fd
 
 This authorspellings file includes a couple people who've contributed to xmonad
 (not XMonadContrib). When people have multiple addresses, the most recent one
 has been picked.
] 
[TAG 0.11
Adam Vogt <vogt.adam@gmail.com>**20130101014231
 Ignore-this: 57cf32412fd1ce912811cb7fafe930f5
] 
[bump cabal-version to satsify hackage
Adam Vogt <vogt.adam@gmail.com>**20130101014159
 Ignore-this: 1dd69577a60bae63362a42022764e5fd
] 
[bump version to 0.11
Adam Vogt <vogt.adam@gmail.com>**20121231104252
 Ignore-this: 8c57d0f366509655d0473adf802eb1ce
] 
[Add more metadata to cabal file
Adam Vogt <vogt.adam@gmail.com>**20121231184513
 Ignore-this: b7767194e905f2bbd918bb0d371f281
] 
[X.A.Workscreen make the whole module description show up for haddock
Adam Vogt <vogt.adam@gmail.com>**20121231024600
 Ignore-this: a2ac895989090322a849695068f812b5
] 
[Note that an alternative to XMonad.Actions.ShowText is X.U.Dzen
Adam Vogt <vogt.adam@gmail.com>**20121231023042
 Ignore-this: ae6476e5d33a559fd8503c44413311b8
] 
[Add X.A.DynamicWorkspaces.renameWorkspaceByName.
Dmitri Iouchtchenko <johnnyspoon@gmail.com>**20121227063531
 Ignore-this: 4b8aa0405de3969000b1a78eb12992
] 
[Change type of X.A.ShowText.handleTimerEvent so example code typechecks.
Adam Vogt <vogt.adam@gmail.com>**20121226013841
 Ignore-this: 3c58a9ff124ab02325df6f38e0eaec05
] 
[Describe arguments for X.A.ShowText.flashText
Adam Vogt <vogt.adam@gmail.com>**20121226013725
 Ignore-this: 7f00a11196115ebf814c616aaf8e96f
] 
[Add XMonad.Actions.ShowText
pastorelli.mario@gmail.com**20121225202635
 Ignore-this: 5f4818f7ec9ad37df58e73d4bb8b5590
] 
[Record polachok's fix for issue 507
Adam Vogt <vogt.adam@gmail.com>**20121216182724
 Ignore-this: 13743d035e50f642de017c3304f914e
] 
[Removes unused function spawnWithActions and redundant imports in XMonad.Actions.Launcher
c.lopez@kmels.net**20121215223714
 Ignore-this: 76d7ac195e186b491968a548a13889c
] 
[A.Launcher markup identifiers for haddock links
Adam Vogt <vogt.adam@gmail.com>**20121215165914
 Ignore-this: 2fd3fa1dd4e00d573dd359a4b6a7291b
] 
[Address warnings from Debug modules
Adam Vogt <vogt.adam@gmail.com>**20121215165525
 Ignore-this: f97416ae4feffe4e5f9916d14d9e1524
 
 The warnings were related to ghc-7.6 removing Prelude.catch
 (triggering warnings regarding the import hiding it), as well
 as defaulting of some numeric types.
] 
[Removes LocateMode and LocateRegexMode from XMonad.Actions.Launcher
c.lopez@kmels.net**20121214211230
 Ignore-this: b8ad32f23f15368a94202f9ad73995f2
] 
[debug-hooks
allbery.b@gmail.com**20120813223821
 Ignore-this: 7f41c93fdd6643c687598d2fe07aad5d
 Hooks to print diagnostic information to stderr (usually .xsession-errors)
 to help debug complex issues involving the StackSet and received events.
] 
[Remove trailing whitespace.
Adam Vogt <vogt.adam@gmail.com>**20121109014156
 Ignore-this: 72e3afb6e6df47c51262006601765365
] 
[Use Control.Exception.catch explitly to avoid warnings
Adam Vogt <vogt.adam@gmail.com>**20121109013506
 Ignore-this: 2cebdfe604c581f2b4a644e9aed726c7
 
 The base that comes with ghc-7.6.1 no longer includes Prelude.catch;
 so these modules were changed so that there is no warning for
 
 import Prelude hiding (catch)
 
 At the same time these changes should be compatible with older GHCs,
 since the catch being has never been the one in the Prelude.
] 
[Add missing type signatures.
Adam Vogt <vogt.adam@gmail.com>**20121109012752
 Ignore-this: f54f5d9907ae48d58c98de7f8eb1f8a
 
 For whatever reason, some patches applied were missing these signatures.
 While haddock has been able to include inferred signatures for a while,
 including type signatures makes it easier to see if and when types have
 been changed.
] 
[Rename variables "state" to avoid warnings about shadowing
Adam Vogt <vogt.adam@gmail.com>**20121109012316
 Ignore-this: cd063d632412f758ca9fed6393521c8f
 
 XMonad core re-exports Control.Monad.State, which includes
 a function "state" if you happen to use mtl-2. Since there's
 a chance xmonad still works with mtl-1 avoid imports like:
 
 import XMonad hiding (state)
] 
[Rename variable in L.Minimize to avoid shadowing.
Adam Vogt <vogt.adam@gmail.com>**20121109003410
 Ignore-this: b46d3e8e0d4106cea6966116be386677
 
 This "state" is new with a newer mtl.
] 
[Gut H.ICCCMFocus: issue 177 has been merged in core.
Adam Vogt <vogt.adam@gmail.com>**20121108225716
 Ignore-this: 937fe7f514ea6e36ee529e055e100e7f
 
 Keep the module for now: the LG3D bit might still be useful
 and there's no need to break configs unnecessarily.
] 
[ewmh-eventhook-custom
pastorelli.mario@gmail.com**20120816153032
 Ignore-this: 95176f6d955d74321c28caafda63faa0
 
 Add ewmhDesktopsEventHookCustom, a generalized version of ewmhDesktopsEventHook that takes a sort function as argument. This sort function should be the same used by the LogHook.
] 
[Added smart spacing to the spacing module
daedalusinfinity@gmail.com**20120923034527
 Ignore-this: 9104bc8feb832f63f2f18998c0f7ba92
 Added smart spacing to the spacing module, which adds spacing to all windows,
 except to windows on singleton workspaces.
] 
[Improves haddock documentation
c.lopez@kmels.net**20120826091716
 Ignore-this: a0ce4838652acfff7922c111e4d879bb
] 
[Improve comments, add an error throw that shouldn't happen
c.lopez@kmels.net**20120826085426
 Ignore-this: 7675070826b3c53499e4352e692d6036
] 
[fix a bug when ncompletions = nrows
c.lopez@kmels.net**20120826083137
 Ignore-this: 5f573028318473c333809217c271a81d
] 
[Fixes typos in Actions.Launcher haddock documentation
c.lopez@kmels.net**20120811112502
 Ignore-this: f8152c0ad59d2b0cc9a6c9061e83aaf0
] 
[Correctly get the autocompletion item when alwaysHighlight in XMonad.Prompt is True
c.lopez@kmels.net**20120811104805
 Ignore-this: fa2600df210c7d3472a797f19fb31a7
] 
[Removes warnings, adds a browser value for LauncherConfig in haddock comments
c.lopez@kmels.net**20120628114533
 Ignore-this: 2610cf63594db3df61bac52f3d8f5836
 
] 
[Changes on XPrompt:
c.lopez@kmels.net**20120628101749
 Ignore-this: 2384f5c1b886716b3d9785877c2e32f9
   
     * Adds mkPromptWithModes, creates a prompt given a list of modes (list of XPType).
 
     * Adds Setting `alwaysHighlight` to defaultXPConfig. When set to true, autocompletion always highlight the first result if it is not highlighted.
     
 Adds module XMonad.Actions.Launcher. This module allows to combine and switch between instances of XPrompt. It includes a default set of modes which require the programs `hoogle`, `locate` and `calc` to be installed to work properly.
 
] 
[accept more windows as docks
Daniel Wagner <daniel@wagner-home.com>**20120823124153
 Ignore-this: 21d9b406c7e39cca2cc60331aab04873
] 
[strip newlines from dmenu's returns to be compatible with the newest version of dmenu
longpoke@gmail.com**20120723212807
 Ignore-this: 3b11a35125d0bc23b33e0b926562f85a
] 
[A workscreen permits to display a set of workspaces on several
kedals0@gmail.com**20120706093308
 Ignore-this: 572ed3c3305205bfbcc17bb3fe2600a3
 screens. In xinerama mode, when a workscreen is viewed, workspaces
 associated to all screens are visible.
 
 The first workspace of a workscreen is displayed on first screen,
 second on second screen, etc. Workspace position can be easily
 changed. If the current workscreen is called again, workspaces are
 shifted.
 
 This also permits to see all workspaces of a workscreen even if just
 one screen is present, and to move windows from workspace to workscreen.
] 
[refer to the new name 'handleEventHook' instead of the old name 'eventHook' in X.L.Fullscreen documentation
Daniel Wagner <daniel@wagner-home.com>**20120618181003
 Ignore-this: bd3b26c758cf3993d5a93957bb6f3663
] 
[UrgencyHooks made available as Window -> X () functions
gopsychonauts@gmail.com**20120504062339
 Ignore-this: 6a57cae1d693109b7e27c6471d04f50f
 Adds an UrgencyHook instance for the type Window -> X (), allowing any such
 functions to be used directly as UrgencyHooks. The Show and Read constraints
 were removed from the UrgencyHook class in order to permit this; these
 constraints were required only in a historical implementation of the module,
 which used a layout modifier.
 
 All existing configurations using UrgencyHooks should remain fully functional.
 New configs may make use of this modification by declaring their UrgencyHook as
 a simple Window -> X () function.
 
] 
[updates to XMonad.Prompt re: word-oriented commands
Brent Yorgey <byorgey@cis.upenn.edu>**20120510174317
 Ignore-this: 138b5e8942fe4b55ad7e6ab24f17703f
 
   + change killWord and moveWord to have emacs-like behavior: first move
     past/kill consecutive whitespace, then move past/kill consecutive
     non-whitespace.
 
   + create variants killWord' and moveWord' which take a predicate
     specifying non-word characters.
 
   + create variants defaultXPKeymap' and emacsLikeXPKeymap' which take
     the same sort of predicate, which is applied to all keybindings with
     word-oriented commands.
] 
[Added isUnfocusedOnCurrentWS and fadeInactiveCurrentWSLogHook for better support of fading/opacity on multi monitor setups
Jesper Reenberg <jesper.reenberg@gmail.com>**20120329141818
 Ignore-this: d001a8aafbcdedae21ccd1d18f019185
] 
[Fixed X.A.GridSelect to be consistent in the way it (now) sorts the shown
Jesper Reenberg <jesper.reenberg@gmail.com>**20120501180415
 Ignore-this: 1d0991f9fb44e42f5d1c5a4f427ea661
 elements when modifying the searchString.
 
 The implemented ordering sorts based on how "deep the needle is in the
 haystack", meaning that searching for "st" in the elements "Install" and "Study"
 will order them as "Study" and "Install". Previously there was no ordering and
 when using GridSelect to select workspaces, the ordering was not consistent, as
 the list of workspaces (if not modified manually) is ordered by last used. In
 this case either "Study" or "Install" would come first depending on which
 workspace was last visited.
] 
[Use getXMonadDir to get the default xmonad directory.
Julia Jomantaite <julia.jomantaite@gmail.com>**20120501121427
 Ignore-this: a075433761488b76a58a193aeb4e4a25
] 
[Minor haddock formatting for X.L.OnHost and X.A.DynamicWorkspaceOrder
Adam Vogt <vogt.adam@gmail.com>**20120428194552
 Ignore-this: 843ec567e249cc96d51ca931f1e36514
] 
[Remove trailing whitespace.
Adam Vogt <vogt.adam@gmail.com>**20120428194048
 Ignore-this: d61584110954e84d3611ef3497a29725
] 
[Add emacs-like keys to browse history in XMonad.Prompt
Carlos Lopez-Camey <c.lopez@kmels.net>**20120421110737
 Ignore-this: b90345f72007d09a6b732b974c0faf79
] 
[Adds an emacs-like Keymap in XMonad.Prompt
Carlos Lopez-Camey <c.lopez@kmels.net>**20120421012335
 Ignore-this: f281b8ad01f3d21055e2d6de79af2d79
] 
[add 'withNthWorkspace' to DynamicWorkspaceOrder.
jakob@pipefour.org**20120407184640
 Ignore-this: f5f87ffe9ddf1a12fab775e6fb8e856f
 Note this is very similar to the function of the same name exported by
 DynamicWorkspaces.  Ultimately it would probably be cleaner to
 generalize the one in DynamicWorkspaces to accept an arbitrary
 workspace sort as a parameter; this is left as an exercise for future
 hackers.
] 
[XMonad.Layout.OnHost allows host-specific modifications to a layout, which
allbery.b@gmail.com**20120320030912
 Ignore-this: 4c0d5580e805ff9f40918308914f3bf9
 is otherwise very difficult to do.  Similarly to X.L.PerWorkspace, it provides
 onHost, onHosts, modHost, and modHosts layout modifiers.  It attempts to do
 smart hostname comparison, such that short names will be matched with short
 names and FQDNs with FQDNs.
 
 This module currently requires that $HOST be set in the environment.
 You can use System.Posix.Env.setEnv to do so in xmonad.hs if need be.
 (Properly, this should be done via the network library, but I'm trying to
 avoid adding that dependency.)  An alternative would be to shell out to
 get the name, but that has considerable portability hurdles.
] 
[Bump version to 0.10.1
Adam Vogt <vogt.adam@gmail.com>**20120320005311
 Ignore-this: f0608ffaa877f605eaa86c45a107a14d
 
 Raising the X11 dependency while keeping the xmonad version the same leads to
 problems where cabal install uses the dependency versions following hackage,
 not what is installed.
] 
[narrower BorderResize rectangles placed within border edges
Jens Petersen <juhp@community.haskell.org>**20120314064703
 Ignore-this: 3a43bbdb7f2317d702edafb231f58802
 
   Change the border resize rectangles to be narrower and only extend
   inside the window not outside.  Most window managers just seem to use
   the border decoration area for starting resizes which is often just 1 pixel
   wide but as a compromise the width is now 2 pixels (before it was 10!).
   The rectangles are now placed symmetrically within the border and window.
   This seems to work ok with PositionStoreFloat for the Bluetile config.
] 
[add-dynamic-bars-module
Ben Boeckel <mathstuf@gmail.com>**20120316002204
 Ignore-this: 41347c8f894d8d0b5095dfad86784cf4
 
 This adds the X.H.DynamicBars module. It allows per-screen status bars to be
 easily managed and dynamically handles the number of screens changing.
] 
[bump X11 dependency so that noModMask is available
Daniel Wagner <daniel@wagner-home.com>**20120316000302
 Ignore-this: 971a75dcad25f66848eef4174cd4ddd1
] 
[Paste.hs: rm noModMask, shifted definition to X11 binding (see previous email)
gwern0@gmail.com**20111203203038
 Ignore-this: dcd164ff8f8f135c8fdef08f42f9244d
] 
[GroupNavigation: fix import typo in usage
Jens Petersen <juhp@community.haskell.org>**20120312103349
 Ignore-this: 65367218ca50a33a37813469b4616f34
] 
[add sendToEmptyWorkspace to FindEmptyWorkspace
Jens Petersen <juhp@community.haskell.org>**20120312102331
 Ignore-this: 50e7992d80d2db43e4d0adf5c95e964f
 
 sendToEmptyWorkspace is like tagToEmptyWorkspace except
 it does not change workspace after moving the window.
] 
[xmonad-contrib.cabal: simplify xmonad dependency to >=0.10 && < 0.11
Jens Petersen <juhp@community.haskell.org>**20120312101800
 Ignore-this: 1ff5a0caa2a1e3487e9a0831e385b3d2
 
 Unless there is a particular reason for listing the lower and upper bounds
 separately then this seems simpler and cleaner.
] 
[ShowWName: Increase horizontal padding for flash
crodjer@gmail.com**20120305164517
 Ignore-this: de5fd30fad2630875c5c78091f07c324
 
 Currently the flash window width leaves a very small amount of padding. This
 patch adds some extra horizontal width, governed by text width and length.
] 
[persist-togglehook-options
Ben Boeckel <mathstuf@gmail.com>**20120311050143
 Ignore-this: 580bacb35b617c1198f01c5a7c0d3fef
 
 Save the state of ToggleHook options over a restart.
] 
[ShowWName flash window background color
Rohan Jain <crodjer@gmail.com>**20120306065224
 Ignore-this: 9cd8fcfc13cc326b9dcc79ef3cc21b26
 
 While calling paintAndWrite for flash window, the background color from config
 should also be passed on as window background in addition to as text background
 color. Otherwise the window color gets set to the default black which shows up
 when text cannot span whole of the window.
 
 This issue becomes visible when the font size is considerably large or even in
 small size with truetype fonts.
] 
[ShowWName: Fix flash location by screen rectangle
crodjer@gmail.com**20120305161240
 Ignore-this: 83ec4cce2297efc6736a1fe55f44ee73
 
 In case of using this hook with multiple monitors, the Tag flash was not
 following the screen's coordinates. This patch shifts the new window created for
 flash according to the Rectangle defined by the screen.
] 
[Fix typo in tabbed layout link for font utils docs
crodjer@gmail.com**20120229070022
 Ignore-this: 2f7e90269e08ce08264d7b1d05bb16f9
] 
[L.WorkspaceDir: cleanup redundant {definitions,imports}
Steffen Schuldenzucker <sschuldenzucker@uni-bonn.de>**20120229112124
 Ignore-this: 7a796b18a64e693e071e9ea3a6a01aa3
] 
[fix L.WorkspaceDir special char handling: remove "echo -n" processing
Steffen Schuldenzucker <sschuldenzucker@uni-bonn.de>**20120227122004
 Ignore-this: ab48687eb4c9018312089a13fd25ecd8
] 
[Add BorderUrgencyHook to XMonad.Hooks.UrgencyHook
allbery.b@gmail.com**20120225082616
 Ignore-this: 9fac77914ff28a6e9eb830e8c9c7e21e
 BorderUrgencyHook is a new UrgencyHook usable with withUrgencyHook or
 withUrgencyHookC; it allows an urgent window to be given a different
 border color.  This may not always work as intended, since UrgencyHook
 likes to assume that a window being visible is sufficient to disable
 urgency notification; but with suppressWhen = Never it may work well
 enough.
 
 There is a report that if a new window is created at the wrong time,
 the wrong window may be marked urgent somehow.  I seem to once again
 be revealing bugs in underlying packages, although a quick examination
 of X.H.UrgencyHook doesn't seem to show any way for the wrong window
 to be selected.
] 
[Adding use case for namedScratchpad.
nicolas.dudebout@gatech.edu**20120122235843
 Ignore-this: 44201e82bcd708cd7098f060345400f1
] 
[Actions.WindowGo: typo fix - trim 's' per cub.uanic https://code.google.com/p/xmonad/issues/detail?id=491
gwern0@gmail.com**20120116224244
 Ignore-this: fb1d55c1b4609069c55f13523c091260
] 
[XMonad.Actions.PhysicalScreens: fix typo spotted by Chris Pick <haskell@chrispick.com>
gwern0@gmail.com**20120115223013
 Ignore-this: eb73b33b07dc58a36d3aa00bc8ac31c2
] 
[roll back previous incorrect fix
Daniel Wagner <daniel@wagner-home.com>**20120111214133
 Ignore-this: 91496faef411e6ae3442498b528d119b
] 
[Extending: fix http://code.google.com/p/xmonad/issues/detail?id=490
gwern0@gmail.com**20120111211907
 Ignore-this: 515afbed507c070d60ab547e98682f12
] 
[another documentation patch: XMonadContrib.UpdatePointer -> XMonad.Actions.UpdatePointer
Daniel Wagner <daniel@wagner-home.com>**20120111211226
 Ignore-this: 1444e4a3f20ba442602ef1811d0b32c7
] 
[documentation patch, fixes issue 490
Daniel Wagner <daniel@wagner-home.com>**20120111210832
 Ignore-this: 8d899e15f9d1a657e9fc687e2f649f45
] 
[X.H.EwmhDesktops note that fullscreenEventHook is not included in ewmh
Adam Vogt <vogt.adam@gmail.com>**20120102211404
 Ignore-this: 92f15fa93877c165158c8fbd24aa2360
 
 Just a documentation fix (nomeata's suggestion at issue 339).
] 
[X.H.EwmhDesktops haddock formatting.
Adam Vogt <vogt.adam@gmail.com>**20120102211203
 Ignore-this: cfff985e4034e06a0fe27c52c9971901
] 
[X.A.Navigation2D
Norbert Zeh <nzeh@cs.dal.ca>**20111208205842
 Ignore-this: 3860cc71bfc08d99bd8279c2e0945186
 
 This is a new module to support directional navigation across multiple screens.
 As such it is related to X.A.WindowNavigation and X.L.WindowNavigation, but it
 is more general.  For a detailed discussion of the differences, see
 http://www.cs.dal.ca/~nzeh/xmonad/Navigation2D.pdf.
] 
[documentation patch: mention PostfixOperators
Daniel Wagner <daniel@wagner-home.com>**20111210234820
 Ignore-this: 20a05b1f396f18a742346d6e3daea9a8
] 
[P.Shell documentation and add missing unsafePrompt export
Adam Vogt <vogt.adam@gmail.com>**20111207163951
 Ignore-this: a03992ffdc9c1a0f5bfa6dafc453b587
 
 Haddock (version 2.9.2 at least) does not attach documentation to any of a b or
 c when given:
 
     -- | documentation
     a,b,c :: X
 
] 
[Paste: 3 more escaped characters from alistra
gwern0@gmail.com**20111129160335
 Ignore-this: 46f5b86a25bcd2b26d2e07ed33ffad68
] 
[unfuck X.U.Paste
Daniel Wagner <daniel@wagner-home.com>**20111129032331
 Ignore-this: d450e23ca026143bb6ca9d744dcdd906
] 
[XMonad.Util.Paste: +alistra's patch for fixing his pasting of things like email address (@)
gwern0@gmail.com**20111128215648
 Ignore-this: 4af1af27637fe056792aa4f3bb0403eb
] 
[XMonad.Util.Paste: rm myself from maintainer field; I don't know how to fix any of it even if I wanted
gwern0@gmail.com**20111128213001
 Ignore-this: 87a4996aaa5241428ccb13851c5eb455
] 
[XMonad.Prompt.Shell: improve 'env' documentation to cover goodgrue's problem
gwern0@gmail.com**20111127231507
 Ignore-this: 7b652a280960cbdf99c236496ca091b0
] 
[Fix spelling 'prefered' -> 'preferred'.
Erik de Castro Lopo <erikd@mega-nerd.com>**20111125010229
 Ignore-this: f2eac1728b5e023399188becf867a14d
] 
[Restore TrackFloating behavior to an earlier version.
Adam Vogt <vogt.adam@gmail.com>**20111120045538
 Ignore-this: 1a1367b4171c3ad23b0553766021629f
 
 Thanks for liskni_si for pressing the matter: without this change it is very
 broken, with the patch it is still not perfect but still useful.
] 
[Explicitly list test files in .cabal
Adam Vogt <vogt.adam@gmail.com>**20111118232511
 Ignore-this: ac48a0d388293cc6c771d676aaf142e3
 
 In the future, require Cabal >= 1.6 to be able to just write tests/*.hs
] 
[TAG 0.10
Adam Vogt <vogt.adam@gmail.com>**20111118225640
 Ignore-this: 8f81b175b902e985d584160fc41ab7d1
] 
Patch bundle hash:
4e7d265544ac7842607fd8590b3991f46b9934aa
