xmonad-contrib-0.9.1: Third party extensions for xmonad

Portabilityunportable
Stabilityunstable
MaintainerQuentin Moser <quentin.moser@unifr.ch>

XMonad.Hooks.Place

Contents

Description

Automatic placement of floating windows.

Synopsis

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 -> ManageHookSource

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

smartSource

Arguments

:: (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

fixedSource

Arguments

:: (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

underMouseSource

Arguments

:: (Rational, Rational)

Where the pointer should be relative to the window's frame; see fixed.

-> Placement 

Place windows under the mouse

inBounds :: Placement -> PlacementSource

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

withGapsSource

Arguments

:: (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

purePlaceWindowSource

Arguments

:: 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.