Copyright | Quentin Moser <moserq@gmail.com> |
---|---|
License | BSD-style (see LICENSE) |
Maintainer | orphaned |
Stability | unstable |
Portability | unportable |
Safe Haskell | None |
Language | Haskell2010 |
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.hs
:
import XMonad.Hooks.Place
and adding placeHook
to your manageHook
, for example:
main = xmonad $ def { manageHook = placeHook simpleSmart <> manageHook def }
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))
The type of placement policies
:: (Rational, Rational) | Where the window should be placed inside
the available area. See |
-> Placement |
Try to place windows with as little overlap as possible
:: (Rational, Rational) | Where windows should go.
|
-> Placement |
Place windows at a fixed position
:: (Rational, Rational) | Where the pointer should be relative to
the window's frame; see |
-> Placement |
Place windows under the mouse
inBounds :: Placement -> Placement Source #
Apply the given placement policy, constraining the placed windows inside the screen boundaries.
:: (Dimension, Dimension, Dimension, Dimension) | top, right, bottom and left gaps |
-> Placement | |
-> Placement |
Same as inBounds
, but allows specifying gaps along the screen's edges