mirror of
https://github.com/xmonad/xmonad-contrib.git
synced 2025-08-01 20:51:52 -07:00
add modules to deal with Workspaces (select, etc) by name using XPrompt.
This commit is contained in:
45
WorkspacePrompt.hs
Normal file
45
WorkspacePrompt.hs
Normal file
@@ -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
|
Reference in New Issue
Block a user