
New patches:

[Add ConstrainedResize module
Dougal Stanton <dougal@dougalstanton.net>**20071019173508
 Constrain the aspect ratio of floated windows by holding down shift
] {
addfile ./ConstrainedResize.hs
hunk ./ConstrainedResize.hs 1
+-----------------------------------------------------------------------------
+-- |
+-- Module      :  XMonadContrib.ConstrainedResize
+-- Copyright   :  (c) Dougal Stanton
+-- License     :  BSD3-style (see LICENSE)
+-- 
+-- Maintainer  :  <dougal@dougalstanton.net>
+-- Stability   :  unstable
+-- Portability :  unportable
+--
+-- Lets you constrain the aspect ratio of a floating
+-- window by holding shift while you resize.
+--
+-- Useful for making a nice circular XClock window.
+--
+-----------------------------------------------------------------------------
+
+module XMonadContrib.ConstrainedResize (
+	-- * Usage
+	-- $usage
+	XMonadContrib.ConstrainedResize.mouseResizeWindow
+) where
+
+import XMonad
+import Operations
+import Graphics.X11.Xlib
+import Graphics.X11.Xlib.Extras
+
+-- $usage
+-- Put something like this in your Config.hs file:
+--
+-- > import qualified XMonadContrib.ConstrainedResize as Sqr
+-- > mouseBindings = M.fromList
+-- >     [ ...
+-- >     , ((modMask, button3),               (\w -> focus w >> Sqr.mouseResizeWindow w False))
+-- >     , ((modMask .|. shiftMask, button3), (\w -> focus w >> Sqr.mouseResizeWindow w True )) ]
+
+-- %import qualified XMonadContrib.ConstrainedResize as Sqr
+-- %mousebind , ((modMask, button3), (\\w -> focus w >> Sqr.mouseResizeWindow w False))
+
+-- | Resize (floating) window with optional aspect ratio constraints.
+mouseResizeWindow :: Window -> Bool -> X ()
+mouseResizeWindow w c = whenX (isClient w) $ withDisplay $ \d -> do
+    io $ raiseWindow d w
+    wa <- io $ getWindowAttributes d w
+    sh <- io $ getWMNormalHints d w
+    io $ warpPointer d none w 0 0 0 0 (fromIntegral (wa_width wa)) (fromIntegral (wa_height wa))
+    mouseDrag (\ex ey -> do
+                 let x = ex - fromIntegral (wa_x wa)
+                     y = ey - fromIntegral (wa_y wa)
+                     sz = if c then (max x y, max x y) else (x,y)
+                 io $ resizeWindow d w `uncurry`
+                    applySizeHints sh sz)
+              (float w)
hunk ./MetaModule.hs 27
+import XMonadContrib.ConstrainedResize
}

[Comments for ConstrainedResize
Dougal Stanton <dougal@dougalstanton.net>**20071020092509] {
hunk ./ConstrainedResize.hs 37
+--
+-- The line without the shiftMask replaces the standard mouse resize function call, so it's
+-- not completely necessary but seems neater this way.
hunk ./ConstrainedResize.hs 43
+-- %mousebind , ((modMask .|. shiftMask, button3), (\\w -> focus w >> Sqr.mouseResizeWindow w True))
}

Context:

