diff options
author | Anders Engstrom <ankaan@gmail.com> | 2010-03-08 12:50:22 +0100 |
---|---|---|
committer | Anders Engstrom <ankaan@gmail.com> | 2010-03-08 12:50:22 +0100 |
commit | af5971bb82e71409b02ebe8bffeec2707b6bbf4b (patch) | |
tree | da27b129ae896a5be4376385a80aef2467d82f93 /XMonad/Util | |
parent | 0091a17372b0e639e3f0140b52251a3857e2a219 (diff) | |
download | XMonadContrib-af5971bb82e71409b02ebe8bffeec2707b6bbf4b.tar.gz XMonadContrib-af5971bb82e71409b02ebe8bffeec2707b6bbf4b.tar.xz XMonadContrib-af5971bb82e71409b02ebe8bffeec2707b6bbf4b.zip |
X.U.Dmenu helpers to run dmenu with arguments
Ignore-this: 7d582e06d0e393c717f43e0729306fbf
darcs-hash:20100308115022-8978f-f1584a0f90a4d7f4620e4d45052bb2f8ac33f022.gz
Diffstat (limited to 'XMonad/Util')
-rw-r--r-- | XMonad/Util/Dmenu.hs | 21 |
1 files changed, 17 insertions, 4 deletions
diff --git a/XMonad/Util/Dmenu.hs b/XMonad/Util/Dmenu.hs index 162e644..17c09e3 100644 --- a/XMonad/Util/Dmenu.hs +++ b/XMonad/Util/Dmenu.hs @@ -17,7 +17,7 @@ module XMonad.Util.Dmenu ( -- * Usage -- $usage - dmenu, dmenuXinerama, dmenuMap, menu, menuMap + dmenu, dmenuXinerama, dmenuMap, menu, menuArgs, menuMap, menuMapArgs ) where import XMonad @@ -38,19 +38,32 @@ dmenuXinerama :: [String] -> X String dmenuXinerama opts = do curscreen <- (fromIntegral . W.screen . W.current) `fmap` gets windowset :: X Int runProcessWithInput "dmenu" ["-xs", show (curscreen+1)] (unlines opts) + menuArgs "dmenu" ["-xs", show (curscreen+1)] opts +-- | Run dmenu to select an option from a list. dmenu :: [String] -> X String dmenu opts = menu "dmenu" opts +-- | like 'dmenu' but also takes the command to run. menu :: String -> [String] -> X String -menu menuCmd opts = runProcessWithInput menuCmd [] (unlines opts) +menu menuCmd opts = menuArgs menuCmd [] opts +-- | Like 'menu' but also takes a list of command line arguments. +menuArgs :: String -> [String] -> [String] -> X String +menuArgs menuCmd args opts = runProcessWithInput menuCmd args (unlines opts) + +-- | Like 'dmenuMap' but also takes the command to run. menuMap :: String -> M.Map String a -> X (Maybe a) -menuMap menuCmd selectionMap = do +menuMap menuCmd selectionMap = menuMapArgs menuCmd [] selectionMap + +-- | Like 'menuMap' but also takes a list of command line arguments. +menuMapArgs :: String -> [String] -> M.Map String a -> X (Maybe a) +menuMapArgs menuCmd args selectionMap = do selection <- menuFunction (M.keys selectionMap) return $ M.lookup selection selectionMap where - menuFunction = menu menuCmd + menuFunction = menuArgs menuCmd args +-- | Run dmenu to select an entry from a map based on the key. dmenuMap :: M.Map String a -> X (Maybe a) dmenuMap selectionMap = menuMap "dmenu" selectionMap |