XMonad.Hooks.ScreenCorners

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

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

XMonad.Hooks.ScreenCorners

Contents

- Usage
- Adding screen corners
- Event hook
- Layout hook

Description

Run `X ()` actions by touching the edge of your screen with your mouse.

Synopsis

- data ScreenCorner
  - = SCUpperLeft
  - | SCUpperRight
  - | SCLowerLeft
  - | SCLowerRight
  - | SCTop
  - | SCBottom
  - | SCLeft
  - | SCRight
- addScreenCorner :: ScreenCorner -> X () -> X ()
- addScreenCorners :: [(ScreenCorner, X ())] -> X ()
- screenCornerEventHook :: Event -> X All
- screenCornerLayoutHook :: l a -> ModifiedLayout ScreenCornerLayout l a

# Usage

This extension adds KDE-like screen corners and GNOME Hot Edge like features to XMonad. By moving your cursor into one of your screen corners or edges, you can trigger an `X ()` action, for example `XMonad.Actions.GridSelect.goToSelected` or `XMonad.Actions.CycleWS.nextWS` etc.

To use it, import it on top of your `xmonad.hs`:

    import XMonad.Hooks.ScreenCorners

Then add your screen corners in our startup hook:

    myStartupHook = do
        ...
        addScreenCorner SCUpperRight (goToSelected def { gs_cellwidth = 200})
        addScreenCorner SCBottom (goToSelected def)
        addScreenCorners [ (SCLowerRight, nextWS)
                         , (SCLowerLeft,  prevWS)
                         ]

Then add layout hook:

    myLayout = screenCornerLayoutHook $ tiled ||| Mirror tiled ||| Full where
        tiled   = Tall nmaster delta ratio
        nmaster = 1
        ratio   = 1 / 2
        delta   = 3 / 100

And finally wait for screen corner events in your event hook:

    myEventHook e = do
        ...
        screenCornerEventHook e

# Adding screen corners

data ScreenCorner #

Constructors

SCUpperLeft |
SCUpperRight |
SCLowerLeft |
SCLowerRight |
SCTop |
SCBottom |
SCLeft |
SCRight |

#### Instances

Instances details

Show ScreenCorner # |
Instance details Defined in XMonad.Hooks.ScreenCorners Methods showsPrec :: Int -> ScreenCorner -> ShowS # show :: ScreenCorner -> String # showList :: [ScreenCorner] -> ShowS #
Eq ScreenCorner # |
Instance details Defined in XMonad.Hooks.ScreenCorners Methods (==) :: ScreenCorner -> ScreenCorner -> Bool # (/=) :: ScreenCorner -> ScreenCorner -> Bool #
Ord ScreenCorner # |
Instance details Defined in XMonad.Hooks.ScreenCorners Methods compare :: ScreenCorner -> ScreenCorner -> Ordering # (<) :: ScreenCorner -> ScreenCorner -> Bool # (<=) :: ScreenCorner -> ScreenCorner -> Bool # (>) :: ScreenCorner -> ScreenCorner -> Bool # (>=) :: ScreenCorner -> ScreenCorner -> Bool # max :: ScreenCorner -> ScreenCorner -> ScreenCorner # min :: ScreenCorner -> ScreenCorner -> ScreenCorner #

addScreenCorner :: ScreenCorner -> X () -> X () #

Add one single `X ()` action to a screen corner

addScreenCorners :: [(ScreenCorner, X ())] -> X () #

Add a list of `(ScreenCorner, X ())` tuples

# Event hook

screenCornerEventHook :: Event -> X All #

Handle screen corner events

# Layout hook

screenCornerLayoutHook :: l a -> ModifiedLayout ScreenCornerLayout l a #