XMonad.Actions.OnScreen

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

Copyright | (c) 2009 Nils Schweinsberg
License | BSD3-style (see LICENSE)
Maintainer | Nils Schweinsberg <mail@n-sch.de>
Stability | unstable
Portability | unportable
Safe Haskell | None
Language | Haskell2010

XMonad.Actions.OnScreen

Contents

- Usage

Description

Control workspaces on different screens (in xinerama mode).

Synopsis

- onScreen :: (WindowSet -> WindowSet) -> Focus -> ScreenId -> WindowSet -> WindowSet
- onScreen' :: X () -> Focus -> ScreenId -> X ()
- data Focus
  - = FocusNew
  - | FocusCurrent
  - | FocusTag WorkspaceId
  - | FocusTagVisible WorkspaceId
- viewOnScreen :: ScreenId -> WorkspaceId -> WindowSet -> WindowSet
- greedyViewOnScreen :: ScreenId -> WorkspaceId -> WindowSet -> WindowSet
- onlyOnScreen :: ScreenId -> WorkspaceId -> WindowSet -> WindowSet
- toggleOnScreen :: ScreenId -> WorkspaceId -> WindowSet -> WindowSet
- toggleGreedyOnScreen :: ScreenId -> WorkspaceId -> WindowSet -> WindowSet

# Usage

This module provides an easy way to control, what you see on other screens in xinerama mode without having to focus them. Put this into your `xmonad.hs`:

    import XMonad.Actions.OnScreen

Then add the appropriate keybindings, for example replace your current keys to switch the workspaces with this at the bottom of your keybindings:

        ++
        [ ((m .|. modm, k), windows (f i))
          | (i, k) <- zip (workspaces conf) ([xK_1 .. xK_9] ++ [xK_0])
          , (f, m) <- [ (viewOnScreen 0, 0)
                      , (viewOnScreen 1, controlMask)
                      , (greedyView, controlMask .|. shiftMask) ]
        ]

This will provide you with the following keybindings:

- modkey + 1-0: Switch to workspace 1-0 on screen 0
- modkey + control + 1-0: Switch to workspace 1-0 on screen 1
- modkey + control + shift + 1-0: Default greedyView behaviour

A more basic version inside the default keybindings would be:

           , ((modm .|. controlMask, xK_1), windows (viewOnScreen 0 "1"))

where 0 is the first screen and "1" the workspace with the tag "1".

For detailed instructions on editing your key bindings, see the tutorial.

onScreen #

Arguments

:: (WindowSet -> WindowSet) | function to run
-> Focus | what to do with the focus
-> ScreenId | screen id
-> WindowSet | current stack
-> WindowSet |

Run any function that modifies the stack on a given screen. This function will also need to know which Screen to focus after the function has been run.

onScreen' #

Arguments

:: X () | X function to run
-> Focus | focus
-> ScreenId | screen id
-> X () |

A variation of `onScreen` which will take any `X ()` function and run it on the given screen. Warning: This function will change focus even if the function it's supposed to run doesn't succeed.

data Focus #

Focus data definitions

Constructors

FocusNew | always focus the new screen
FocusCurrent | always keep the focus on the current screen
FocusTag WorkspaceId | always focus tag i on the new stack
FocusTagVisible WorkspaceId | focus tag i only if workspace with tag i is visible on the old stack

viewOnScreen #

Arguments

:: ScreenId | screen id
-> WorkspaceId | index of the workspace
-> WindowSet | current stack
-> WindowSet |

Switch to workspace `i` on screen `sc`. If `i` is visible use `view` to switch focus to the workspace `i`.

greedyViewOnScreen #

Arguments

:: ScreenId | screen id
-> WorkspaceId | index of the workspace
-> WindowSet | current stack
-> WindowSet |

Switch to workspace `i` on screen `sc`. If `i` is visible use `greedyView` to switch the current workspace with workspace `i`.

onlyOnScreen #

Arguments

:: ScreenId | screen id
-> WorkspaceId | index of the workspace
-> WindowSet | current stack
-> WindowSet |

Switch to workspace `i` on screen `sc`. If `i` is visible do nothing.

toggleOnScreen #

Arguments

:: ScreenId | screen id
-> WorkspaceId | index of the workspace
-> WindowSet | current stack
-> WindowSet |

`toggleOrView` as in XMonad.Actions.CycleWS for `onScreen` with view

toggleGreedyOnScreen #

Arguments

:: ScreenId | screen id
-> WorkspaceId | index of the workspace
-> WindowSet | current stack
-> WindowSet |

`toggleOrView` from XMonad.Actions.CycleWS for `onScreen` with greedyView