Copyright | (c) 2008 Quentin Moser |
---|---|
License | BSD3 |
Maintainer | orphaned |
Stability | unstable |
Portability | unportable |
Safe Haskell | None |
Language | Haskell98 |
Provides message "escaping" and filtering facilities which help control complex nested layouts.
Synopsis
- data Ignore m l w
- ignore :: (Message m, LayoutClass l w) => m -> l w -> Ignore m l w
- data UnEscape w
- unEscape :: LayoutClass l w => l w -> ModifiedLayout UnEscape l w
- newtype EscapedMessage = Escape SomeMessage
- escape :: Message m => m -> EscapedMessage
Usage
You can use this module by importing it into your ~/.xmonad/xmonad.hs
file:
import XMonad.Layout.MessageEscape
Then, if you use a modified layout where the modifier would intercept
a message, but you'd want to be able to send it to the inner layout
only, add the unEscape
modifier to the inner layout like so:
import XMonad.Layout.Master (mastered) import XMonad.Layout.Tabbed (simpleTabbed) import XMonad.Layout.LayoutCombinators ((|||)) myLayout = Tall ||| unEscape (mastered 0.01 0.5 $ Full ||| simpleTabbed)
you can now send a message to the inner layout with
sendMessage $ escape message
, e.g.
-- Change the inner layout ((modm .|. controlMask, xK_space), sendMessage $ escape NextLayout)
If you want unescaped messages to be handled only by the enclosing
layout, use the ignore
modifier:
myLayout = Tall ||| (ignore NextLayout $ ignore (JumpToLayout "") $ unEscape $ mastered 0.01 0.5 $ Full ||| simpleTabbed)
IMPORTANT NOTE: The standard '(|||)' operator from XMonad.Layout
does not behave correctly with ignore
. Make sure you use the one
from XMonad.Layout.LayoutCombinators.
the Ignore layout modifier. Prevents its inner layout from receiving messages of a certain type.
Instances
(Message m, LayoutClass l w) => LayoutClass (Ignore m l) w Source # | |
Defined in XMonad.Layout.MessageControl runLayout :: Workspace WorkspaceId (Ignore m l w) w -> Rectangle -> X ([(w, Rectangle)], Maybe (Ignore m l w)) # doLayout :: Ignore m l w -> Rectangle -> Stack w -> X ([(w, Rectangle)], Maybe (Ignore m l w)) # pureLayout :: Ignore m l w -> Rectangle -> Stack w -> [(w, Rectangle)] # emptyLayout :: Ignore m l w -> Rectangle -> X ([(w, Rectangle)], Maybe (Ignore m l w)) # handleMessage :: Ignore m l w -> SomeMessage -> X (Maybe (Ignore m l w)) # pureMessage :: Ignore m l w -> SomeMessage -> Maybe (Ignore m l w) # description :: Ignore m l w -> String # | |
Read (l w) => Read (Ignore m l w) Source # | |
Show (l w) => Show (Ignore m l w) Source # | |
ignore :: (Message m, LayoutClass l w) => m -> l w -> Ignore m l w Source #
Applies the Ignore layout modifier to a layout, blocking all messages of the same type as the one passed as its first argument.
the UnEscape layout modifier. Listens to EscapedMessage
s and sends
their nested message to the inner layout.
Instances
unEscape :: LayoutClass l w => l w -> ModifiedLayout UnEscape l w Source #
Applies the UnEscape layout modifier to a layout.
newtype EscapedMessage Source #
Data type for an escaped message. Send with escape
.
Instances
Message EscapedMessage Source # | |
Defined in XMonad.Layout.MessageControl |
escape :: Message m => m -> EscapedMessage Source #
Creates an EscapedMessage
.