pure package:xmonad-contrib

Lift a value.
This is a pure version of doLayout, for cases where we don't need access to the X monad to determine how to lay out the windows, and we don't need to modify the layout itself.
Respond to a message by (possibly) changing our layout, but taking no other action. If the layout changes, the screen will be refreshed.
Compute the new position of a window according to a placement policy.
The pure version of the main method, decorate.
The pure version of the main method, decorate. The method should return a rectangle where to place window decoration, or Nothing if this window is not to be decorated.
pureMess allows you to spy on messages sent to the underlying layout, in order to possibly change the layout modifier state. The default implementation of pureMess ignores messages sent to it, and returns Nothing (causing the layout modifier to remain unchanged).
pureModifier allows you to intercept a call to runLayout after it is called on the underlying layout, in order to modify the list of window/rectangle pairings it has returned, and/or return a new layout modifier. The default implementation of pureModifier returns the window rectangles unmodified.
Unlike the opaque IO actions that X actions can wrap, regular reads from the XConf and modifications to the XState are fundamentally pure—contrary to the current treatment of such actions in most xmonad code. Pure modifications to the WindowSet can be readily composed, but due to the need for those modifications to be properly handled by windows, other pure changes to the XState cannot be interleaved with those changes to the WindowSet without superfluous refreshes, hence breaking composability. This module aims to rectify that situation by drawing attention to it and providing PureX: a pure type with the same monadic interface to state as X. The XLike typeclass enables writing actions generic over the two monads; if pure, existing X actions can be generalised with only a change to the type signature. Various other utilities are provided, in particular the defile function which is needed by end-users.
The PureX newtype over ReaderT XConf (State XState) a.
Version of go not dependent on X monad (needed for testing).
Version of swap not dependent on X monad (needed for testing).
Consume a PureX a.