new contrib module to launch apps with command line parameters

This commit is contained in:
zhen.sydow
2008-05-13 13:47:54 +00:00
parent 090d77236d
commit 07b2f424b1
2 changed files with 71 additions and 0 deletions

View File

@@ -0,0 +1,70 @@
{- |
Module : XMonad.Actions.AppLauncher
Copyright : (C) 2008 Luis Cabellos
License : None; public domain
Maintainer : <zhen.sydow@gmail.com>
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

View File

@@ -67,6 +67,7 @@ library
XMonad.Doc.Configuring XMonad.Doc.Configuring
XMonad.Doc.Extending XMonad.Doc.Extending
XMonad.Doc.Developing XMonad.Doc.Developing
XMonad.Actions.AppLauncher
XMonad.Actions.Commands XMonad.Actions.Commands
XMonad.Actions.ConstrainedResize XMonad.Actions.ConstrainedResize
XMonad.Actions.CopyWindow XMonad.Actions.CopyWindow