Copyright | (c) Nelson Elhage <nelhage@mit.edu> |
---|---|
License | BSD |
Maintainer | Nelson Elhage <nelhage@mit.edu> |
Stability | unstable |
Portability | unportable |
Safe Haskell | None |
Language | Haskell98 |
Manipulate screens ordered by physical location instead of ID
- newtype PhysicalScreen = P Int
- getScreen :: PhysicalScreen -> X (Maybe ScreenId)
- viewScreen :: PhysicalScreen -> X ()
- sendToScreen :: PhysicalScreen -> X ()
- onNextNeighbour :: (WorkspaceId -> WindowSet -> WindowSet) -> X ()
- onPrevNeighbour :: (WorkspaceId -> WindowSet -> WindowSet) -> X ()
Usage
This module allows you name Xinerama screens from XMonad using their
physical location relative to each other (as reported by Xinerama),
rather than their ScreenID
s, which are arbitrarily determined by
your X server and graphics hardware.
Screens are ordered by the upper-left-most corner, from top-to-bottom and then left-to-right.
Example usage in your ~/.xmonad/xmonad.hs
file:
import XMonad.Actions.PhysicalScreens
, ((modMask, xK_a), onPrevNeighbour W.view) , ((modMask, xK_o), onNextNeighbour W.view) , ((modMask .|. shiftMask, xK_a), onPrevNeighbour W.shift) , ((modMask .|. shiftMask, xK_o), onNextNeighbour W.shift)
-- -- mod-{w,e,r}, Switch to physical/Xinerama screens 1, 2, or 3 -- mod-shift-{w,e,r}, Move client to screen 1, 2, or 3 -- [((modm .|. mask, key), f sc) | (key, sc) <- zip [xK_w, xK_e, xK_r] [0..] , (f, mask) <- [(viewScreen, 0), (sendToScreen, shiftMask)]]
For detailed instructions on editing your key bindings, see XMonad.Doc.Extending.
newtype PhysicalScreen Source
The type of the index of a screen by location
getScreen :: PhysicalScreen -> X (Maybe ScreenId) Source
Translate a physical screen index to a ScreenId
viewScreen :: PhysicalScreen -> X () Source
Switch to a given physical screen
sendToScreen :: PhysicalScreen -> X () Source
Send the active window to a given physical screen
onNextNeighbour :: (WorkspaceId -> WindowSet -> WindowSet) -> X () Source
Apply operation on a WindowSet with the WorkspaceId of the next screen in the physical order as parameter.
onPrevNeighbour :: (WorkspaceId -> WindowSet -> WindowSet) -> X () Source
Apply operation on a WindowSet with the WorkspaceId of the previous screen in the physical order as parameter.