XMonad.Util.WindowState

xmonad-contrib-0.13: Third party extensions for xmonad

Copyright | (c) Dmitry Bogatov <KAction@gnu.org>
License | BSD
Maintainer | Dmitry Bogatov <KAction@gnu.org>
Stability | unstable
Portability | unportable
Safe Haskell | None
Language | Haskell98

XMonad.Util.WindowState

Contents

- Usage

Description

Functions for saving per-window data.

Synopsis

- get :: MonadState s m => m s
- put :: MonadState s m => s -> m ()
- newtype StateQuery s a = StateQuery {
  - getQuery :: Query a
  }
- 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 #

Wrapper around Query with phanom type `s`, representing state, saved in window.

Constructors

StateQuery |
Fields getQuery :: Query a

Instances

Monad (StateQuery s) # |
Methods (>>=) :: StateQuery s a -> (a -> StateQuery s b) -> StateQuery s b # (>>) :: StateQuery s a -> StateQuery s b -> StateQuery s b # return :: a -> StateQuery s a # fail :: String -> StateQuery s a #
Functor (StateQuery s) # |
Methods fmap :: (a -> b) -> StateQuery s a -> StateQuery s b # (<$) :: a -> StateQuery s b -> StateQuery s a #
Applicative (StateQuery s) # |
Methods pure :: a -> StateQuery s a # (<*>) :: StateQuery s (a -> b) -> StateQuery s a -> StateQuery s b # liftA2 :: (a -> b -> c) -> StateQuery s a -> StateQuery s b -> StateQuery s c # (*>) :: StateQuery s a -> StateQuery s b -> StateQuery s b # (<*) :: StateQuery s a -> StateQuery s b -> StateQuery s a #
MonadIO (StateQuery s) # |
Methods liftIO :: IO a -> StateQuery s a #
(Show s, Read s, Typeable * s) => MonadState (Maybe s) (StateQuery s) # | Instance of MonadState for StateQuery.
Methods get :: StateQuery s (Maybe s) # put :: Maybe s -> StateQuery s () # state :: (Maybe s -> (a, Maybe s)) -> StateQuery s a #

runStateQuery :: StateQuery s a -> Window -> X a #

Apply StateQuery to Window.

catchQuery :: Query a -> Query (Maybe a) #

Lifted to Query version of `catchX`