
New patches:

[Support for allowing the pointer to follow keyboard focus
robreim@bobturf.org**20080203094123
 Adds onFocusWarpPos config option which allows optional setting of relative
 x and y positions in a newly focused window to warp the mouse pointer to.
 
 This along with focusFollowsMouse allows an optional invariant of having the 
 mouse always over the currently focused window.
] {
hunk ./XMonad/Config.hs 30
-    ,focusFollowsMouse)
+    ,focusFollowsMouse, onFocusWarpPos)
hunk ./XMonad/Config.hs 34
-    ,focusFollowsMouse)
+    ,focusFollowsMouse, onFocusWarpPos)
hunk ./XMonad/Config.hs 174
+-- | If specified, gives the relative x and y co-ordinates for where in the newly
+-- focused window the pointer should warp. Mirrors the idea of focusFollowsMouse
+onFocusWarpPos :: Maybe (Rational, Rational)
+onFocusWarpPos = Nothing
+
hunk ./XMonad/Config.hs 266
-    , XMonad.focusFollowsMouse  = focusFollowsMouse }
+    , XMonad.focusFollowsMouse  = focusFollowsMouse
+    , XMonad.onFocusWarpPos     = onFocusWarpPos }
hunk ./XMonad/Core.hs 92
+    , onFocusWarpPos     :: !(Maybe (Rational,Rational)) 
+                                                 -- ^ Whether and where focus change events change mouse position to
hunk ./XMonad/Operations.hs 310
--- | Call X to set the keyboard focus details.
+-- | Call X to set the keyboard and mouse focus details.
hunk ./XMonad/Operations.hs 325
+    -- Move the pointer to the newly focused window if not already there
+    wp <- asks (onFocusWarpPos . config)
+    maybe (return ()) (uncurry $ warp w) wp
+
+-- ---------------------------------------------------------------------
+
+-- | Move pointer to a given window unless it's already there
+warp :: Window -> Rational -> Rational -> X ()
+warp w xr yr = do
+  dpy <- asks display
+  root <- asks theRoot
+  wa <- io $ getWindowAttributes dpy w
+  (sameRoot,_,w',_,_,_,_,_) <- io $ queryPointer dpy root
+  unless (sameRoot && w == w') $
+         io $ warpPointer dpy none w 0 0 0 0
+                   (fraction xr (wa_width wa)) (fraction yr (wa_height wa))
+    where fraction x y = floor (x * fromIntegral y)
+
}

Context:

[Updated ./man/xmonad.1.in to contain new command line parameters
Austin Seipp <mad.one@gmail.com>**20080122070153] 
[Depend on QuickCheck < 2 when building tests
Spencer Janssen <sjanssen@cse.unl.edu>**20080122070225] 
[Roll testing into the main executable, use Cabal to build the tests
Spencer Janssen <sjanssen@cse.unl.edu>**20080119091215] 
[Simplify duplicate/cloned screen logic
Spencer Janssen <sjanssen@cse.unl.edu>**20080118032228] 
[Put the screen removing stuff in getCleanedScreenInfo
Joachim Breitner <mail@joachim-breitner.de>**20071231181556] 
[Ignore cloned screens
Joachim Breitner <mail@joachim-breitner.de>**20071231180628
 This patch ignores screens that are just clones of existing ones,
 or are completely contained in another. Currently only for rescreen, not yet for
 xmonad start.
] 
[-Werror when flag(testing) only
Spencer Janssen <sjanssen@cse.unl.edu>**20080118014827] 
[Export doubleFork
nicolas.pouillard@gmail.com**20080114202612] 
[reword comment (previous version didn't make sense to me)
Lukas Mai <l.mai@web.de>**20071122165925] 
[The recompile function now returns a boolean status instead of ().
nicolas.pouillard@gmail.com**20080105225500] 
[Make focus-follows-mouse configurable
Spencer Janssen <sjanssen@cse.unl.edu>**20071229023301] 
[Strictify all XConfig fields, gives nice error messages when a field is forgotten on construction
Spencer Janssen <sjanssen@cse.unl.edu>**20071229021923] 
[Spelling
Spencer Janssen <sjanssen@cse.unl.edu>**20071229021628] 
[Wibble
Spencer Janssen <sjanssen@cse.unl.edu>**20071229021519] 
[Broadcast button events to all layouts, fix for issue #111
Spencer Janssen <sjanssen@cse.unl.edu>**20071227080356] 
[Config.hs: too many users seem to be ignoring/missing the polite warning not to modify this file; change it to something a bit less polite/more obvious.
Brent Yorgey <byorgey@gmail.com>**20071220201549] 
[Remove desktop manageHook rules in favor of ManageDocks
Spencer Janssen <sjanssen@cse.unl.edu>**20071222113735] 
[Wibble
Spencer Janssen <sjanssen@cse.unl.edu>**20071222041151] 
[Add support for several flags:
Spencer Janssen <sjanssen@cse.unl.edu>**20071222020520
  --version: print xmonad's version
  --recompile: recompile xmonad.hs if it is out of date
  --force-recompile: recompile xmonad.hs unconditionally
] 
[Remove getProgName capability from restart, we don't use it anymore
Spencer Janssen <sjanssen@cse.unl.edu>**20071219215011] 
[Flush pending X calls before restarting
Spencer Janssen <sjanssen@cse.unl.edu>**20071219162029] 
[Allow for sharing of home directory across architectures.
tim.thelion@gmail.com**20071218065146] 
[Call 'broadcastMessage ReleaseResources' in restart
Spencer Janssen <sjanssen@cse.unl.edu>**20071219065710] 
[Manpage now describes config in ~/.xmonad/xmonad.hs
Adam Vogt <vogt.adam@gmail.com>**20071219023918] 
[Update manpage to describe greedyView
Adam Vogt <vogt.adam@gmail.com>**20071219023726] 
[Depend on X11-1.4.1, it has crucial bugfixes
Spencer Janssen <sjanssen@cse.unl.edu>**20071215022100] 
[1.4.1 X11 dep
Don Stewart <dons@galois.com>**20071214160558] 
[Set withdrawnState after calling hide
Spencer Janssen <sjanssen@cse.unl.edu>**20071212060250] 
[Remove stale comment
Spencer Janssen <sjanssen@cse.unl.edu>**20071211084236] 
[Make windows responsible for setting withdrawn state
Spencer Janssen <sjanssen@cse.unl.edu>**20071211080117] 
[Remove stale comment
Spencer Janssen <sjanssen@cse.unl.edu>**20071211075641] 
[Clean up stale mapped/waitingUnmap state in handle rather than unmanage.
Spencer Janssen <sjanssen@cse.unl.edu>**20071211074810
 This is an attempt to fix issue #96.  Thanks to jcreigh for the insights
 necessary to fix the bug.
] 
[Delete windows from waitingUnmap that aren't waitng for any unmaps
Spencer Janssen <sjanssen@cse.unl.edu>**20071211074506] 
[man/xmonad.hs: add some documentation explaining that 'title' can be used in the manageHook just like 'resource' and 'className'.
Brent Yorgey <byorgey@gmail.com>**20071210173357] 
[normalize Module headers
Lukas Mai <l.mai@web.de>**20071210085327] 
[Add 'testing' mode, this should reduce 'darcs check' time significantly
Spencer Janssen <sjanssen@cse.unl.edu>**20071210004704] 
[Use XMonad meta-module in Main.hs
Spencer Janssen <sjanssen@cse.unl.edu>**20071210004456] 
[TAG 0.5
Spencer Janssen <sjanssen@cse.unl.edu>**20071209233044] 
Patch bundle hash:
4dc8e9693ceea46dd546e4392a4c912aaf100ab7

