xmonad-contrib-0.10: Third party extensions for xmonad

Portability | unportable
Stability | stable
Maintainer | <mgsloan@gmail.com>

XMonad.Actions.FlexibleManipulate

Contents

- Usage

Description

Move and resize floating windows without warping the mouse.

Synopsis

- mouseWindow :: (Double -> Double) -> Window -> X ()
- discrete :: Double -> Double
- linear :: Double -> Double
- resize :: Double -> Double
- position :: Double -> Double

# 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 `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.

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

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.

discrete :: Double -> Double

linear :: Double -> Double

resize :: Double -> Double

position :: Double -> Double