xmonad-contrib-0.13: Third party extensions for xmonad

Copyright(c) 2007 Andrea Rossato, 2009 Jan Vornberger
LicenseBSD-style (see xmonad/LICENSE)
Maintainerandrea.rossato@unibz.it
Stabilityunstable
Portabilityunportable
Safe HaskellNone
LanguageHaskell98

XMonad.Layout.Decoration

Contents

Description

A layout modifier and a class for easily creating decorated layouts.

Synopsis

Usage:

This module is intended for layout developers, who want to decorate their layouts. End users will not find here very much for them.

For examples of DecorationStyle instances you can have a look at XMonad.Layout.SimpleDecoration, XMonad.Layout.Tabbed, XMonad.Layout.DwmStyle, or XMonad.Layout.TabBarDecoration.

decoration :: (DecorationStyle ds a, Shrinker s) => s -> Theme -> ds a -> l a -> ModifiedLayout (Decoration ds s) l a Source #

A layout modifier that, with a Shrinker, a Theme, a DecorationStyle, and a layout, will decorate this layout according to the decoration style provided.

For some usage examples see XMonad.Layout.DecorationMadness.

data Theme Source #

A Theme is a record of colors, font etc., to customize a DecorationStyle.

For a collection of Themes see XMonad.Util.Themes

Constructors

Theme 

Fields

defaultTheme :: Theme Source #

Deprecated: Use def (from Data.Default, and re-exported by XMonad.Layout.Decoration) instead.

The default xmonad Theme.

def :: Default a => a #

data Decoration ds s a Source #

The Decoration LayoutModifier. This data type is an instance of the LayoutModifier class. This data type will be passed, together with a layout, to the ModifiedLayout type constructor to modify the layout by adding decorations according to a DecorationStyle.

Instances

(DecorationStyle ds Window, Shrinker s) => LayoutModifier (Decoration ds s) Window Source #

The long LayoutModifier instance for the Decoration type.

In redoLayout we check the state: if there is no state we initialize it.

The state is diffed against the list of windows produced by the underlying layout: removed windows get deleted and new ones decorated by createDecos, which will call decorate to decide if a window must be given a Rectangle, in which case a decoration window will be created.

After that we resync the updated state with the windows' list and then we process the resynced stated (as we do with a new state).

First we map the decoration windows, we update each decoration to reflect any decorated window's change, and we insert, in the list of windows and rectangles returned by the underlying layout, the decoration for each window. This way xmonad will restack the decorations and their windows accordingly. At the end we remove invisible/stacked windows.

Message handling is quite simple: when needed we release the state component of the Decoration LayoutModifier. Otherwise we call handleEvent, which will call the appropriate DecorationStyle methods to perform its tasks.

Methods

modifyLayout :: LayoutClass l Window => Decoration ds s Window -> Workspace WorkspaceId (l Window) Window -> Rectangle -> X ([(Window, Rectangle)], Maybe (l Window)) Source #

modifyLayoutWithUpdate :: LayoutClass l Window => Decoration ds s Window -> Workspace WorkspaceId (l Window) Window -> Rectangle -> X (([(Window, Rectangle)], Maybe (l Window)), Maybe (Decoration ds s Window)) Source #

handleMess :: Decoration ds s Window -> SomeMessage -> X (Maybe (Decoration ds s Window)) Source #

handleMessOrMaybeModifyIt :: Decoration ds s Window -> SomeMessage -> X (Maybe (Either (Decoration ds s Window) SomeMessage)) Source #

pureMess :: Decoration ds s Window -> SomeMessage -> Maybe (Decoration ds s Window) Source #

redoLayout :: Decoration ds s Window -> Rectangle -> Maybe (Stack Window) -> [(Window, Rectangle)] -> X ([(Window, Rectangle)], Maybe (Decoration ds s Window)) Source #

pureModifier :: Decoration ds s Window -> Rectangle -> Maybe (Stack Window) -> [(Window, Rectangle)] -> ([(Window, Rectangle)], Maybe (Decoration ds s Window)) Source #

hook :: Decoration ds s Window -> X () Source #

unhook :: Decoration ds s Window -> X () Source #

