XMonad.Layout

xmonad-0.13: A tiling window manager

Copyright | (c) Spencer Janssen 2007
License | BSD3-style (see LICENSE)
Maintainer | spencerjanssen@gmail.com
Stability | unstable
Portability | not portable, Typeable deriving, mtl, posix
Safe Haskell | None
Language | Haskell98

XMonad.Layout

Description

The collection of core layouts.

Synopsis

- data Full a = Full
- data Tall a = Tall {
  - tallNMaster :: !Int
  - tallRatioIncrement :: !Rational
  - tallRatio :: !Rational
  }
- newtype Mirror l a = Mirror (l a)
- data Resize
  - = Shrink
  - | Expand
- data IncMasterN = IncMasterN !Int
- data Choose l r a
- (|||) :: l a -> r a -> Choose l r a
- data ChangeLayout
  - = FirstLayout
  - | NextLayout
- mirrorRect :: Rectangle -> Rectangle
- splitVertically :: Int -> Rectangle -> [Rectangle]
- splitHorizontally :: Int -> Rectangle -> [Rectangle]
- splitHorizontallyBy :: RealFrac r => r -> Rectangle -> (Rectangle, Rectangle)
- splitVerticallyBy :: RealFrac r => r -> Rectangle -> (Rectangle, Rectangle)
- tile :: Rational -> Rectangle -> Int -> Int -> [Rectangle]

# Documentation

data Full a #

Simple fullscreen mode. Renders the focused window fullscreen.

Constructors

Full |

Instances

LayoutClass Full a # |
Methods runLayout :: Workspace WorkspaceId (Full a) a -> Rectangle -> X ([(a, Rectangle)], Maybe (Full a)) # doLayout :: Full a -> Rectangle -> Stack a -> X ([(a, Rectangle)], Maybe (Full a)) # pureLayout :: Full a -> Rectangle -> Stack a -> [(a, Rectangle)] # emptyLayout :: Full a -> Rectangle -> X ([(a, Rectangle)], Maybe (Full a)) # handleMessage :: Full a -> SomeMessage -> X (Maybe (Full a)) # pureMessage :: Full a -> SomeMessage -> Maybe (Full a) # description :: Full a -> String #
Read (Full a) # |
Methods readsPrec :: Int -> ReadS (Full a) # readList :: ReadS [Full a] # readPrec :: ReadPrec (Full a) # readListPrec :: ReadPrec [Full a] #
Show (Full a) # |
Methods showsPrec :: Int -> Full a -> ShowS # show :: Full a -> String # showList :: [Full a] -> ShowS #

data Tall a #

The builtin tiling mode of xmonad. Supports `Shrink`, `Expand` and `IncMasterN`.

Constructors

Tall |
Fields tallNMaster :: !Int The default number of windows in the master pane (default: 1) tallRatioIncrement :: !Rational Percent of screen to increment by when resizing panes (default: 3/100) tallRatio :: !Rational Default proportion of screen occupied by master pane (default: 1/2)

Instances

LayoutClass Tall a # |
Methods runLayout :: Workspace WorkspaceId (Tall a) a -> Rectangle -> X ([(a, Rectangle)], Maybe (Tall a)) # doLayout :: Tall a -> Rectangle -> Stack a -> X ([(a, Rectangle)], Maybe (Tall a)) # pureLayout :: Tall a -> Rectangle -> Stack a -> [(a, Rectangle)] # emptyLayout :: Tall a -> Rectangle -> X ([(a, Rectangle)], Maybe (Tall a)) # handleMessage :: Tall a -> SomeMessage -> X (Maybe (Tall a)) # pureMessage :: Tall a -> SomeMessage -> Maybe (Tall a) # description :: Tall a -> String #
Read (Tall a) # |
Methods readsPrec :: Int -> ReadS (Tall a) # readList :: ReadS [Tall a] # readPrec :: ReadPrec (Tall a) # readListPrec :: ReadPrec [Tall a] #
Show (Tall a) # |
Methods showsPrec :: Int -> Tall a -> ShowS # show :: Tall a -> String # showList :: [Tall a] -> ShowS #

newtype Mirror l a #

Mirror a layout, compute its 90 degree rotated form.

Constructors

Mirror (l a) |

Instances

