xmonad-contrib-0.18.1: Community-maintained extensions for xmonad
Copyright(c) Dmitry Bogatov <KAction@gnu.org>
LicenseBSD
MaintainerDmitry Bogatov <KAction@gnu.org>
Stabilityunstable
Portabilityunportable
Safe HaskellNone
LanguageHaskell2010

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 phantom type s, representing state, saved in window.

Constructors

StateQuery 

Fields

Instances

Instances details
MonadIO (StateQuery s) Source # 
Instance details

Defined in XMonad.Util.WindowState

Methods

liftIO :: IO a -> StateQuery s a #

Applicative (StateQuery s) Source # 
Instance details

Defined in XMonad.Util.WindowState

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 #

Functor (StateQuery s) Source # 
Instance details

Defined in XMonad.Util.WindowState

Methods

fmap :: (a -> b) -> StateQuery s a -> StateQuery s b #

(<$) :: a -> StateQuery s b -> StateQuery s a #

Monad (StateQuery s) Source # 
Instance details

Defined in XMonad.Util.WindowState

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 #

(Show s, Read s, Typeable s) => MonadState (Maybe s) (StateQuery s) Source #

Instance of MonadState for StateQuery.

Instance details

Defined in XMonad.Util.WindowState

Methods

get :: StateQuery s (Maybe s) #

put :: Maybe s -> StateQuery s () #

state :: (Maybe s -> (a, Maybe s)) -> StateQuery s a #

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

Lifted to Query version of catchX