[add ToggleLayouts module.
David Roundy <droundy@darcs.net>**20071018214525] 
[default to empty description for layout modifiers.
David Roundy <droundy@darcs.net>**20071018202604
 This is because modifierDescription is designed to be human-readable,
 and show rarely creates a human-readable description.  And in many (if
 not most) cases, an empty description is precisely what we want.
] 
[beautify description code for empty modifier-description.
David Roundy <droundy@darcs.net>**20071018202438] 
[change definition of 'description' function for LayoutModifier so an extra space is not added if the modifier description is empty.
Brent Yorgey <byorgey@gmail.com>**20071018183054] 
[-Wall police
l.mai@web.de**20071018033000] 
[DynamicLog.hs: Add dzenColor
Eric Mertens <emertens@galois.com>**20071018174523] 
[add function to rename workspaces.
David Roundy <droundy@darcs.net>**20071018145604] 
[fix WindowNavigation comment
l.mai@web.de**20071018054315] 
[change example to dzenUrgencyHook
Devin Mullins <me@twifkak.com>**20071018022026] 
[add dzenUrgencyHook as example (and the one I use)
Devin Mullins <me@twifkak.com>**20071018021742] 
[fixed Dzen and gave it a configurable timeout
Devin Mullins <me@twifkak.com>**20071018012910] 
[rename LayoutSelect & defaultLayout in comments
Devin Mullins <me@twifkak.com>**20071016051819] 
[add import to comments, for clarity
Devin Mullins <me@twifkak.com>**20071012044555] 
[documentation for UrgencyHook
Devin Mullins <me@twifkak.com>**20071012034506] 
[d'oh, minor UrgencyHook cleanup
Devin Mullins <me@twifkak.com>**20071012032558] 
[brand new UrgencyHook contrib, depends on X11-extras WMHints binding
Devin Mullins <me@twifkak.com>**20071011051641
 It's a LayoutModifier which lets you define an urgencyHook function -- the
 action gets performed wheneveran X client sends an XUrgencyHint message (i.e.
 tries to "flash" the "taskbar").
 
 This statically points to Config.urgencyHook, which requires that the user add
 a line to Config.hs-boot, in addition to defining the urgencyHook.
 
 Documentation forthcoming.
] 
[TilePrime.hs: Give a description that distinguishs between horizontal/vertical
Eric Mertens <emertens@galois.com>**20071018063749] 
[Truncate title at 80 characters
Spencer Janssen <sjanssen@cse.unl.edu>**20071018003013] 
[shorten in sjanssenPP too
Spencer Janssen <sjanssen@cse.unl.edu>**20071018002821] 
[Truncate long window titles
Spencer Janssen <sjanssen@cse.unl.edu>**20071018002511] 
[DynamicLog.hs: Add ppWsSep field to PP to specify workspace separator.
Eric Mertens <emertens@galois.com>**20071018001652
 
 This can be useful when you are using colors to distinguish between
 workspaces and simply provides more functionality. The default behavior
 remains the same.
] 
[Wrapping the empty string yields the empty string
Spencer Janssen <sjanssen@cse.unl.edu>**20071018001542] 
[DynamicLog: documentation only
Spencer Janssen <sjanssen@cse.unl.edu>**20071017211427] 
[Allow the user to change the order of workspaces, layout, title
Spencer Janssen <sjanssen@cse.unl.edu>**20071017211303] 
[Don't wrap the layout description by default
Spencer Janssen <sjanssen@cse.unl.edu>**20071017211011] 
[DynamicLog: not . null. Duh.
Spencer Janssen <sjanssen@cse.unl.edu>**20071017210912] 
[A big dynamicLog refactor
Spencer Janssen <sjanssen@cse.unl.edu>**20071017210431
 We introduce the PP type to allow user customization of dynamicLog.
 dynamicLogWithTitle has been eliminated because this is the default behavior
 for dynamicLog now.
] 
[Don't toLower the layout description.
Spencer Janssen <sjanssen@cse.unl.edu>**20071017202953
 If we'd really like lower case layout descriptions, the 'description' method
 in the LayoutClass instances should be changed instead.
] 
[TilePrime.hs: Correct behavior when number of windows <= nmaster
Eric Mertens <emertens@galois.com>**20071017205153
 
 Additionally this patch does various clean-ups that should not
 affect functionality.
] 
[Remove RunInXTerm in favor of Run
Spencer Janssen <sjanssen@cse.unl.edu>**20071017202201] 
[Move runXXX functions to one module
Christian Thiemann <mail@christian-thiemann.de>**20071012145233
 This patch takes runProcessWithInput out of Dmenu, runProcessWithInputAndWait
 out of Dzen, and runInXTerm out of RunInXTerm and collects them in one central
 module called Run.  This way, other modules may include Run instead of Dmenu
 to get what they want without giving the impression of making use of dmenu.
] 
[Fix LANGUAGE pragmas
Shachaf Ben-Kiki <shachaf@gmail.com>**20071017194622] 
[use full screen for single window in TilePrime
l.mai@web.de**20071017191421] 
[RotSlaves.hs: Add rotAll functions
Eric Mertens <emertens@galois.com>**20071017173256] 
[TilePrime.hs: add usage info.
Joachim Fasting <joachim.fasting@gmail.com>**20071017192612] 
[TilePrime.hs: add LANGAUGE pragma.
Joachim Fasting <joachim.fasting@gmail.com>**20071017182042] 
[MetaModule.hs: add WorkspacePrompt.
Joachim Fasting <joachim.fasting@gmail.com>**20071017182027] 
[add TilePrime to MetaModule.
David Roundy <droundy@darcs.net>**20071017133202] 
[Initial import of TilePrime
Eric Mertens <emertens@galois.com>**20071017052017
 
 This layout provides a standard tiling layout with support for resize hints
 and filling the gaps created by them.
] 
[code cleanup in selectWorkspace.
David Roundy <droundy@darcs.net>**20071016231218] 
[allow users to go to dynamically-added workspaces with mod-n.
David Roundy <droundy@darcs.net>**20071016230301] 
[add modules to deal with Workspaces (select, etc) by name using XPrompt.
David Roundy <droundy@darcs.net>**20071016223347] 
[make windowNavigation simpler to use in simplest case.
David Roundy <droundy@darcs.net>**20071016214337] 
[compute nice window border for WindowNavigation properly.
David Roundy <droundy@darcs.net>**20071016213316] 
[fix docs on WindowNavigation.
David Roundy <droundy@darcs.net>**20071016210349] 
[compute a reasonable navigation color based on focussed color.
David Roundy <droundy@darcs.net>**20071015165504] 
[WindowNavigation: don't export the config constructor and some haddock fixes
Andrea Rossato <andrea.rossato@unibz.it>**20071013090524
 I told to David I would have taken care of that: instead of exporting
 the config constructor we export 2 functions: navigateColor and
 noNavigateBorders. Updated documentation accordingly.
] 
[improvements in Combo.
David Roundy <droundy@darcs.net>**20071015132839] 
[TAG 0.4
Spencer Janssen <sjanssen@cse.unl.edu>**20071016212343] 
Patch bundle hash:
8ed8ef6b7d4c3a89ede9006dda989ad9073e065d
