mirror of
https://github.com/xmonad/xmonad-contrib.git
synced 2025-08-09 08:21:51 -07:00
Add layout hook for ScreenCorners.
This commit is contained in:
@@ -1,8 +1,8 @@
|
|||||||
{-# LANGUAGE DeriveDataTypeable #-}
|
{-# LANGUAGE DeriveDataTypeable, FlexibleInstances, MultiParamTypeClasses #-}
|
||||||
-----------------------------------------------------------------------------
|
-----------------------------------------------------------------------------
|
||||||
-- |
|
-- |
|
||||||
-- Module : XMonad.Hooks.ScreenCorners
|
-- Module : XMonad.Hooks.ScreenCorners
|
||||||
-- Copyright : (c) 2009 Nils Schweinsberg
|
-- Copyright : (c) 2009 Nils Schweinsberg, 2015 Evgeny Kurnevsky
|
||||||
-- License : BSD3-style (see LICENSE)
|
-- License : BSD3-style (see LICENSE)
|
||||||
--
|
--
|
||||||
-- Maintainer : Nils Schweinsberg <mail@n-sch.de>
|
-- Maintainer : Nils Schweinsberg <mail@n-sch.de>
|
||||||
@@ -25,12 +25,16 @@ module XMonad.Hooks.ScreenCorners
|
|||||||
|
|
||||||
-- * Event hook
|
-- * Event hook
|
||||||
, screenCornerEventHook
|
, screenCornerEventHook
|
||||||
|
|
||||||
|
-- * Layout hook
|
||||||
|
, screenCornerLayoutHook
|
||||||
) where
|
) where
|
||||||
|
|
||||||
import Data.Monoid
|
import Data.Monoid
|
||||||
import Data.List (find)
|
import Data.List (find)
|
||||||
import XMonad
|
import XMonad
|
||||||
import XMonad.Util.XUtils (fi)
|
import XMonad.Util.XUtils (fi)
|
||||||
|
import XMonad.Layout.LayoutModifier
|
||||||
|
|
||||||
import qualified Data.Map as M
|
import qualified Data.Map as M
|
||||||
import qualified XMonad.Util.ExtensibleState as XS
|
import qualified XMonad.Util.ExtensibleState as XS
|
||||||
@@ -142,6 +146,23 @@ screenCornerEventHook CrossingEvent { ev_window = win } = do
|
|||||||
screenCornerEventHook _ = return (All True)
|
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
|
-- $usage
|
||||||
--
|
--
|
||||||
@@ -163,6 +184,13 @@ screenCornerEventHook _ = return (All True)
|
|||||||
-- > , (SCLowerLeft, prevWS)
|
-- > , (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:
|
-- And finally wait for screen corner events in your event hook:
|
||||||
--
|
--
|
||||||
-- > myEventHook e = do
|
-- > myEventHook e = do
|
||||||
|
Reference in New Issue
Block a user