| xmonad-contrib-0.8.1: Third party extensions for xmonad | Source code | Contents | Index

XMonad.Actions.Plane

Portability | unportable
Stability | unstable
Maintainer | Marco Tlio Gontijo e Silva <marcot@riseup.net>

Contents

Usage
Data types
Navigating through workspaces

Description

This module has functions to navigate through workspaces in a bidimensional manner. It allows the organization of workspaces in lines, and provides functions to move and shift windows in all four directions (left, up, right and down) possible in a surface.

This functionality was inspired by GNOME (finite) and KDE (infinite) keybindings for workspace navigation, and by XMonad.Actions.CycleWS for the idea of applying this approach to XMonad.

Synopsis

data Direction

= ToLeft
| ToUp
| ToRight
| ToDown

data Limits

= Finite
| Circular
| Linear

data Lines

= GConf
| Lines Int

planeShift :: Lines -> Limits -> Direction -> X ()
planeMove :: Lines -> Limits -> Direction -> X ()

Usage

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

     import XMonad.Actions.Plane

     main = xmonad defaultConfig {keys = myKeys}

     myKeys conf = union (keys defaultConfig conf) $ myNewKeys conf

     myNewkeys (XConfig {modMask = m}) =
         fromList
         [ ((keyMask .|. m, keySym), function (Lines 3) Finite direction)
         | (keySym, direction) <- zip [xK_Left .. xK_Down] $ enumFrom ToLeft
         , (keyMask, function) <- [(0, planeMove), (shiftMask, planeShift)]
         ]

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

Data types

data Direction | Source

Direction to go in the plane.
Constructors

ToLeft |
ToUp |
ToRight |
ToDown |

Instances

Enum Direction

data Limits | Source

Defines whether it's a finite or a circular organization of workspaces.
Constructors

Finite | When you're at a edge of the plane, there's no way to move to the next region.
Circular | If you try to move, you'll get to the other edge, on the other side.
Linear | The plan comes as a row.

Instances

Eq Limits

data Lines | Source

The number of lines in which the workspaces will be arranged. It's possible to use a number of lines that is not a divisor of the number of workspaces, but the results are better when using a divisor. If it's not a divisor, the last line will have the remaining workspaces.
Constructors

GConf | Use `gconftool-2` to find out the number of lines.
Lines Int | Specify the number of lines explicity.

Navigating through workspaces

planeShift :: Lines -> Limits -> Direction -> X () | Source

Shift a window to the next workspace in `Direction`. Note that this will also move to the next workspace.

planeMove :: Lines -> Limits -> Direction -> X () | Source

Move to the next workspace in `Direction`.
Produced by Haddock version 2.4.2