| xmonad-contrib-0.9.1: Third party extensions for xmonad | Source code | Contents | Index

XMonad.Hooks.Place

Portability | unportable
Stability | unstable
Maintainer | Quentin Moser <quentin.moser@unifr.ch>

Contents

Usage
Placement actions
Placement policies
Others

Description
Automatic placement of floating windows.
Synopsis

placeFocused :: Placement -> X ()
placeHook :: Placement -> ManageHook
data Placement
smart :: (Rational, Rational) -> Placement
simpleSmart :: Placement
fixed :: (Rational, Rational) -> Placement
underMouse :: (Rational, Rational) -> Placement
inBounds :: Placement -> Placement
withGaps :: (Dimension, Dimension, Dimension, Dimension) -> Placement -> Placement
purePlaceWindow :: Placement -> Rectangle -> [Rectangle] -> (Position, Position) -> Rectangle -> Rectangle

Usage

This module provides a `ManageHook` that automatically places floating windows at appropriate positions on the screen, as well as an `X` action to manually trigger repositioning.

You can use this module by including the following in your `~/.xmonad/xmonad.hs`:

     import XMonad.Hooks.Place

and adding `placeHook` to your `manageHook`, for example:

     main = xmonad $ defaultConfig { manageHook = placeHook simpleSmart
                                                  <+> manageHook defaultConfig }

Note that `placeHook` should be applied after most other hooks, especially hooks such as `doFloat` and `doShift`. Since hooks combined with `<+>` are applied from right to left, this means that `placeHook` should be the first hook in your chain.

You can also define a key to manually trigger repositioning with `placeFocused` by adding the following to your keys definition:

     , ((modm, xK_w), placeFocused simpleSmart)

Both `placeHook` and `placeFocused` take a `Placement` parameter, which specifies the placement policy to use (smart, under the mouse, fixed position, etc.). See `Placement` for a list of available policies.

Placement actions

placeFocused :: Placement -> X () | Source

Repositions the focused window according to a placement policy. Works for both "real" floating windows and windows in a `WindowArranger`-based layout.

placeHook :: Placement -> ManageHook | Source

Hook to automatically place windows when they are created.
Placement policies

Placement policies determine how windows will be placed by `placeFocused` and `placeHook`.

A few examples:

- Basic smart placement

     myPlacement = simpleSmart

- Under the mouse (pointer at the top-left corner), but constrained inside of the screen area

     myPlacement = inBounds (underMouse (0, 0))

- Smart placement with a preference for putting windows near the center of the screen, and with 16px gaps at the top and bottom of the screen where no window will be placed

     myPlacement = withGaps (16,0,16,0) (smart (0.5,0.5))

data Placement | Source

The type of placement policies
Instances

Eq Placement
Read Placement
Show Placement

smart | Source

:: (Rational, Rational) | Where the window should be placed inside the available area. See `fixed`.
-> Placement |
Try to place windows with as little overlap as possible

simpleSmart :: Placement | Source

fixed | Source

:: (Rational, Rational)

Where windows should go.

- (0,0) -> top left of the screen
- (1,0) -> top right of the screen
- etc

-> Placement |
Place windows at a fixed position

underMouse | Source

:: (Rational, Rational) | Where the pointer should be relative to the window's frame; see `fixed`.
-> Placement |
Place windows under the mouse

inBounds :: Placement -> Placement | Source

Apply the given placement policy, constraining the placed windows inside the screen boundaries.

withGaps | Source

:: (Dimension, Dimension, Dimension, Dimension) | top, right, bottom and left gaps
-> Placement |
-> Placement |
Same as `inBounds`, but allows specifying gaps along the screen's edges

Others

purePlaceWindow | Source

:: Placement | The placement strategy
-> Rectangle | The screen
-> [Rectangle] | The other visible windows
-> (Position, Position) | The pointer's position.
-> Rectangle | The window to be placed
-> Rectangle |
Compute the new position of a window according to a placement policy.

Produced by Haddock version 2.4.2