From f7831d52e51f7cfa7ea21ad0ffeddf8ebfb62c08 Mon Sep 17 00:00:00 2001 From: Andrea Rossato Date: Sat, 28 Jul 2007 15:20:29 +0200 Subject: Commands: refactoring to include in MetaModule Just a small refactooring (well, now runCommand requires a command list, and I added runCommand's that will take a string to run it against the default command list) to include this module in MetaModule so that we can track it in case of API changes (this patch has been requested by Spencer). darcs-hash:20070728132029-32816-448eb6fdec6c3cb564ccd6f93e3f56cf065bba24.gz --- Commands.hs | 34 +++++++++++++++++++--------------- 1 file changed, 19 insertions(+), 15 deletions(-) (limited to 'Commands.hs') diff --git a/Commands.hs b/Commands.hs index 921cb1b..0472a45 100644 --- a/Commands.hs +++ b/Commands.hs @@ -17,14 +17,18 @@ module XMonadContrib.Commands ( -- * Usage -- $usage + commandMap, runCommand, + runCommand', + workspaceCommands, + screenCommands, defaultCommands ) where - + import XMonad import Operations -import {-# SOURCE #-} Config (workspaces, commands) import XMonadContrib.Dmenu (dmenu) +import {-# SOURCE #-} Config (workspaces) import qualified Data.Map as M import System.Exit @@ -42,22 +46,16 @@ import Data.Maybe -- -- and define the list commands: -- +-- > commands :: [(String, X ())] -- > commands = defaultCommands -- --- Finally, add the following lines to Config.hs-boot: --- --- > import XMonad (X) --- > workspaces :: Int --- > commands :: [(String, X ())] --- -- A popup menu of internal xmonad commands will appear. You can -- change the commands by changing the contents of the list -- 'commands'. (If you like it enough, you may even want to get rid -- of many of your other key bindings!) - -commandMap :: M.Map String (X ()) -commandMap = M.fromList commands +commandMap :: [(String, X ())] -> M.Map String (X ()) +commandMap c = M.fromList c workspaceCommands :: [(String, X ())] workspaceCommands = [((m ++ show i), f (fromIntegral i)) @@ -91,7 +89,13 @@ defaultCommands = workspaceCommands ++ screenCommands , ("quit-wm", io $ exitWith ExitSuccess) ] -runCommand :: X () -runCommand = do - choice <- dmenu (M.keys commandMap) - fromMaybe (return ()) (M.lookup choice commandMap) +runCommand :: [(String, X ())] -> X () +runCommand cl = do + let m = commandMap cl + choice <- dmenu (M.keys m) + fromMaybe (return ()) (M.lookup choice m) + +runCommand' :: String -> X () +runCommand' c = do + let m = commandMap defaultCommands + fromMaybe (return ()) (M.lookup c m) -- cgit v1.2.3