Copyright (c) Michael Sloan BSD3-style (see LICENSE) stable unportable Safe-Inferred Haskell2010

Contents

Description

Move and resize floating windows without warping the mouse.

Synopsis

# Usage

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:

    , ((modm, 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 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.

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

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

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.