modifierDescription :: Decoration ds s Window -> String Source #

modifyDescription :: LayoutClass l Window => Decoration ds s Window -> l Window -> String Source #

(Read s, Read (ds a)) => Read (Decoration ds s a) Source # 
(Show s, Show (ds a)) => Show (Decoration ds s a) Source # 

Methods

showsPrec :: Int -> Decoration ds s a -> ShowS #

show :: Decoration ds s a -> String #

showList :: [Decoration ds s a] -> ShowS #

data DecorationMsg Source #

A Decoration layout modifier will handle SetTheme, a message to dynamically change the decoration Theme.

Constructors

SetTheme Theme 

Instances

class (Read (ds a), Show (ds a), Eq a) => DecorationStyle ds a where Source #

The DecorationStyle class, defines methods used in the implementation of the Decoration LayoutModifier instance. A type instance of this class is passed to the Decoration type in order to decorate a layout, by using these methods.

Methods

describeDeco :: ds a -> String Source #

The description that the Decoration modifier will display.

shrink :: ds a -> Rectangle -> Rectangle -> Rectangle Source #

Shrink the window's rectangle when applying a decoration.

decorationEventHook :: ds a -> DecorationState -> Event -> X () Source #

The decoration event hook

decorationCatchClicksHook :: ds a -> Window -> Int -> Int -> X Bool Source #

A hook that can be used to catch the cases when the user clicks on the decoration. If you return True here, the click event will be considered as dealt with and no further processing will take place.

decorationWhileDraggingHook :: ds a -> CInt -> CInt -> (Window, Rectangle) -> Position -> Position -> X () Source #

This hook is called while a window is dragged using the decoration. The hook can be overwritten if a different way of handling the dragging is required.

decorationAfterDraggingHook :: ds a -> (Window, Rectangle) -> Window -> X () Source #

This hoook is called after a window has been dragged using the decoration.

pureDecoration :: ds a -> Dimension -> Dimension -> Rectangle -> Stack a -> [(a, Rectangle)] -> (a, Rectangle) -> Maybe Rectangle Source #

The pure version of the main method, decorate.

decorate :: ds a -> Dimension -> Dimension -> Rectangle -> Stack a -> [(a, Rectangle)] -> (a, Rectangle) -> X (Maybe Rectangle) Source #

Given the theme's decoration width and height, the screen rectangle, the windows stack, the list of windows and rectangles returned by the underlying layout and window to be decorated, tupled with its rectangle, produce a Just Rectangle or Nothing if the window is not to be decorated.

Instances

Eq a => DecorationStyle DefaultDecoration a Source # 

Methods

describeDeco :: DefaultDecoration a -> String Source #

shrink :: DefaultDecoration a -> Rectangle -> Rectangle -> Rectangle Source #

decorationEventHook :: DefaultDecoration a -> DecorationState -> Event -> X () Source #

decorationCatchClicksHook :: DefaultDecoration a -> Window -> Int -> Int -> X Bool Source #

decorationWhileDraggingHook :: DefaultDecoration a -> CInt -> CInt -> (Window, Rectangle) -> Position -> Position -> X () Source #

decorationAfterDraggingHook :: DefaultDecoration a -> (Window, Rectangle) -> Window -> X () Source #

pureDecoration :: DefaultDecoration a -> Dimension -> Dimension -> Rectangle -> Stack a -> [(a, Rectangle)] -> (a, Rectangle) -> Maybe Rectangle Source #

decorate :: DefaultDecoration a -> Dimension -> Dimension -> Rectangle -> Stack a -> [(a, Rectangle)] -> (a, Rectangle) -> X (Maybe Rectangle) Source #

Eq a => DecorationStyle DwmStyle a Source # 

Methods

describeDeco :: DwmStyle a -> String Source #

shrink :: DwmStyle a -> Rectangle -> Rectangle -> Rectangle Source #

decorationEventHook :: DwmStyle a -> DecorationState -> Event -> X () Source #

decorationCatchClicksHook :: DwmStyle a -> Window -> Int -> Int -> X Bool Source #

decorationWhileDraggingHook :: DwmStyle a -> CInt -> CInt -> (Window, Rectangle) -> Position -> Position -> X () Source #

