aboutsummaryrefslogtreecommitdiffstats
path: root/XMonad/Prompt/ConfirmPrompt.hs
diff options
context:
space:
mode:
Diffstat (limited to 'XMonad/Prompt/ConfirmPrompt.hs')
-rw-r--r--XMonad/Prompt/ConfirmPrompt.hs51
1 files changed, 51 insertions, 0 deletions
diff --git a/XMonad/Prompt/ConfirmPrompt.hs b/XMonad/Prompt/ConfirmPrompt.hs
new file mode 100644
index 0000000..650b62a
--- /dev/null
+++ b/XMonad/Prompt/ConfirmPrompt.hs
@@ -0,0 +1,51 @@
+-----------------------------------------------------------------------------
+-- |
+-- Module : XMonad.Prompt.ConfirmPrompt
+-- Copyright : (C) 2015 Antoine Beaupré
+-- License : BSD3
+--
+-- Maintainer : Antoine Beaupré <anarcat@debian.org>
+-- Stability : unstable
+-- Portability : unportable
+--
+-- A module for setting up simple confirmation prompts for keybindings.
+--
+-----------------------------------------------------------------------------
+module XMonad.Prompt.ConfirmPrompt (confirmPrompt
+ -- * Usage
+ -- $usage
+ , module XMonad.Prompt
+ -- * Use case: confirming exit
+ -- $tip
+ , EnterPrompt
+ ) where
+
+import XMonad (X)
+import XMonad.Prompt (XPConfig, XPrompt, showXPrompt, mkXPrompt, mkComplFunFromList)
+
+{- $usage
+
+This module makes it easy to add a confirmation prompt for specific
+actions. Instead of just running the action, a simple confirmation
+prompt will be created using 'XMonad.Prompt' primitives. The action
+will then run normally if the user confirms.
+-}
+
+{- $tip
+This should be used something like this:
+
+> ...
+> , ((modm , xK_l), confirmPrompt defaultXPConfig "exit" $ io (exitWith ExitSuccess))
+> ...
+-}
+
+{- | Customized 'XPrompt' prompt that will ask to confirm the given string -}
+data EnterPrompt = EnterPrompt String
+instance XPrompt EnterPrompt where
+ showXPrompt (EnterPrompt n) = "Confirm " ++ n ++ " (esc/ENTER)"
+
+{- | Prompt the user to confirm a given action. We offer no completion
+ and simply ask to confirm (ENTER) or cancel (ESCAPE). The actual key
+ handling is done by mkXPrompt.-}
+confirmPrompt :: XPConfig -> String -> X() -> X()
+confirmPrompt config app func = mkXPrompt (EnterPrompt app) config (mkComplFunFromList []) $ const func