xmonad-contrib-0.18.1: Community-maintained extensions for xmonad
Copyright(c) 2009 Nils Schweinsberg 2015 Evgeny Kurnevsky 2024 Yuanle Song
LicenseBSD3-style (see LICENSE)
MaintainerNils Schweinsberg <mail@n-sch.de>
Stabilityunstable
Portabilityunportable
Safe HaskellNone
LanguageHaskell2010

XMonad.Hooks.ScreenCorners

Description

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

Synopsis

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

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

Add one single X () action to a screen corner

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

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

Event hook

screenCornerEventHook :: Event -> X All Source #

Handle screen corner events

Layout hook

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