mirror of
https://github.com/xmonad/xmonad-contrib.git
synced 2025-07-26 09:41:52 -07:00
54 lines
1.8 KiB
Haskell
54 lines
1.8 KiB
Haskell
-----------------------------------------------------------------------------
|
|
-- |
|
|
-- Module : XMonad.Prompt.Layout
|
|
-- Copyright : (C) 2007 Andrea Rossato, David Roundy
|
|
-- License : BSD3
|
|
--
|
|
-- Maintainer :
|
|
-- Stability : unstable
|
|
-- Portability : unportable
|
|
--
|
|
-- A layout-selection prompt for XMonad
|
|
--
|
|
-----------------------------------------------------------------------------
|
|
|
|
module XMonad.Prompt.Layout (
|
|
-- * Usage
|
|
-- $usage
|
|
layoutPrompt
|
|
) where
|
|
|
|
import Data.List ( sort, nub )
|
|
import XMonad hiding ( workspaces )
|
|
import XMonad.Prompt
|
|
import XMonad.StackSet ( workspaces, layout )
|
|
import XMonad.Layout.LayoutCombinators ( JumpToLayout(..) )
|
|
|
|
-- $usage
|
|
-- You can use this module with the following in your @~\/.xmonad\/xmonad.hs@:
|
|
--
|
|
-- > import XMonad.Prompt
|
|
-- > import XMonad.Prompt.Layout
|
|
--
|
|
-- > , ((modm .|. shiftMask, xK_m ), layoutPrompt defaultXPConfig)
|
|
--
|
|
-- For detailed instruction on editing the key binding see
|
|
-- "XMonad.Doc.Extending#Editing_key_bindings".
|
|
--
|
|
-- WARNING: This prompt won't display all possible layouts, because the
|
|
-- code to enable this was rejected from xmonad core. It only displays
|
|
-- layouts that are actually in use. Also, you can only select layouts if
|
|
-- you are using NewSelect, rather than the Select defined in xmonad core
|
|
-- (which doesn't have this feature). So all in all, this module is really
|
|
-- more a proof-of-principle than something you can actually use
|
|
-- productively.
|
|
|
|
data Wor = Wor String
|
|
|
|
instance XPrompt Wor where
|
|
showXPrompt (Wor x) = x
|
|
|
|
layoutPrompt :: XPConfig -> X ()
|
|
layoutPrompt c = do ls <- gets (map (description . layout) . workspaces . windowset)
|
|
mkXPrompt (Wor "") c (mkComplFunFromList' $ sort $ nub ls) (sendMessage . JumpToLayout)
|