Copyright | (c) David Roundy <droundy@darcs.net> |
---|---|
License | BSD |
Maintainer | none |
Stability | unstable |
Portability | unportable |
Safe Haskell | Safe-Inferred |
Language | Haskell2010 |
Make layouts respect size hints.
Synopsis
- layoutHints :: LayoutClass l a => l a -> ModifiedLayout LayoutHints l a
- layoutHintsWithPlacement :: LayoutClass l a => (Double, Double) -> l a -> ModifiedLayout LayoutHints l a
- layoutHintsToCenter :: LayoutClass l a => l a -> ModifiedLayout LayoutHintsToCenter l a
- data LayoutHints a
- data LayoutHintsToCenter a
- hintsEventHook :: Event -> X All
- placeRectangle :: RealFrac r => (r, r) -> Rectangle -> Rectangle -> Rectangle
usage
You can use this module with the following in your xmonad.hs
:
import XMonad.Layout.LayoutHints
Then edit your layoutHook
by adding the layoutHints
layout modifier
to some layout:
myLayout = layoutHints (Tall 1 (3/100) (1/2)) ||| Full ||| etc.. main = xmonad def { layoutHook = myLayout }
Or, to center the adapted window in its available area:
myLayout = layoutHintsWithPlacement (0.5, 0.5) (Tall 1 (3/100) (1/2)) ||| Full ||| etc..
Or, to make a reasonable attempt to eliminate gaps between windows:
myLayout = layoutHintsToCenter (Tall 1 (3/100) (1/2))
For more detailed instructions on editing the layoutHook see the tutorial and XMonad.Doc.Extending.
To make XMonad reflect changes in window hints immediately, add
hintsEventHook
to your handleEventHook
.
myHandleEventHook = hintsEventHook <> ... main = xmonad def { handleEventHook = myHandleEventHook , ... }
layoutHints :: LayoutClass l a => l a -> ModifiedLayout LayoutHints l a Source #
layoutHintsWithPlacement :: LayoutClass l a => (Double, Double) -> l a -> ModifiedLayout LayoutHints l a Source #
layoutHintsWithPlacement (rx, ry) layout
will adapt the sizes of a layout's
windows according to their size hints, and position them inside their
originally assigned area according to the rx
and ry
parameters.
(0, 0) places the window at the top left, (1, 0) at the top right, (0.5, 0.5)
at the center, etc.
layoutHintsToCenter :: LayoutClass l a => l a -> ModifiedLayout LayoutHintsToCenter l a Source #
layoutHintsToCenter layout
applies hints, sliding the window to the
center of the screen and expanding its neighbors to fill the gaps. Windows
are never expanded in a way that increases overlap.
layoutHintsToCenter
only makes one pass at resizing the neighbors of
hinted windows, so with some layouts (ex. the arrangement with two Mirror
Tall
stacked vertically), layoutHintsToCenter
may leave some gaps.
Simple layouts like Tall
are unaffected.
data LayoutHints a Source #
Instances
data LayoutHintsToCenter a Source #
Instances
hintsEventHook :: Event -> X All Source #
Event hook that refreshes the layout whenever a window changes its hints.
For developers
placeRectangle :: RealFrac r => (r, r) -> Rectangle -> Rectangle -> Rectangle Source #
placeRectangle (rx, ry) r0 r
will return a new rectangle with the same dimensions
as r
, but positioned inside of r0
as specified by the (rx, ry) parameters (see
layoutHintsWithPlacement
).