decorationAfterDraggingHook :: DwmStyle a -> (Window, Rectangle) -> Window -> X () Source #

pureDecoration :: DwmStyle a -> Dimension -> Dimension -> Rectangle -> Stack a -> [(a, Rectangle)] -> (a, Rectangle) -> Maybe Rectangle Source #

decorate :: DwmStyle a -> Dimension -> Dimension -> Rectangle -> Stack a -> [(a, Rectangle)] -> (a, Rectangle) -> X (Maybe Rectangle) Source #

Eq a => DecorationStyle SimpleDecoration a Source # 

Methods

describeDeco :: SimpleDecoration a -> String Source #

shrink :: SimpleDecoration a -> Rectangle -> Rectangle -> Rectangle Source #

decorationEventHook :: SimpleDecoration a -> DecorationState -> Event -> X () Source #

decorationCatchClicksHook :: SimpleDecoration a -> Window -> Int -> Int -> X Bool Source #

decorationWhileDraggingHook :: SimpleDecoration a -> CInt -> CInt -> (Window, Rectangle) -> Position -> Position -> X () Source #

decorationAfterDraggingHook :: SimpleDecoration a -> (Window, Rectangle) -> Window -> X () Source #

pureDecoration :: SimpleDecoration a -> Dimension -> Dimension -> Rectangle -> Stack a -> [(a, Rectangle)] -> (a, Rectangle) -> Maybe Rectangle Source #

decorate :: SimpleDecoration a -> Dimension -> Dimension -> Rectangle -> Stack a -> [(a, Rectangle)] -> (a, Rectangle) -> X (Maybe Rectangle) Source #

Eq a => DecorationStyle NoFrillsDecoration a Source # 

Methods

describeDeco :: NoFrillsDecoration a -> String Source #

shrink :: NoFrillsDecoration a -> Rectangle -> Rectangle -> Rectangle Source #

decorationEventHook :: NoFrillsDecoration a -> DecorationState -> Event -> X () Source #

decorationCatchClicksHook :: NoFrillsDecoration a -> Window -> Int -> Int -> X Bool Source #

decorationWhileDraggingHook :: NoFrillsDecoration a -> CInt -> CInt -> (Window, Rectangle) -> Position -> Position -> X () Source #

decorationAfterDraggingHook :: NoFrillsDecoration a -> (Window, Rectangle) -> Window -> X () Source #

pureDecoration :: NoFrillsDecoration a -> Dimension -> Dimension -> Rectangle -> Stack a -> [(a, Rectangle)] -> (a, Rectangle) -> Maybe Rectangle Source #

decorate :: NoFrillsDecoration a -> Dimension -> Dimension -> Rectangle -> Stack a -> [(a, Rectangle)] -> (a, Rectangle) -> X (Maybe Rectangle) Source #

Eq a => DecorationStyle TabBarDecoration a Source # 

Methods

describeDeco :: TabBarDecoration a -> String Source #

shrink :: TabBarDecoration a -> Rectangle -> Rectangle -> Rectangle Source #

decorationEventHook :: TabBarDecoration a -> DecorationState -> Event -> X () Source #

decorationCatchClicksHook :: TabBarDecoration a -> Window -> Int -> Int -> X Bool Source #

decorationWhileDraggingHook :: TabBarDecoration a -> CInt -> CInt -> (Window, Rectangle) -> Position -> Position -> X () Source #

decorationAfterDraggingHook :: TabBarDecoration a -> (Window, Rectangle) -> Window -> X () Source #

pureDecoration :: TabBarDecoration a -> Dimension -> Dimension -> Rectangle -> Stack a -> [(a, Rectangle)] -> (a, Rectangle) -> Maybe Rectangle Source #

decorate :: TabBarDecoration a -> Dimension -> Dimension -> Rectangle -> Stack a -> [(a, Rectangle)] -> (a, Rectangle) -> X (Maybe Rectangle) Source #

Eq a => DecorationStyle TabbedDecoration a Source # 

Methods

describeDeco :: TabbedDecoration a -> String Source #

shrink :: TabbedDecoration a -> Rectangle -> Rectangle -> Rectangle Source #

