From a9dd237b2693c518d71aa896bd64c1f65ae925d9 Mon Sep 17 00:00:00 2001 From: "zhen.sydow" Date: Tue, 13 May 2008 15:47:54 +0200 Subject: new contrib module to launch apps with command line parameters darcs-hash:20080513134754-3cf16-32d43fbbad243d902b1de3c3ddf508fc6efebb9a.gz --- XMonad/Actions/AppLauncher.hs | 70 +++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 70 insertions(+) create mode 100644 XMonad/Actions/AppLauncher.hs (limited to 'XMonad/Actions') diff --git a/XMonad/Actions/AppLauncher.hs b/XMonad/Actions/AppLauncher.hs new file mode 100644 index 0000000..a2026ad --- /dev/null +++ b/XMonad/Actions/AppLauncher.hs @@ -0,0 +1,70 @@ +{- | + Module : XMonad.Actions.AppLauncher + Copyright : (C) 2008 Luis Cabellos + License : None; public domain + + Maintainer : + Stability : unstable + Portability : unportable + + A module for launch applicationes that receive parameters in the command line. + The launcher call a prompt to get the parameters. +-} +module XMonad.Actions.AppLauncher ( -- * Usage + -- $usage + launchApp + + -- * Use case: launching gimp with file + -- $tip + ) where + +import XMonad (X(),MonadIO) +import XMonad.Core (spawn) +import XMonad.Prompt (XPrompt(showXPrompt), mkXPrompt, XPConfig()) +import XMonad.Prompt.Shell (getShellCompl) + +{- $usage + This module is intended to allow the launch of the same application + but changing the parameters using the user response. For example, when + you want to open a image in gimp program, you can open gimp and then use + the File Menu to open the image or you can use this module to select + the image in the command line. + + We use Prompt to get the user command line. This also allow to autoexpand + the names of the files when we are writing the command line. + -} + +{- $tip + +First, you need to import necessary modules. Prompt is used to get the promp +configuration and the AppLauncher module itself. + +> import XMonad.Prompt +> import XMonad.Actions.AppLauncher as AL + +Then you can add the bindings to the applications. + +> ... +> , ((modm, xK_g), AL.launchApp defaultXPConfig "gimp" ) +> , ((modm, xK_g), AL.launchApp defaultXPConfig "evince" ) +> ... + + -} + +-- A customized prompt +data AppPrompt = AppPrompt String +instance XPrompt AppPrompt where + showXPrompt (AppPrompt n) = n ++ " " + +type Application = String +type Parameters = String + +{- | Given an application and its parameters, launch the application. -} +launch :: MonadIO m => Application -> Parameters -> m () +launch app params = spawn ( app ++ " " ++ params ) + + +{- | Get the user's response to a prompt an launch an application using the + input as command parameters of the application.-} +launchApp :: XPConfig -> Application -> X () +launchApp config app = mkXPrompt (AppPrompt app) config (getShellCompl []) $ launch app -- cgit v1.2.3