XMonad.Layout.Groups.Wmii

xmonad-contrib-0.18.1: Community-maintained extensions for xmonad

Copyright | Quentin Moser <moserq@gmail.com>
License | BSD-style (see LICENSE)
Maintainer | orphaned
Stability | stable
Portability | unportable
Safe Haskell | None
Language | Haskell2010

XMonad.Layout.Groups.Wmii

Contents

- Usage
- Useful re-exports

Description

A wmii-like layout algorithm.

Synopsis

- wmii :: Shrinker p => p -> Theme -> Groups (ModifiedLayout Rename (ModifiedLayout (Decoration TabbedDecoration p) (Ignore ChangeLayout (Ignore JumpToLayout (ModifiedLayout UnEscape (Choose (ModifiedLayout Rename Tall) (Choose (ModifiedLayout Rename Simplest) Full))))))) (ZoomRow GroupEQ) Window
- zoomGroupIn :: X ()
- zoomGroupOut :: X ()
- zoomGroupReset :: X ()
- toggleGroupFull :: X ()
- groupToNextLayout :: X ()
- groupToFullLayout :: X ()
- groupToTabbedLayout :: X ()
- groupToVerticalLayout :: X ()
- shrinkText :: DefaultShrinker
- def :: Default a => a
- module XMonad.Layout.Groups.Helpers

# Usage

This module provides a layout inspired by the one used by the wmii (http://wmii.suckless.org) window manager. Windows are arranged into groups in a horizontal row, and each group can lay out its windows

- by maximizing the focused one
- by tabbing them (wmii uses a stacked layout, but I'm too lazy to write it)
- by arranging them in a column.

As the groups are arranged in a `ZoomRow`, the relative width of each group can be increased or decreased at will. Groups can also be set to use the whole screen whenever they have focus.

You can use the contents of this module by adding

    import XMonad.Layout.Groups.Wmii

to the top of your `xmonad.hs`, and adding `wmii` (with a `Shrinker` and decoration `Theme` as parameters) to your layout hook, for example:

    myLayout = wmii shrinkText def

To be able to zoom in and out of groups, change their inner layout, etc., create key bindings for the relevant actions:

    ((modMask, xK_f), toggleGroupFull)

and so on.

For more information on how to extend your layoutHook and key bindings, see the tutorial and XMonad.Doc.Extending.

Finally, you will probably want to be able to move focus and windows between groups in a consistent fashion. For this, you should take a look at the XMonad.Layout.Groups.Helpers module, whose contents are re-exported by this module.

wmii :: Shrinker p => p -> Theme -> Groups (ModifiedLayout Rename (ModifiedLayout (Decoration TabbedDecoration p) (Ignore ChangeLayout (Ignore JumpToLayout (ModifiedLayout UnEscape (Choose (ModifiedLayout Rename Tall) (Choose (ModifiedLayout Rename Simplest) Full))))))) (ZoomRow GroupEQ) Window #

A layout inspired by wmii

zoomGroupIn :: X () #

Increase the width of the focused group

zoomGroupOut :: X () #

Decrease the size of the focused group

zoomGroupReset :: X () #

Reset the size of the focused group to the default

toggleGroupFull :: X () #

Toggle whether the currently focused group should be maximized whenever it has focus.

groupToNextLayout :: X () #

Rotate the layouts in the focused group.

groupToFullLayout :: X () #

Switch the focused group to the "maximized" layout.

groupToTabbedLayout :: X () #

Switch the focused group to the "tabbed" layout.

groupToVerticalLayout :: X () #

Switch the focused group to the "column" layout.

# Useful re-exports

shrinkText :: DefaultShrinker #

def :: Default a => a #

The default value for this type.

module XMonad.Layout.Groups.Helpers