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 | Haskell2010 |
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 :: Type -> Type) (l2 :: Type -> Type) a
- data SwapWindow
- data PartitionWins = PartitionWins
- data Property
Usage
You can use this module with the following in your xmonad.hs
:
import XMonad.Layout.ComboP
and add something like
combineTwoP (TwoPane 0.03 0.5) (tabbed shrinkText def) (tabbed shrinkText def) (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 the tutorial and 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 the tutorial.
combineTwoP :: (LayoutClass super (), LayoutClass l1 Window, LayoutClass l2 Window) => super () -> l1 Window -> l2 Window -> Property -> CombineTwoP (super ()) l1 l2 Window Source #
data CombineTwoP l (l1 :: Type -> Type) (l2 :: Type -> Type) a Source #
Instances
data SwapWindow Source #
SwapWindow | Swap window between panes |
SwapWindowN Int | Swap window between panes in the N-th nested ComboP. |
Instances
Read SwapWindow Source # | |
Defined in XMonad.Layout.ComboP readsPrec :: Int -> ReadS SwapWindow # readList :: ReadS [SwapWindow] # readPrec :: ReadPrec SwapWindow # readListPrec :: ReadPrec [SwapWindow] # | |
Show SwapWindow Source # | |
Defined in XMonad.Layout.ComboP showsPrec :: Int -> SwapWindow -> ShowS # show :: SwapWindow -> String # showList :: [SwapWindow] -> ShowS # | |
Message SwapWindow Source # | |
Defined in XMonad.Layout.ComboP |
data PartitionWins Source #
PartitionWins | Reset the layout and partition all windows into the correct sub-layout. Useful for when window properties have changed and you want ComboP to update which layout a window belongs to. |
Instances
Read PartitionWins Source # | |
Defined in XMonad.Layout.ComboP readsPrec :: Int -> ReadS PartitionWins # readList :: ReadS [PartitionWins] # | |
Show PartitionWins Source # | |
Defined in XMonad.Layout.ComboP showsPrec :: Int -> PartitionWins -> ShowS # show :: PartitionWins -> String # showList :: [PartitionWins] -> ShowS # | |
Message PartitionWins Source # | |
Defined in XMonad.Layout.ComboP |
Most of the property constructors are quite self-explaining.
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 | |
Tagged String | Tagged via XMonad.Actions.TagWindows |