diff options
Diffstat (limited to '')
-rw-r--r-- | LayoutHooks.hs | 44 |
1 files changed, 0 insertions, 44 deletions
diff --git a/LayoutHooks.hs b/LayoutHooks.hs deleted file mode 100644 index 9a4a95d..0000000 --- a/LayoutHooks.hs +++ /dev/null @@ -1,44 +0,0 @@ ------------------------------------------------------------------------------ --- | --- Module : XMonadContrib.LayoutHooks --- Copyright : (c) Stefan O'Rear <stefanor@cox.net> --- License : BSD --- --- Maintainer : Stefan O'Rear <stefanor@cox.net> --- Stability : unstable --- Portability : portable --- --- General layout-level hooks. ------------------------------------------------------------------------------ - -module XMonadContrib.LayoutHooks ( addLayoutMessageHook ) where - -import qualified Data.Map as M ( adjust ) -import Control.Arrow ( first ) -import Control.Monad.State ( modify ) - -import XMonad -import qualified StackSet as W - -install :: (SomeMessage -> X Bool) -> Layout a -> Layout a -install hk lay = lay{ modifyLayout = mod' } - where - mod' msg = do reinst <- hk msg - nlay <- modifyLayout lay msg - - return $ cond_reinst reinst nlay - - -- no need to make anything change - cond_reinst True Nothing = Nothing - -- reinstall - cond_reinst True (Just nlay) = Just (install hk nlay) - -- restore inner layout - cond_reinst False Nothing = Just lay - -- let it rot - cond_reinst False (Just nlay) = Just nlay - --- Return True each time you want the hook reinstalled -addLayoutMessageHook :: (SomeMessage -> X Bool) -> X () -addLayoutMessageHook hk = modify $ \ s -> - let nr = W.tag . W.workspace . W.current . windowset $ s - in s { layouts = M.adjust (first $ install hk) nr (layouts s) } |