xmonad-contrib-0.18.1: Community-maintained extensions for xmonad
CopyrightJean-Charles Quillet
LicenseBSD-style (see LICENSE)
Maintainernone
Stabilityunstable
Portabilityunportable
Safe HaskellSafe-Inferred
LanguageHaskell2010

XMonad.Layout.Columns

Description

A layout which tiles the windows in columns. The windows can be moved and resized in every directions.

The first window appears in a single column in the center of the screen. Its width is configurable (See coOneWindowWidth).

The second window appears in a second column. Starting with two columns, they fill up the screen.

Subsequent windows appear on the bottom of the last columns.

Synopsis

Usage

Add Columns to your layoutHook with an initial empty state:

myLayout = Full ||| Columns 1 []

Here is an example of keybindings:

-- Focus up/down
((modm, xK_Tab), focusDown),
((modm .|. shiftMask, xK_Tab), focusUp),
-- Move windows around
((modm .|. shiftMask, xK_l), sendMessage MoveRight),
((modm .|. shiftMask, xK_h), sendMessage MoveLeft),
((modm .|. shiftMask, xK_k), sendMessage MoveUp),
((modm .|. shiftMask, xK_j), sendMessage MoveDown),
-- Resize them
((modm .|. controlMask, xK_l), sendMessage HorizontalExpand),
((modm .|. controlMask, xK_h), sendMessage HorizontalShrink),
((modm .|. controlMask, xK_k), sendMessage VerticalExpand),
((modm .|. controlMask, xK_j), sendMessage VerticalShrink),

This layout is known to work with:

  • XMonad.Layout.WindowNavigation for changing focus with a direction using Go messages.
  • subTabbed for docking windows together with tabs. Note that sometimes when undocking windows, the layout is reset. This is a minor annoyance caused by the difficulty to track windows in the sublayout.

Messages

data Focus Source #

The layout handles focus change messages.

Built-in focus cannot be used here because XMonad does not make it easy to change the order of windows in the focus list. See also focusUp and focusDown functions.

Constructors

FocusUp 
FocusDown 

Instances

Instances details
Read Focus Source # 
Instance details

Defined in XMonad.Layout.Columns

Show Focus Source # 
Instance details

Defined in XMonad.Layout.Columns

Methods

showsPrec :: Int -> Focus -> ShowS #

show :: Focus -> String #

showList :: [Focus] -> ShowS #

Message Focus Source # 
Instance details

Defined in XMonad.Layout.Columns

data Move Source #

The windows can be moved in every directions.

Horizontally, a window alone in its column cannot be moved before the first or after the last column. If not alone, moving the window outside those limits will create a new column. The windows can also be moved vertically in their column.

Instances

Instances details
Read Move Source # 
Instance details

Defined in XMonad.Layout.Columns

Show Move Source # 
Instance details

Defined in XMonad.Layout.Columns

Methods

showsPrec :: Int -> Move -> ShowS #

show :: Move -> String #

showList :: [Move] -> ShowS #

Message Move Source # 
Instance details

Defined in XMonad.Layout.Columns

data Resize Source #

The windows can be resized in every directions.

When resizing horizontally:

  • if the window to be resized is not in the last column

    • then the right side of the window will be moved
    • the last column will compensate the size change
  • if the window is in the last column

    • then the left side of the window will be moved
    • the column on the left of the current one will compensate the size change

The same applies when resizing vertically using the bottom side of the window unless it is the last window in the column in which case we use the top side.

Instances

Instances details
Read Resize Source # 
Instance details

Defined in XMonad.Layout.Columns

Show Resize Source # 
Instance details

Defined in XMonad.Layout.Columns

Message Resize Source # 
Instance details

Defined in XMonad.Layout.Columns

Tools

focusDown :: X () Source #

Change the keyboard focus to the next window

focusUp :: X () Source #

Change the keyboard focus to the previous window