[xmonad] Property vs Query Bool
roma at ro-che.info
Wed Apr 1 05:52:34 EDT 2009
* Adam Vogt <vogt.adam at gmail.com> [2009-03-30 20:10:05-0400]
> * On Monday, March 30 2009, Konstantin Sobolev wrote:
> >I'm trying to implement my own LayoutClass which mixes the ideas of IM
> >and CombineTwo. It has to contain some predicate as a part of it's
> >state, which will tell where to put new windows.
> >As I see IM uses WindowProperties for this purpose, but I wouldn't
> >like to use it for 2 reasons:
> >1. Property essentially duplicates Query Bool.
> >2. Property isn't flexible enough. For instance, I can't match a
> >window by title substring, while I can easily do it with Query.
> >However, there's one problem (and I guess that's why Property was
> >introduced): Query doesn't derive Read and Show, and as far as I
> >understand it's not so easy to implement them.
> >So what should I use, Query Bool with empty (Read, Show)
> Another way to pass a function (that is not changed by running the layout),
> is to use a typeclass:
> > class IsAQuery a where
> > query :: a -> Query Bool
> > data Dummy = Dummy deriving (Read,Show)
> > instance IsAQuery Dummy where
> > query _ = do
> > ..... query stuff
> > data QLayout q a = QLayout q deriving (Read,Show)
> > instance (Reqd q, Show q, IsAQuery q) => LayoutModifier (QLayout q) a
> > where
> > ....
> These ideas were used to extend XMonad.Layout.NoBorders (the patch is
> applied in darcs).
Very nice. Another solution is desribed here:
Roman I. Cheplyaka (aka Feuerbach @ IRC)
More information about the xmonad