xmonad-contrib-0.7: Third party extensions for xmonadSource codeContentsIndex
Move and resize floating windows without warping the mouse.
mouseWindow :: (Double -> Double) -> Window -> X ()
linear :: Double -> Double

First, add this import to your ~/.xmonad/xmonad.hs:

 import qualified XMonad.Actions.FlexibleManipulate as Flex

Now set up the desired mouse binding, for example:

     , ((modMask x, button1), (\w -> focus w >> Flex.mouseWindow Flex.linear w))
  • Flex.linear indicates that positions between the edges and the middle indicate a combination scale/position.
  • Flex.discrete indicates that there are discrete pick regions. (The window is divided by thirds for each axis.)
  • Flex.resize performs only a resize of the window, based on which quadrant the mouse is in.
  • Flex.position is similar to the built-in XMonad.Operations.mouseMoveWindow.

You can also write your own function for this parameter. It should take a value between 0 and 1 indicating position, and return a value indicating the corresponding position if plain Flex.linear was used.

For detailed instructions on editing your mouse bindings, see XMonad.Doc.Extending#Editing_mouse_bindings.

mouseWindow :: (Double -> Double) -> Window -> X ()Source

Manipulate the window based on discrete pick regions; the window is divided into regions by thirds along each axis.

Scale/reposition the window by factors obtained from the mouse position by linear interpolation. Dragging precisely on a corner resizes that corner; dragging precisely in the middle moves the window without resizing; anything else is an interpolation between the two.

Only resize the window, based on the window quadrant the mouse is in.

Only reposition the window.

Given an interpolation function, implement an appropriate window manipulation action.

linear :: Double -> DoubleSource
Produced by Haddock version 2.3.0