Copyright | (c) Dmitry Bogatov <KAction@gnu.org> |
---|---|
License | BSD |
Maintainer | Dmitry Bogatov <KAction@gnu.org> |
Stability | unstable |
Portability | unportable |
Safe Haskell | Safe-Inferred |
Language | Haskell2010 |
Functions for saving per-window data.
Synopsis
- get :: MonadState s m => m s
- put :: MonadState s m => s -> m ()
- newtype StateQuery s a = StateQuery {}
- runStateQuery :: StateQuery s a -> Window -> X a
- catchQuery :: Query a -> Query (Maybe a)
Usage
This module allow to store state data with some Window
.
It is implemented with XProperties, so resources will be freed when
Window
is destoyed.
This module have advantage over XMonad.Actions.TagWindows in that it
hides from you implementation details and provides simple type-safe
interface. Main datatype is StateQuery, which is simple wrapper around
Query, which is instance of MonadState, with put
and get
are
functions to acess data, stored in Window.
To save some data in window you probably want to do following:
> (runStateQuery (put $ Just value) win) :: X ()
To retrive it, you can use
> (runStateQuery get win) :: X (Maybe YourValueType)
Query can be promoted to StateQuery simply by constructor,
and reverse is getQuery
.
For example, I use it to have all X applications russian
or dvorak
layout, but emacs have only us
, to not screw keybindings. Use your
imagination!
get :: MonadState s m => m s #
Return the state from the internals of the monad.
put :: MonadState s m => s -> m () #
Replace the state inside the monad.
newtype StateQuery s a Source #
Wrapper around Query with phanom type s
, representing state, saved in
window.
Instances
runStateQuery :: StateQuery s a -> Window -> X a Source #
Apply StateQuery to Window.