xmonad-contrib- Community-maintained extensions for xmonad
Copyright(c) Robert Marlow <robreim@bobturf.org> 2015 Evgeny Kurnevsky
LicenseBSD3-style (see LICENSE)
MaintainerRobert Marlow <robreim@bobturf.org>
Safe HaskellSafe-Inferred




Causes the pointer to follow whichever window focus changes to. Compliments the idea of switching focus as the mouse crosses window boundaries to keep the mouse near the currently focused window



You can use this module with the following in your xmonad.hs:

import XMonad
import XMonad.Actions.UpdatePointer

Enable it by including it in your logHook definition, e.g.:

logHook = updatePointer (0.5, 0.5) (1, 1)

which will move the pointer to the nearest point of a newly focused window. The first argument establishes a reference point within the newly-focused window, while the second argument linearly interpolates between said reference point and the edges of the newly-focused window to obtain a bounding box for the pointer.

logHook = updatePointer (0.5, 0.5) (0, 0) -- exact centre of window
logHook = updatePointer (0.25, 0.25) (0.25, 0.25) -- near the top-left
logHook = updatePointer (0.5, 0.5) (1.1, 1.1) -- within 110% of the edge

To use this with an existing logHook, use >> :

logHook = dynamicLog
          >> updatePointer (1, 1) (0, 0)

which moves the pointer to the bottom-right corner of the focused window.

updatePointer :: (Rational, Rational) -> (Rational, Rational) -> X () Source #

Update the pointer's location to the currently focused window or empty screen unless it's already there, or unless the user was changing focus with the mouse

See also focusUnderPointer for an inverse operation that updates the focus instead. The two can be combined in a single config if neither goes into logHook but are invoked explicitly in individual key bindings.