XMonad.Actions.PhysicalScreens

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

Copyright | (c) Nelson Elhage <nelhage@mit.edu>
License | BSD
Maintainer | Nelson Elhage <nelhage@mit.edu>
Stability | unstable
Portability | unportable
Safe Haskell | None
Language | Haskell2010

XMonad.Actions.PhysicalScreens

Contents

- Usage

Description

Manipulate screens ordered by physical location instead of ID

Synopsis

- newtype PhysicalScreen = P Int
- getScreen :: ScreenComparator -> PhysicalScreen -> X (Maybe ScreenId)
- viewScreen :: ScreenComparator -> PhysicalScreen -> X ()
- sendToScreen :: ScreenComparator -> PhysicalScreen -> X ()
- onNextNeighbour :: ScreenComparator -> (WorkspaceId -> WindowSet -> WindowSet) -> X ()
- onPrevNeighbour :: ScreenComparator -> (WorkspaceId -> WindowSet -> WindowSet) -> X ()
- horizontalScreenOrderer :: ScreenComparator
- verticalScreenOrderer :: ScreenComparator
- newtype ScreenComparator = ScreenComparator ((ScreenId, Rectangle) -> (ScreenId, Rectangle) -> Ordering)
- getScreenIdAndRectangle :: Screen i l a ScreenId ScreenDetail -> (ScreenId, Rectangle)
- screenComparatorById :: (ScreenId -> ScreenId -> Ordering) -> ScreenComparator
- screenComparatorByRectangle :: (Rectangle -> Rectangle -> Ordering) -> ScreenComparator

# 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.

You can specify how to order the screen by giving a ScreenComparator. To create a screen comparator you can use screenComparatorByRectangle or screenComparatorByScreenId. The default ScreenComparator orders screens by the upper-left-most corner, from top-to-bottom and then left-to-right.

Example usage in your `xmonad.hs` file:

    import XMonad.Actions.PhysicalScreens
    import Data.Default

    , ((modMask, xK_a), onPrevNeighbour def W.view)
    , ((modMask, xK_o), onNextNeighbour def W.view)
    , ((modMask .|. shiftMask, xK_a), onPrevNeighbour def W.shift)
    , ((modMask .|. shiftMask, xK_o), onNextNeighbour def 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 def, 0), (sendToScreen def, shiftMask)]]

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

newtype PhysicalScreen #

The type of the index of a screen by location

Constructors

P Int |

#### Instances

Instances details

