Join GitHub today
These are all layouts in
XMonad.Layout with a short description. This is just a first pass through all the layouts, so it only (at least mostly) contains the information from the module's header, there's still more information in
$description. Additionally I included a line
myLayout = ... to prepare for a semi-automatic screenshot session:
Layout that puts non-focused windows in ribbons at the top and bottom of the screen.
myLayout = Accordion
Layout where new windows will split the focused window in half, based off of BSPWM
myLayout = emptyBSP
Circle is an elliptical, overlapping layout, by Peter De Wachter
myLayout = Circle
Layout that places all windows in one column, with heights corresponding to the progression of the given ratio. This ratio can be changed with Shrink/Expand.
myLayout = Column (16/10)
Layout with the main window in the center and the non-focused widows in the formation of a cross.
myLayout = simpleCross
Layout that stacks extra windows underneath the master windows.
myLayout = Dishes 2 (1/6)
Layouts that splits the screen either horizontally or vertically and shows two windows. The first window is always the master window, and the other is either the currently focused window or the second window in layout order.
myLayout = dragPane Horizontal (1/10) (1/2)
Three layouts: The first, Spiral, is a reimplementation of spiral with, at least to me, more intuitive semantics. The second, Dwindle, is inspired by a similar layout in awesome and produces the same sequence of decreasing window sizes as Spiral but pushes the smallest windows into a screen corner rather than the centre. The third, Squeeze arranges all windows in one row or in one column, with geometrically decreasing sizes.
myLayout = Dwindle R CW (3/2) (11/10) myLayout = Spiral L CW (3/2) (11/10) myLayout = Squeeze D (3/2) (11/10)
Layout much like @Tall@, but using a multiple of a window's minimum resize amount instead of a percentage of screen to decide where to split. This is useful when you usually leave a text editor or terminal in the master pane and like it to be 80 columns wide.
myLayout = FixedColumn 1 20 80 10
Layout that attempts to put all windows in a square grid.
myLayout = Grid
Two layouts: one is a variant of the @Grid@ layout that allows the desired aspect ratio of windows to be specified. The other is like @Tall@ but places a grid with fixed number of rows and columns in the master area and uses an aspect-ratio-specified layout for the slaves.
myLayout = Grid (16/10) myLayout = SplitGrid L 2 3 (2/3) (16/10) (5/100)
Layout that attempts to put all windows in a square grid while obeying their size hints.
myLayout = GridRatio (4/3) False
Layout that attempts to tile all windows while obeying their size hints.
hintedTile = HintedTile 1 (1/2) (3/100) myLayout = hintedTile Tall myLayout = hintedTile Wide
Layout which gives each window a specified amount of screen space relative to the others. Compared to "XMonad.Layout.Mosaic" this one divides the space in a more balanced way.
import qualified Data.Map as M myLayout = MosaicAlt M.empty
Layout based on "XMonad.Layout.MosaicAlt" but but aspect ratio messages always change the aspect ratios, and rearranging the window stack changes the window sizes.
myLayout = mosaic 2 [3,2]
Layout in the spirit of "XMonad.Layout.ResizableTile", but with the option to use the mouse to adjust the layout.
myLayout = mouseResizableTile
Layout that tiles windows in a growing number of columns. The number of windows in each column can be controlled by messages.
myLayout = multiCol  4 0.01 0.5
Layout that places the master window at top left corner of screen, and other windows at the top.
myLayout = OneBig (3/4) (3/4)
Floating layout which has been designed with a dual-head setup in mind. It makes use of "XMonad.Util.PositionStore" as well as "XMonad.Hooks.PositionStoreHooks". Since there is currently no way to move or resize windows with the keyboard alone in this layout, it is adviced to use it in combination with a decoration such as "XMonad.Layout.NoFrillsDecoration" (to move windows) and the layout modifier "XMonad.Layout.BorderResize" (to resize windows).
import XMonad.Layout.NoFrillsDecoration import XMonad.Layout.BorderResize myLayout = floatingDeco $ borderResize $ positionStoreFloat
Layout that extends "@Tall@ and allows you to change a width and height of windows.
myLayout = ResizableTall 1 (3/100) (1/2) 
Layout which acts like Microsoft's Flip 3D.
myLayout = Roledex
Floating layout where every window is placed according to the window's initial attributes.
myLayout = simpleFloat
Floating layout like "XMonad.Layout.SimpleFloat" but without window decorations.
myLayout = simplestFloat
Layout that is so simple, it doesn't even fit the description model.
myLayout = Simplest
Layout that arranges the windows in a spiral.
myLayout = spiral (6/7)
Layout that splits the screen into a square area and the rest of the screen. This is probably only ever useful in combination with "XMonad.Layout.Combo". It sticks one window in a square region, and makes the rest of the windows live with what's left (in a full-screen sense).
myLayout = ?
Layout that stacks the windows like dishes but with the ability to resize master pane. Mostly useful on small screens.
myLayout = StackTile 1 (3/100) (1/2)
Layout that arranges the windows in tabs.
myLayout = simpleTabbed
Layout similar to tall but with three columns. With 2560x1600 pixels this layout can be used for a huge main window and up to six reasonable sized slave windows.
myLayout = ThreeCol 1 (3/100) (1/2)
Layout that splits the screen horizontally and shows two windows. The left window is always the master window, and the right is either the currently focused window or the second window in layout order.
myLayout = TwoPane (3/100) (1/2)
Layout which places all windows in a single row; the size occupied by each individual window can be increased and decreased, and a window can be set to use the whole available space whenever it has focus.
myLayout = zoomRow