xmonad-contrib-0.12: Third party extensions for xmonad

Copyright(c) Dmitry Bogatov <KAction@gnu.org>
LicenseBSD
MaintainerDmitry Bogatov <KAction@gnu.org>
Stabilityunstable
Portabilityunportable
Safe HaskellNone
LanguageHaskell98

XMonad.Util.WindowState

Contents

Description

Functions for saving per-window data.

Synopsis

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.

Constructors

StateQuery 

Fields

getQuery :: Query a
 

Instances

Monad (StateQuery s) Source 
Functor (StateQuery s) Source 
Applicative (StateQuery s) Source 
MonadIO (StateQuery s) Source 
(Show s, Read s, Typeable * s) => MonadState (Maybe s) (StateQuery s) Source

Instance of MonadState for StateQuery.

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

Lifted to Query version of catchX