Bruce Forte edited this page May 6, 2017 · 4 revisions

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 [1] 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
You can’t perform that action at this time.
You signed in with another tab or window. Reload to refresh your session. You signed out in another tab or window. Reload to refresh your session.
Press h to open a hovercard with more details.