XMonad.Layout.WindowArranger

xmonad-contrib-0.13: Third party extensions for xmonad

Copyright | (c) Andrea Rossato 2007
License | BSD-style (see xmonad/LICENSE)
Maintainer | andrea.rossato@unibz.it
Stability | unstable
Portability | unportable
Safe Haskell | None
Language | Haskell98

XMonad.Layout.WindowArranger

Contents

- Usage

Description

This is a pure layout modifier that will let you move and resize windows with the keyboard in any layout.

Synopsis

- windowArrange :: l a -> ModifiedLayout WindowArranger l a
- windowArrangeAll :: l a -> ModifiedLayout WindowArranger l a
- data WindowArrangerMsg
  - = DeArrange
  - | Arrange
  - | IncreaseLeft Int
  - | IncreaseRight Int
  - | IncreaseUp Int
  - | IncreaseDown Int
  - | DecreaseLeft Int
  - | DecreaseRight Int
  - | DecreaseUp Int
  - | DecreaseDown Int
  - | MoveLeft Int
  - | MoveRight Int
  - | MoveUp Int
  - | MoveDown Int
  - | SetGeometry Rectangle
- data WindowArranger a
- memberFromList :: (b -> c) -> (c -> a -> Bool) -> a -> [b] -> [b]
- listFromList :: (b -> c) -> (c -> [a] -> Bool) -> [a] -> [b] -> [b]
- diff :: Eq a => ([a], [a]) -> ([a], [a])

# Usage

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

    import XMonad.Layout.WindowArranger
    myLayout = layoutHook def
    main = xmonad def { layoutHook = windowArrange myLayout }

or

    main = xmonad def { layoutHook = windowArrangeAll myLayout }

For more detailed instructions on editing the layoutHook see:

XMonad.Doc.Extending

You may also want to define some key binding to move or resize windows. These are good defaults:

           , ((modm .|. controlMask              , xK_s    ), sendMessage  Arrange         )
           , ((modm .|. controlMask .|. shiftMask, xK_s    ), sendMessage  DeArrange       )
           , ((modm .|. controlMask              , xK_Left ), sendMessage (MoveLeft      1))
           , ((modm .|. controlMask              , xK_Right), sendMessage (MoveRight     1))
           , ((modm .|. controlMask              , xK_Down ), sendMessage (MoveDown      1))
           , ((modm .|. controlMask              , xK_Up   ), sendMessage (MoveUp        1))
           , ((modm                 .|. shiftMask, xK_Left ), sendMessage (IncreaseLeft  1))
           , ((modm                 .|. shiftMask, xK_Right), sendMessage (IncreaseRight 1))
           , ((modm                 .|. shiftMask, xK_Down ), sendMessage (IncreaseDown  1))
           , ((modm                 .|. shiftMask, xK_Up   ), sendMessage (IncreaseUp    1))
           , ((modm .|. controlMask .|. shiftMask, xK_Left ), sendMessage (DecreaseLeft  1))
           , ((modm .|. controlMask .|. shiftMask, xK_Right), sendMessage (DecreaseRight 1))
           , ((modm .|. controlMask .|. shiftMask, xK_Down ), sendMessage (DecreaseDown  1))
           , ((modm .|. controlMask .|. shiftMask, xK_Up   ), sendMessage (DecreaseUp    1))

For detailed instructions on editing your key bindings, see XMonad.Doc.Extending.

windowArrange :: l a -> ModifiedLayout WindowArranger l a #

A layout modifier to float the windows in a workspace

windowArrangeAll :: l a -> ModifiedLayout WindowArranger l a #

A layout modifier to float all the windows in a workspace

data WindowArrangerMsg #

Constructors

DeArrange |
Arrange |
IncreaseLeft Int |
IncreaseRight Int |
IncreaseUp Int |
IncreaseDown Int |
DecreaseLeft Int |
DecreaseRight Int |
DecreaseUp Int |
DecreaseDown Int |
MoveLeft Int |
MoveRight Int |
MoveUp Int |
MoveDown Int |
SetGeometry Rectangle |

Instances

Message WindowArrangerMsg # |

data WindowArranger a #

Instances

(Show a, Read a, Eq a) => LayoutModifier WindowArranger a # |
Methods modifyLayout :: LayoutClass l a => WindowArranger a -> Workspace WorkspaceId (l a) a -> Rectangle -> X ([(a, Rectangle)], Maybe (l a)) # modifyLayoutWithUpdate :: LayoutClass l a => WindowArranger a -> Workspace WorkspaceId (l a) a -> Rectangle -> X (([(a, Rectangle)], Maybe (l a)), Maybe (WindowArranger a)) # handleMess :: WindowArranger a -> SomeMessage -> X (Maybe (WindowArranger a)) # handleMessOrMaybeModifyIt :: WindowArranger a -> SomeMessage -> X (Maybe (Either (WindowArranger a) SomeMessage)) # pureMess :: WindowArranger a -> SomeMessage -> Maybe (WindowArranger a) # redoLayout :: WindowArranger a -> Rectangle -> Maybe (Stack a) -> [(a, Rectangle)] -> X ([(a, Rectangle)], Maybe (WindowArranger a)) # pureModifier :: WindowArranger a -> Rectangle -> Maybe (Stack a) -> [(a, Rectangle)] -> ([(a, Rectangle)], Maybe (WindowArranger a)) # hook :: WindowArranger a -> X () # unhook :: WindowArranger a -> X () # modifierDescription :: WindowArranger a -> String # modifyDescription :: LayoutClass l a => WindowArranger a -> l a -> String #
Read a => Read (WindowArranger a) # |
Methods readsPrec :: Int -> ReadS (WindowArranger a) # readList :: ReadS [WindowArranger a] # readPrec :: ReadPrec (WindowArranger a) # readListPrec :: ReadPrec [WindowArranger a] #
Show a => Show (WindowArranger a) # |
Methods showsPrec :: Int -> WindowArranger a -> ShowS # show :: WindowArranger a -> String # showList :: [WindowArranger a] -> ShowS #

memberFromList :: (b -> c) -> (c -> a -> Bool) -> a -> [b] -> [b] #

Given a function to be applied to each member of ta list, and a function to check a condition by processing this transformed member with something, you get the first member that satisfy the condition, or an empty list.

listFromList :: (b -> c) -> (c -> [a] -> Bool) -> [a] -> [b] -> [b] #

Given a function to be applied to each member of a list, and a function to check a condition by processing this transformed member with the members of a list, you get the list of members that satisfy the condition.

diff :: Eq a => ([a], [a]) -> ([a], [a]) #

Get the list of elements to be deleted and the list of elements to be added to the first list in order to get the second list.