LayoutClass l a => LayoutClass (Mirror l) a # |
Methods runLayout :: Workspace WorkspaceId (Mirror l a) a -> Rectangle -> X ([(a, Rectangle)], Maybe (Mirror l a)) # doLayout :: Mirror l a -> Rectangle -> Stack a -> X ([(a, Rectangle)], Maybe (Mirror l a)) # pureLayout :: Mirror l a -> Rectangle -> Stack a -> [(a, Rectangle)] # emptyLayout :: Mirror l a -> Rectangle -> X ([(a, Rectangle)], Maybe (Mirror l a)) # handleMessage :: Mirror l a -> SomeMessage -> X (Maybe (Mirror l a)) # pureMessage :: Mirror l a -> SomeMessage -> Maybe (Mirror l a) # description :: Mirror l a -> String #
Read (l a) => Read (Mirror l a) # |
Methods readsPrec :: Int -> ReadS (Mirror l a) # readList :: ReadS [Mirror l a] # readPrec :: ReadPrec (Mirror l a) # readListPrec :: ReadPrec [Mirror l a] #
Show (l a) => Show (Mirror l a) # |
Methods showsPrec :: Int -> Mirror l a -> ShowS # show :: Mirror l a -> String # showList :: [Mirror l a] -> ShowS #

data Resize #

Change the size of the master pane.

Constructors

Shrink |
Expand |

Instances

Message Resize # |

data IncMasterN #

Increase the number of clients in the master pane.

Constructors

IncMasterN !Int |

Instances

Message IncMasterN # |

data Choose l r a #

A layout that allows users to switch between various layout options.

Instances

(LayoutClass l a, LayoutClass r a) => LayoutClass (Choose l r) a # |
Methods runLayout :: Workspace WorkspaceId (Choose l r a) a -> Rectangle -> X ([(a, Rectangle)], Maybe (Choose l r a)) # doLayout :: Choose l r a -> Rectangle -> Stack a -> X ([(a, Rectangle)], Maybe (Choose l r a)) # pureLayout :: Choose l r a -> Rectangle -> Stack a -> [(a, Rectangle)] # emptyLayout :: Choose l r a -> Rectangle -> X ([(a, Rectangle)], Maybe (Choose l r a)) # handleMessage :: Choose l r a -> SomeMessage -> X (Maybe (Choose l r a)) # pureMessage :: Choose l r a -> SomeMessage -> Maybe (Choose l r a) # description :: Choose l r a -> String #
(Read (r a), Read (l a)) => Read (Choose l r a) # |
Methods readsPrec :: Int -> ReadS (Choose l r a) # readList :: ReadS [Choose l r a] # readPrec :: ReadPrec (Choose l r a) # readListPrec :: ReadPrec [Choose l r a] #
(Show (r a), Show (l a)) => Show (Choose l r a) # |
Methods showsPrec :: Int -> Choose l r a -> ShowS # show :: Choose l r a -> String # showList :: [Choose l r a] -> ShowS #

(|||) :: l a -> r a -> Choose l r a infixr 5 #

The layout choice combinator

data ChangeLayout #

Messages to change the current layout.

Constructors

FirstLayout |
NextLayout |

Instances

Eq ChangeLayout # |
Methods (==) :: ChangeLayout -> ChangeLayout -> Bool # (/=) :: ChangeLayout -> ChangeLayout -> Bool #
Show ChangeLayout # |
Methods showsPrec :: Int -> ChangeLayout -> ShowS # show :: ChangeLayout -> String # showList :: [ChangeLayout] -> ShowS #
Message ChangeLayout # |

mirrorRect :: Rectangle -> Rectangle #

Mirror a rectangle.

splitVertically :: Int -> Rectangle -> [Rectangle] #

splitHorizontally :: Int -> Rectangle -> [Rectangle] #

splitHorizontallyBy :: RealFrac r => r -> Rectangle -> (Rectangle, Rectangle) #

splitVerticallyBy :: RealFrac r => r -> Rectangle -> (Rectangle, Rectangle) #

tile #

Arguments

:: Rational | `frac`, what proportion of the screen to devote to the master area
-> Rectangle | `r`, the rectangle representing the screen
-> Int | `nmaster`, the number of windows in the master pane
-> Int | `n`, the total number of windows to tile
-> [Rectangle] |

Compute the positions for windows using the default two-pane tiling algorithm.

The screen is divided into two panes. All clients are then partioned between these two panes. One pane, the master, by convention has the least number of windows in it.