XMonad.Layout.ComboP

xmonad-contrib-0.11.4: Third party extensions for xmonad

Copyright | (c) Konstantin Sobolev <konstantin.sobolev@gmail.com>
License | BSD-style (see LICENSE)
Maintainer | Konstantin Sobolev <konstantin.sobolev@gmail.com>
Stability | unstable
Portability | unportable
Safe Haskell | None
Language | Haskell98

XMonad.Layout.ComboP

Contents

- Usage

Description

A layout that combines multiple layouts and allows to specify where to put new windows.

Synopsis

- combineTwoP :: (LayoutClass super (), LayoutClass l1 Window, LayoutClass l2 Window) => super () -> l1 Window -> l2 Window -> Property -> CombineTwoP (super ()) l1 l2 Window
- data CombineTwoP l l1 l2 a
- data SwapWindow
  - = SwapWindow
  - | SwapWindowN Int
- data Property
  - = Title String
  - | ClassName String
  - | Resource String
  - | Role String
  - | Machine String
  - | And Property Property
  - | Or Property Property
  - | Not Property
  - | Const Bool

# Usage

You can use this module with the following in your `~/.xmonad/xmonad.hs`:

    import XMonad.Layout.ComboP

and add something like

    combineTwoP (TwoPane 0.03 0.5) (tabbed shrinkText defaultTConf) (tabbed shrinkText defaultTConf) (ClassName "Firefox")

to your layouts. This way all windows with class = "Firefox" will always go to the left pane, all others - to the right.

For more detailed instructions on editing the layoutHook see:

XMonad.Doc.Extending

`combineTwoP` is a simple layout combinator based on `combineTwo` from Combo, with addition of a `Property` which tells where to put new windows. Windows mathing the property will go into the first part, all others will go into the second part. It supports `Move` messages as `combineTwo` does, but it also introduces `SwapWindow` message which sends focused window to the other part. It is required because `Move` commands don't work when one of the parts is empty. To use it, import "XMonad.Layout.WindowNavigation", and add the following key bindings (or something similar):

       , ((modm .|. controlMask .|. shiftMask, xK_Right), sendMessage $ Move R)
       , ((modm .|. controlMask .|. shiftMask, xK_Left ), sendMessage $ Move L)
       , ((modm .|. controlMask .|. shiftMask, xK_Up   ), sendMessage $ Move U)
       , ((modm .|. controlMask .|. shiftMask, xK_Down ), sendMessage $ Move D)
       , ((modm .|. controlMask .|. shiftMask, xK_s    ), sendMessage $ SwapWindow)

For detailed instruction on editing the key binding see XMonad.Doc.Extending.

combineTwoP :: (LayoutClass super (), LayoutClass l1 Window, LayoutClass l2 Window) => super () -> l1 Window -> l2 Window -> Property -> CombineTwoP (super ()) l1 l2 Window

data CombineTwoP l l1 l2 a

Instances

(LayoutClass l (), LayoutClass l1 Window, LayoutClass l2 Window) => LayoutClass (CombineTwoP (l ()) l1 l2) Window |
(Read l, Read a, Read (l1 a), Read (l2 a)) => Read (CombineTwoP l l1 l2 a) |
(Show l, Show a, Show (l1 a), Show (l2 a)) => Show (CombineTwoP l l1 l2 a) |

data SwapWindow

Constructors

SwapWindow | Swap window between panes
SwapWindowN Int | Swap window between panes in the N-th nested ComboP. `SwapWindowN 0` equals to SwapWindow

Instances

Read SwapWindow |
Show SwapWindow |
Message SwapWindow |

data Property

Most of the property constructors are quite self-explaining.

Constructors

Title String |
ClassName String |
Resource String |
Role String | WM_WINDOW_ROLE property
Machine String | WM_CLIENT_MACHINE property
And Property Property infixr 9 |
Or Property Property infixr 8 |
Not Property |
Const Bool |

Instances

Read Property |
Show Property |
Predicate Property Window |