mirror of
https://github.com/xmonad/xmonad-contrib.git
synced 2025-05-19 11:30:22 -07:00
46 lines
1.4 KiB
Haskell
46 lines
1.4 KiB
Haskell
-----------------------------------------------------------------------------
|
|
-- |
|
|
-- 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 hiding ( workspaces )
|
|
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
|