diff options
author | azahi <azahi@teknik.io> | 2018-06-12 00:21:36 +0300 |
---|---|---|
committer | azahi <azahi@teknik.io> | 2018-06-12 00:21:36 +0300 |
commit | 80c494ea343b0518630536472266a9b200b0fe16 (patch) | |
tree | 247b65e31443e8fbe85639d7cede630c7e98ed4d /src/XMonad/Actions/PerConditionKeys.hs |
Initial commit
Diffstat (limited to 'src/XMonad/Actions/PerConditionKeys.hs')
-rw-r--r-- | src/XMonad/Actions/PerConditionKeys.hs | 23 |
1 files changed, 23 insertions, 0 deletions
diff --git a/src/XMonad/Actions/PerConditionKeys.hs b/src/XMonad/Actions/PerConditionKeys.hs new file mode 100644 index 0000000..85469d6 --- /dev/null +++ b/src/XMonad/Actions/PerConditionKeys.hs @@ -0,0 +1,23 @@ +module XMonad.Actions.PerConditionKeys + ( XCond(..) + , chooseAction + , bindOn + ) where + +import Data.List +import XMonad +import qualified XMonad.StackSet as S + +data XCond = WS | LD + +chooseAction :: XCond -> (String -> X ()) -> X () +chooseAction WS f = withWindowSet (f . S.currentTag) +chooseAction LD f = withWindowSet (f . description . S.layout . S.workspace . S.current) + +bindOn :: XCond -> [(String, X ())] -> X () +bindOn xc bindings = chooseAction xc chooser + where chooser x = case find ((x ==) . fst) bindings of + Just (_, action) -> action + Nothing -> case find (("" ==) . fst) bindings of + Just (_, action) -> action + Nothing -> return () |