xmonad-contrib-0.13: Third party extensions for xmonad

Copyright(c) Roman Cheplyaka Ivan N. Veselov <veselov@gmail.com>
LicenseBSD-style (see LICENSE)
MaintainerRoman Cheplyaka <roma@ro-che.info>
Safe HaskellNone




Layout modfier suitable for workspace with multi-windowed instant messenger (like Psi or Tkabber).



You can use this module with the following in your ~/.xmonad/xmonad.hs:

import XMonad.Layout.IM
import Data.Ratio ((%))

Then edit your layoutHook by adding IM modifier to layout which you prefer for managing your chat windows (Grid in this example, another useful choice to consider is Tabbed layout).

myLayout = withIM (1%7) (ClassName "Tkabber") Grid ||| Full ||| etc..
main = xmonad def { layoutHook = myLayout }

Here 1%7 is the part of the screen which your roster will occupy, ClassName "Tkabber" tells xmonad which window is actually your roster.

Screenshot: http://haskell.org/haskellwiki/Image:Xmonad-layout-im.png

For more detailed instructions on editing the layoutHook see:



To launch IM layout automatically on your IM workspace use XMonad.Layout.PerWorkspace.

By default the roster window will appear on the left side. To place roster window on the right side, use reflectHoriz from XMonad.Layout.Reflect module.


This item are questionable. Please let me know if you find them useful.

  • shrink/expand

data IM a Source #

This is for compatibility with old configs only and will be removed in future versions!


IM Rational Property 

withIM :: LayoutClass l a => Rational -> Property -> l a -> ModifiedLayout AddRoster l a Source #

Modifier which converts given layout to IM-layout (with dedicated space for roster and original layout for chat windows)

gridIM :: Rational -> Property -> ModifiedLayout AddRoster Grid a Source #

IM layout modifier applied to the Grid layout

data AddRoster a Source #

Data type for LayoutModifier which converts given layout to IM-layout (with dedicated space for the roster and original layout for chat windows)


LayoutModifier AddRoster Window Source # 
Read (AddRoster a) Source # 
Show (AddRoster a) Source #