aboutsummaryrefslogtreecommitdiffstats
path: root/XMonad/Util
diff options
context:
space:
mode:
authorAnders Engstrom <ankaan@gmail.com>2010-03-08 12:50:22 +0100
committerAnders Engstrom <ankaan@gmail.com>2010-03-08 12:50:22 +0100
commitaf5971bb82e71409b02ebe8bffeec2707b6bbf4b (patch)
treeda27b129ae896a5be4376385a80aef2467d82f93 /XMonad/Util
parent0091a17372b0e639e3f0140b52251a3857e2a219 (diff)
downloadXMonadContrib-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.hs21
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