xmonad-contrib-0.17.1: Community-maintained extensions for xmonad
Copyright(c) Nelson Elhage <nelhage@mit.edu>
LicenseBSD
MaintainerNelson Elhage <nelhage@mit.edu>
Stabilityunstable
Portabilityunportable
Safe HaskellSafe-Inferred
LanguageHaskell2010

XMonad.Actions.PhysicalScreens

Contents

Description

Manipulate screens ordered by physical location instead of ID

Synopsis

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

newtype PhysicalScreen Source #

The type of the index of a screen by location

Constructors

P Int 

Instances

Instances details
Enum PhysicalScreen Source # 
Instance details

Defined in XMonad.Actions.PhysicalScreens

Num PhysicalScreen Source # 
Instance details

Defined in XMonad.Actions.PhysicalScreens

Read PhysicalScreen Source # 
Instance details

Defined in XMonad.Actions.PhysicalScreens

Integral PhysicalScreen Source # 
Instance details

Defined in XMonad.Actions.PhysicalScreens

Real PhysicalScreen Source # 
Instance details

Defined in XMonad.Actions.PhysicalScreens

Show PhysicalScreen Source # 
Instance details

Defined in XMonad.Actions.PhysicalScreens

Eq PhysicalScreen Source # 
Instance details

Defined in XMonad.Actions.PhysicalScreens

Ord PhysicalScreen Source # 
Instance details

Defined in XMonad.Actions.PhysicalScreens

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

Translate a physical screen index to a ScreenId

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

Switch to a given physical screen

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

Send the active window to a given physical screen

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

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

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

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

horizontalScreenOrderer :: ScreenComparator Source #

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

verticalScreenOrderer :: ScreenComparator Source #

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

newtype ScreenComparator Source #

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

Instances

Instances details
Default ScreenComparator Source #

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

Instance details

Defined in XMonad.Actions.PhysicalScreens

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

Compare screen only by their Xinerama id

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

Compare screen only by their coordonate