xmonad-contrib-0.11: Third party extensions for xmonad

Portabilityunportable
Stabilityunstable
MaintainerNils Schweinsberg <mail@n-sch.de>
Safe HaskellSafe-Infered

XMonad.Actions.OnScreen

Contents

Description

Control workspaces on different screens (in xinerama mode).

Synopsis

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/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 XMonad.Doc.Extending.

onScreenSource

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'Source

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 Source

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

viewOnScreenSource

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.

greedyViewOnScreenSource

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.

onlyOnScreenSource

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.

toggleOnScreenSource

Arguments

:: ScreenId

screen id

-> WorkspaceId

index of the workspace

-> WindowSet

current stack

-> WindowSet 

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

toggleGreedyOnScreenSource

Arguments

:: ScreenId

screen id

-> WorkspaceId

index of the workspace

-> WindowSet

current stack

-> WindowSet 

toggleOrView from XMonad.Actions.CycleWS for onScreen with greedyView