From dfb1c52c66d9758b795b0d50c53639b21cae4089 Mon Sep 17 00:00:00 2001 From: Kurnevsky Evgeny Date: Wed, 23 Sep 2015 19:48:48 +0300 Subject: [PATCH] Add layout hook for ScreenCorners. --- XMonad/Hooks/ScreenCorners.hs | 32 ++++++++++++++++++++++++++++++-- 1 file changed, 30 insertions(+), 2 deletions(-) diff --git a/XMonad/Hooks/ScreenCorners.hs b/XMonad/Hooks/ScreenCorners.hs index 38dddd48..1752ef41 100644 --- a/XMonad/Hooks/ScreenCorners.hs +++ b/XMonad/Hooks/ScreenCorners.hs @@ -1,8 +1,8 @@ -{-# LANGUAGE DeriveDataTypeable #-} +{-# LANGUAGE DeriveDataTypeable, FlexibleInstances, MultiParamTypeClasses #-} ----------------------------------------------------------------------------- -- | -- Module : XMonad.Hooks.ScreenCorners --- Copyright : (c) 2009 Nils Schweinsberg +-- Copyright : (c) 2009 Nils Schweinsberg, 2015 Evgeny Kurnevsky -- License : BSD3-style (see LICENSE) -- -- Maintainer : Nils Schweinsberg @@ -25,12 +25,16 @@ module XMonad.Hooks.ScreenCorners -- * Event hook , screenCornerEventHook + + -- * Layout hook + , screenCornerLayoutHook ) where import Data.Monoid import Data.List (find) import XMonad import XMonad.Util.XUtils (fi) +import XMonad.Layout.LayoutModifier import qualified Data.Map as M import qualified XMonad.Util.ExtensibleState as XS @@ -142,6 +146,23 @@ screenCornerEventHook CrossingEvent { ev_window = win } = do screenCornerEventHook _ = return (All True) +-------------------------------------------------------------------------------- +-- Layout hook +-------------------------------------------------------------------------------- + +data ScreenCornerLayout a = ScreenCornerLayout + deriving ( Read, Show ) + +instance LayoutModifier ScreenCornerLayout a where + hook ScreenCornerLayout = withDisplay $ \dpy -> do + ScreenCornerState m <- XS.get + io $ mapM_ (raiseWindow dpy) $ M.keys m + unhook = hook + +screenCornerLayoutHook :: l a -> ModifiedLayout ScreenCornerLayout l a +screenCornerLayoutHook = ModifiedLayout ScreenCornerLayout + + -------------------------------------------------------------------------------- -- $usage -- @@ -163,6 +184,13 @@ screenCornerEventHook _ = return (All True) -- > , (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