Enum PhysicalScreen # |
Instance details Defined in XMonad.Actions.PhysicalScreens Methods succ :: PhysicalScreen -> PhysicalScreen # pred :: PhysicalScreen -> PhysicalScreen # toEnum :: Int -> PhysicalScreen # fromEnum :: PhysicalScreen -> Int # enumFrom :: PhysicalScreen -> [PhysicalScreen] # enumFromThen :: PhysicalScreen -> PhysicalScreen -> [PhysicalScreen] # enumFromTo :: PhysicalScreen -> PhysicalScreen -> [PhysicalScreen] # enumFromThenTo :: PhysicalScreen -> PhysicalScreen -> PhysicalScreen -> [PhysicalScreen] #
Num PhysicalScreen # |
Instance details Defined in XMonad.Actions.PhysicalScreens Methods (+) :: PhysicalScreen -> PhysicalScreen -> PhysicalScreen # (-) :: PhysicalScreen -> PhysicalScreen -> PhysicalScreen # (*) :: PhysicalScreen -> PhysicalScreen -> PhysicalScreen # negate :: PhysicalScreen -> PhysicalScreen # abs :: PhysicalScreen -> PhysicalScreen # signum :: PhysicalScreen -> PhysicalScreen # fromInteger :: Integer -> PhysicalScreen #
Read PhysicalScreen # |
Instance details Defined in XMonad.Actions.PhysicalScreens Methods readsPrec :: Int -> ReadS PhysicalScreen # readList :: ReadS [PhysicalScreen] # readPrec :: ReadPrec PhysicalScreen # readListPrec :: ReadPrec [PhysicalScreen] #
Integral PhysicalScreen # |
Instance details Defined in XMonad.Actions.PhysicalScreens Methods quot :: PhysicalScreen -> PhysicalScreen -> PhysicalScreen # rem :: PhysicalScreen -> PhysicalScreen -> PhysicalScreen # div :: PhysicalScreen -> PhysicalScreen -> PhysicalScreen # mod :: PhysicalScreen -> PhysicalScreen -> PhysicalScreen # quotRem :: PhysicalScreen -> PhysicalScreen -> (PhysicalScreen, PhysicalScreen) # divMod :: PhysicalScreen -> PhysicalScreen -> (PhysicalScreen, PhysicalScreen) # toInteger :: PhysicalScreen -> Integer #
Real PhysicalScreen # |
Instance details Defined in XMonad.Actions.PhysicalScreens Methods toRational :: PhysicalScreen -> Rational #
Show PhysicalScreen # |
Instance details Defined in XMonad.Actions.PhysicalScreens Methods showsPrec :: Int -> PhysicalScreen -> ShowS # show :: PhysicalScreen -> String # showList :: [PhysicalScreen] -> ShowS #
Eq PhysicalScreen # |
Instance details Defined in XMonad.Actions.PhysicalScreens Methods (==) :: PhysicalScreen -> PhysicalScreen -> Bool # (/=) :: PhysicalScreen -> PhysicalScreen -> Bool #
Ord PhysicalScreen # |
Instance details Defined in XMonad.Actions.PhysicalScreens Methods compare :: PhysicalScreen -> PhysicalScreen -> Ordering # (<) :: PhysicalScreen -> PhysicalScreen -> Bool # (<=) :: PhysicalScreen -> PhysicalScreen -> Bool # (>) :: PhysicalScreen -> PhysicalScreen -> Bool # (>=) :: PhysicalScreen -> PhysicalScreen -> Bool # max :: PhysicalScreen -> PhysicalScreen -> PhysicalScreen # min :: PhysicalScreen -> PhysicalScreen -> PhysicalScreen #

getScreen :: ScreenComparator -> PhysicalScreen -> X (Maybe ScreenId) #

Translate a physical screen index to a `ScreenId`

viewScreen :: ScreenComparator -> PhysicalScreen -> X () #

Switch to a given physical screen

sendToScreen :: ScreenComparator -> PhysicalScreen -> X () #

Send the active window to a given physical screen

onNextNeighbour :: ScreenComparator -> (WorkspaceId -> WindowSet -> WindowSet) -> X () #

Apply operation on a WindowSet with the WorkspaceId of the next screen in the physical order as parameter.

onPrevNeighbour :: ScreenComparator -> (WorkspaceId -> WindowSet -> WindowSet) -> X () #

Apply operation on a WindowSet with the WorkspaceId of the previous screen in the physical order as parameter.

horizontalScreenOrderer :: ScreenComparator #

orders screens by the upper-left-most corner, from left-to-right

verticalScreenOrderer :: ScreenComparator #

orders screens by the upper-left-most corner, from top-to-bottom

newtype ScreenComparator #

A ScreenComparator allow to compare two screen based on their coordonate and Xinerama Id

Constructors

ScreenComparator ((ScreenId, Rectangle) -> (ScreenId, Rectangle) -> Ordering) |

#### Instances

Instances details

Default ScreenComparator # | The default ScreenComparator orders screens by the upper-left-most corner, from top-to-bottom
Instance details Defined in XMonad.Actions.PhysicalScreens Methods def :: ScreenComparator #

getScreenIdAndRectangle :: Screen i l a ScreenId ScreenDetail -> (ScreenId, Rectangle) #

screenComparatorById :: (ScreenId -> ScreenId -> Ordering) -> ScreenComparator #

Compare screen only by their Xinerama id

screenComparatorByRectangle :: (Rectangle -> Rectangle -> Ordering) -> ScreenComparator #

Compare screen only by their coordonate