Portability | unportable |
---|---|
Stability | unstable |
Maintainer | Marco Túlio Gontijo e Silva <marcot@riseup.net> |
Safe Haskell | None |
XMonad.Actions.Plane
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.
Usage
You can use this module with the following in your ~/.xmonad/xmonad.hs
file:
import XMonad.Actions.Plane import Data.Map (union) main = xmonad def {keys = myKeys} myKeys conf = union (keys def conf) $ myNewKeys conf myNewKeys (XConfig {modMask = modm}) = planeKeys modm (Lines 3) Finite
For detailed instructions on editing your key bindings, see XMonad.Doc.Extending.
Data types
data Limits
Defines the behaviour when you're trying to move out of the limits.
Constructors
Finite | Ignore the function call, and keep in the same workspace. |
Circular | Get on the other side, like in the Snake game. |
Linear | The plan comes as a row, so it goes to the next or prev if the workspaces were numbered. |
Instances
Eq Limits |
data Lines
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.
Key bindings
planeKeys :: KeyMask -> Lines -> Limits -> Map (KeyMask, KeySym) (X ())
This is the way most people would like to use this module. It attaches the
KeyMask
passed as a parameter with xK_Left
, xK_Up
, xK_Right
and
xK_Down
, associating it with planeMove
to the corresponding Direction
.
It also associates these bindings with shiftMask
to planeShift
.
Navigating through workspaces
planeShift :: Lines -> Limits -> Direction -> X ()