decorationEventHook :: TabbedDecoration a -> DecorationState -> Event -> X () Source #

decorationCatchClicksHook :: TabbedDecoration a -> Window -> Int -> Int -> X Bool Source #

decorationWhileDraggingHook :: TabbedDecoration a -> CInt -> CInt -> (Window, Rectangle) -> Position -> Position -> X () Source #

decorationAfterDraggingHook :: TabbedDecoration a -> (Window, Rectangle) -> Window -> X () Source #

pureDecoration :: TabbedDecoration a -> Dimension -> Dimension -> Rectangle -> Stack a -> [(a, Rectangle)] -> (a, Rectangle) -> Maybe Rectangle Source #

decorate :: TabbedDecoration a -> Dimension -> Dimension -> Rectangle -> Stack a -> [(a, Rectangle)] -> (a, Rectangle) -> X (Maybe Rectangle) Source #

Eq a => DecorationStyle ButtonDecoration a Source # 

Methods

describeDeco :: ButtonDecoration a -> String Source #

shrink :: ButtonDecoration a -> Rectangle -> Rectangle -> Rectangle Source #

decorationEventHook :: ButtonDecoration a -> DecorationState -> Event -> X () Source #

decorationCatchClicksHook :: ButtonDecoration a -> Window -> Int -> Int -> X Bool Source #

decorationWhileDraggingHook :: ButtonDecoration a -> CInt -> CInt -> (Window, Rectangle) -> Position -> Position -> X () Source #

decorationAfterDraggingHook :: ButtonDecoration a -> (Window, Rectangle) -> Window -> X () Source #

pureDecoration :: ButtonDecoration a -> Dimension -> Dimension -> Rectangle -> Stack a -> [(a, Rectangle)] -> (a, Rectangle) -> Maybe Rectangle Source #

decorate :: ButtonDecoration a -> Dimension -> Dimension -> Rectangle -> Stack a -> [(a, Rectangle)] -> (a, Rectangle) -> X (Maybe Rectangle) Source #

Eq a => DecorationStyle ImageButtonDecoration a Source # 

Methods

describeDeco :: ImageButtonDecoration a -> String Source #

shrink :: ImageButtonDecoration a -> Rectangle -> Rectangle -> Rectangle Source #

decorationEventHook :: ImageButtonDecoration a -> DecorationState -> Event -> X () Source #

decorationCatchClicksHook :: ImageButtonDecoration a -> Window -> Int -> Int -> X Bool Source #

decorationWhileDraggingHook :: ImageButtonDecoration a -> CInt -> CInt -> (Window, Rectangle) -> Position -> Position -> X () Source #

decorationAfterDraggingHook :: ImageButtonDecoration a -> (Window, Rectangle) -> Window -> X () Source #

pureDecoration :: ImageButtonDecoration a -> Dimension -> Dimension -> Rectangle -> Stack a -> [(a, Rectangle)] -> (a, Rectangle) -> Maybe Rectangle Source #

decorate :: ImageButtonDecoration a -> Dimension -> Dimension -> Rectangle -> Stack a -> [(a, Rectangle)] -> (a, Rectangle) -> X (Maybe Rectangle) Source #

Eq a => DecorationStyle ImageWindowSwitcherDecoration a Source # 

Methods

describeDeco :: ImageWindowSwitcherDecoration a -> String Source #

shrink :: ImageWindowSwitcherDecoration a -> Rectangle -> Rectangle -> Rectangle Source #

decorationEventHook :: ImageWindowSwitcherDecoration a -> DecorationState -> Event -> X () Source #

decorationCatchClicksHook :: ImageWindowSwitcherDecoration a -> Window -> Int -> Int -> X Bool Source #

decorationWhileDraggingHook :: ImageWindowSwitcherDecoration a -> CInt -> CInt -> (Window, Rectangle) -> Position -> Position -> X () Source #

decorationAfterDraggingHook :: ImageWindowSwitcherDecoration a -> (Window, Rectangle) -> Window -> X () Source #

pureDecoration :: ImageWindowSwitcherDecoration a -> Dimension -> Dimension -> Rectangle -> Stack a -> [(a, Rectangle)] -> (a, Rectangle) -> Maybe Rectangle Source #

