aboutsummaryrefslogtreecommitdiffstats
path: root/XMonad/Prompt/AppLauncher.hs
diff options
context:
space:
mode:
authorzhen.sydow <zhen.sydow@gmail.com>2008-05-13 22:12:52 +0200
committerzhen.sydow <zhen.sydow@gmail.com>2008-05-13 22:12:52 +0200
commitc606cefb1131091ac67f242761acafa2f7c72c77 (patch)
tree067eb36351a3fb1be52e5e812fe891915eb73250 /XMonad/Prompt/AppLauncher.hs
parentc44c7b763b7921fa7a1afc60295da7ec2780cab3 (diff)
downloadXMonadContrib-c606cefb1131091ac67f242761acafa2f7c72c77.tar.gz
XMonadContrib-c606cefb1131091ac67f242761acafa2f7c72c77.tar.xz
XMonadContrib-c606cefb1131091ac67f242761acafa2f7c72c77.zip
move AppLauncher from Actions module to Prompt module
darcs-hash:20080513201252-3cf16-f92855fb696915644cc2cdbc52f7b3f860894f3d.gz
Diffstat (limited to 'XMonad/Prompt/AppLauncher.hs')
-rw-r--r--XMonad/Prompt/AppLauncher.hs72
1 files changed, 72 insertions, 0 deletions
diff --git a/XMonad/Prompt/AppLauncher.hs b/XMonad/Prompt/AppLauncher.hs
new file mode 100644
index 0000000..4cb3ecc
--- /dev/null
+++ b/XMonad/Prompt/AppLauncher.hs
@@ -0,0 +1,72 @@
+-----------------------------------------------------------------------------
+-- |
+-- Module : XMonad.Prompt.AppLauncher
+-- Copyright : (C) 2008 Luis Cabellos
+-- License : BSD3
+--
+-- 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.Prompt.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.Prompt.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