aboutsummaryrefslogtreecommitdiffstats
path: root/WorkspacePrompt.hs
diff options
context:
space:
mode:
authorDavid Roundy <droundy@darcs.net>2007-10-17 00:33:47 +0200
committerDavid Roundy <droundy@darcs.net>2007-10-17 00:33:47 +0200
commitd1587d44209f924682f25dffff584d6e052029a4 (patch)
tree4de9e6b397c30865baa62817fda4a43a89837e60 /WorkspacePrompt.hs
parentd1919800f85b211ca7b4e9d52cba2d3cb1e56264 (diff)
downloadXMonadContrib-d1587d44209f924682f25dffff584d6e052029a4.tar.gz
XMonadContrib-d1587d44209f924682f25dffff584d6e052029a4.tar.xz
XMonadContrib-d1587d44209f924682f25dffff584d6e052029a4.zip
add modules to deal with Workspaces (select, etc) by name using XPrompt.
darcs-hash:20071016223347-72aca-a0a6ab2a43a33f5901640fa2f192e0af3ef61a74.gz
Diffstat (limited to 'WorkspacePrompt.hs')
-rw-r--r--WorkspacePrompt.hs45
1 files changed, 45 insertions, 0 deletions
diff --git a/WorkspacePrompt.hs b/WorkspacePrompt.hs
new file mode 100644
index 0000000..005d96a
--- /dev/null
+++ b/WorkspacePrompt.hs
@@ -0,0 +1,45 @@
+-----------------------------------------------------------------------------
+-- |
+-- Module : XMonadContrib.WorkspacePrompt
+-- Copyright : (C) 2007 Andrea Rossato, David Roundy
+-- License : BSD3
+--
+-- Maintainer : droundy@darcs.net
+-- Stability : unstable
+-- Portability : unportable
+--
+-- A directory prompt for XMonad
+--
+-----------------------------------------------------------------------------
+
+module XMonadContrib.WorkspacePrompt (
+ -- * Usage
+ -- $usage
+ workspacePrompt
+ ) where
+
+import Control.Monad.State ( gets )
+import Data.List ( sort )
+import XMonad
+import XMonadContrib.XPrompt
+import StackSet ( workspaces, tag )
+
+-- $usage
+-- You can use this module with the following in your Config.hs file:
+--
+-- > import XMonadContrib.WorkspacePrompt
+--
+-- > , ((modMask .|. shiftMask, xK_m ), workspacePrompt myXPConfig (windows . W.shift))
+
+data Wor = Wor String
+
+instance XPrompt Wor where
+ showXPrompt (Wor x) = x
+
+workspacePrompt :: XPConfig -> (String -> X ()) -> X ()
+workspacePrompt c job = do ws <- gets (workspaces . windowset)
+ let ts = sort $ map tag ws
+ mkXPrompt (Wor "") c (mkCompl ts) job
+
+mkCompl :: [String] -> String -> IO [String]
+mkCompl l s = return $ filter (\x -> take (length s) x == s) l