decorate :: ImageWindowSwitcherDecoration a -> Dimension -> Dimension -> Rectangle -> Stack a -> [(a, Rectangle)] -> (a, Rectangle) -> X (Maybe Rectangle) Source #

Eq a => DecorationStyle WindowSwitcherDecoration a Source # 

Methods

describeDeco :: WindowSwitcherDecoration a -> String Source #

shrink :: WindowSwitcherDecoration a -> Rectangle -> Rectangle -> Rectangle Source #

decorationEventHook :: WindowSwitcherDecoration a -> DecorationState -> Event -> X () Source #

decorationCatchClicksHook :: WindowSwitcherDecoration a -> Window -> Int -> Int -> X Bool Source #

decorationWhileDraggingHook :: WindowSwitcherDecoration a -> CInt -> CInt -> (Window, Rectangle) -> Position -> Position -> X () Source #

decorationAfterDraggingHook :: WindowSwitcherDecoration a -> (Window, Rectangle) -> Window -> X () Source #

pureDecoration :: WindowSwitcherDecoration a -> Dimension -> Dimension -> Rectangle -> Stack a -> [(a, Rectangle)] -> (a, Rectangle) -> Maybe Rectangle Source #

decorate :: WindowSwitcherDecoration a -> Dimension -> Dimension -> Rectangle -> Stack a -> [(a, Rectangle)] -> (a, Rectangle) -> X (Maybe Rectangle) Source #

data DefaultDecoration a Source #

The default DecorationStyle, with just the default methods' implementations.

Constructors

DefaultDecoration 

Instances

Eq a => DecorationStyle DefaultDecoration a Source # 

Methods

describeDeco :: DefaultDecoration a -> String Source #

shrink :: DefaultDecoration a -> Rectangle -> Rectangle -> Rectangle Source #

decorationEventHook :: DefaultDecoration a -> DecorationState -> Event -> X () Source #

decorationCatchClicksHook :: DefaultDecoration a -> Window -> Int -> Int -> X Bool Source #

decorationWhileDraggingHook :: DefaultDecoration a -> CInt -> CInt -> (Window, Rectangle) -> Position -> Position -> X () Source #

decorationAfterDraggingHook :: DefaultDecoration a -> (Window, Rectangle) -> Window -> X () Source #

pureDecoration :: DefaultDecoration a -> Dimension -> Dimension -> Rectangle -> Stack a -> [(a, Rectangle)] -> (a, Rectangle) -> Maybe Rectangle Source #

decorate :: DefaultDecoration a -> Dimension -> Dimension -> Rectangle -> Stack a -> [(a, Rectangle)] -> (a, Rectangle) -> X (Maybe Rectangle) Source #

Read (DefaultDecoration a) Source # 
Show (DefaultDecoration a) Source # 

class (Read s, Show s) => Shrinker s where Source #

Minimal complete definition

shrinkIt

Methods

shrinkIt :: s -> String -> [String] Source #

shrinkWhile :: (String -> [String]) -> (String -> X Bool) -> String -> X String Source #

isInStack :: Eq a => Stack a -> a -> Bool Source #

True if the window is in the Stack. The Window comes second to facilitate list processing, even though w `isInStack` s won't work...;)

isVisible :: Rectangle -> [Rectangle] -> Bool Source #

Given a Rectangle and a list of Rectangles is True if the Rectangle is not completely contained by any Rectangle of the list.

isInvisible :: Rectangle -> [Rectangle] -> Bool Source #

The contrary of isVisible.

isWithin :: Rectangle -> Rectangle -> Bool Source #

True is the first Rectangle is totally within the second Rectangle.

fi :: (Integral a, Num b) => a -> b Source #

Short-hand for fromIntegral

findWindowByDecoration :: Window -> DecorationState -> Maybe (OrigWin, (Window, Maybe Rectangle)) Source #

data DecorationState Source #

The Decoration state component, where the list of decorated window's is zipped with a list of decoration. A list of decoration is a list of tuples, a Maybe Window and a 'Maybe Rectangle'. The Window will be displayed only if the rectangle is of type Just.

type OrigWin = (Window, Rectangle) Source #