Sophie

Sophie

distrib > Fedora > 14 > i386 > by-pkgid > 97b7e04d4a67814e1160568251f09714 > files > 507

ghc-xmonad-contrib-devel-0.9.1-8.fc14.i686.rpm

<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<!--Rendered using the Haskell Html Library v0.2-->
<HTML
><HEAD
><META HTTP-EQUIV="Content-Type" CONTENT="text/html; charset=UTF-8"
><TITLE
>XMonad.Layout.SubLayouts</TITLE
><LINK HREF="haddock.css" REL="stylesheet" TYPE="text/css"
><SCRIPT SRC="haddock-util.js" TYPE="text/javascript"
></SCRIPT
><SCRIPT TYPE="text/javascript"
>window.onload = function () {setSynopsis("mini_XMonad-Layout-SubLayouts.html")};</SCRIPT
></HEAD
><BODY
><TABLE CLASS="vanilla" CELLSPACING="0" CELLPADDING="0"
><TR
><TD CLASS="topbar"
><TABLE CLASS="vanilla" CELLSPACING="0" CELLPADDING="0"
><TR
><TD
><IMG SRC="haskell_icon.gif" WIDTH="16" HEIGHT="16" ALT=" "
></TD
><TD CLASS="title"
>xmonad-contrib-0.9.1: Third party extensions for xmonad</TD
><TD CLASS="topbut"
><A HREF="src/XMonad-Layout-SubLayouts.html"
>Source code</A
></TD
><TD CLASS="topbut"
><A HREF="index.html"
>Contents</A
></TD
><TD CLASS="topbut"
><A HREF="doc-index.html"
>Index</A
></TD
></TR
></TABLE
></TD
></TR
><TR
><TD CLASS="modulebar"
><TABLE CLASS="vanilla" CELLSPACING="0" CELLPADDING="0"
><TR
><TD
><FONT SIZE="6"
>XMonad.Layout.SubLayouts</FONT
></TD
><TD ALIGN="right"
><TABLE CLASS="narrow" CELLSPACING="0" CELLPADDING="0"
><TR
><TD CLASS="infohead"
>Portability</TD
><TD CLASS="infoval"
>unportable</TD
></TR
><TR
><TD CLASS="infohead"
>Stability</TD
><TD CLASS="infoval"
>unstable</TD
></TR
><TR
><TD CLASS="infohead"
>Maintainer</TD
><TD CLASS="infoval"
>vogt.adam@gmail.com</TD
></TR
></TABLE
></TD
></TR
></TABLE
></TD
></TR
><TR
><TD CLASS="s15"
></TD
></TR
><TR
><TD
><TABLE CLASS="vanilla" CELLSPACING="0" CELLPADDING="0"
><TR
><TD CLASS="section4"
><B
>Contents</B
></TD
></TR
><TR
><TD
><DL
><DT
><A HREF="#1"
>Usage
</A
></DT
><DT
><A HREF="#2"
>Screenshots
</A
></DT
><DT
><A HREF="#3"
>Todo
</A
></DT
></DL
></TD
></TR
></TABLE
></TD
></TR
><TR
><TD CLASS="s15"
></TD
></TR
><TR
><TD CLASS="section1"
>Description</TD
></TR
><TR
><TD CLASS="doc"
>A layout combinator that allows layouts to be nested.
</TD
></TR
><TR
><TD CLASS="s15"
></TD
></TR
><TR
><TD CLASS="section1"
>Synopsis</TD
></TR
><TR
><TD CLASS="s15"
></TD
></TR
><TR
><TD CLASS="body"
><TABLE CLASS="vanilla" CELLSPACING="0" CELLPADDING="0"
><TR
><TD CLASS="decl"
><A HREF="#v%3AsubLayout"
>subLayout</A
> ::  [<A HREF="/usr/share/doc/ghc/html/libraries/base-4.2.0.2/Data-Int.html#t%3AInt"
>Int</A
>] -&gt; subl a -&gt; l a -&gt; <A HREF="XMonad-Layout-LayoutModifier.html#t%3AModifiedLayout"
>ModifiedLayout</A
> (Sublayout subl) l a</TD
></TR
><TR
><TD CLASS="s8"
></TD
></TR
><TR
><TD CLASS="decl"
><A HREF="#v%3AsubTabbed"
>subTabbed</A
> :: (<A HREF="/usr/share/doc/ghc/html/libraries/base-4.2.0.2/Data-Eq.html#t%3AEq"
>Eq</A
> a, <A HREF="XMonad-Layout-LayoutModifier.html#t%3ALayoutModifier"
>LayoutModifier</A
> (Sublayout <A HREF="XMonad-Layout-Simplest.html#t%3ASimplest"
>Simplest</A
>) a, <A HREF="/usr/share/doc/ghc/html/libraries/xmonad-0.9.1/XMonad-Core.html#t%3ALayoutClass"
>LayoutClass</A
> l a) =&gt; l a -&gt; <A HREF="XMonad-Layout-LayoutModifier.html#t%3AModifiedLayout"
>ModifiedLayout</A
> (<A HREF="XMonad-Layout-Decoration.html#t%3ADecoration"
>Decoration</A
> <A HREF="XMonad-Layout-Tabbed.html#t%3ATabbedDecoration"
>TabbedDecoration</A
> <A HREF="XMonad-Layout-Decoration.html#t%3ADefaultShrinker"
>DefaultShrinker</A
>) (<A HREF="XMonad-Layout-LayoutModifier.html#t%3AModifiedLayout"
>ModifiedLayout</A
> (Sublayout <A HREF="XMonad-Layout-Simplest.html#t%3ASimplest"
>Simplest</A
>) l) a</TD
></TR
><TR
><TD CLASS="s8"
></TD
></TR
><TR
><TD CLASS="decl"
><A HREF="#v%3ApushGroup"
>pushGroup</A
> :: <A HREF="XMonad-Util-Types.html#t%3ADirection2D"
>Direction2D</A
> -&gt; <A HREF="XMonad-Layout-WindowNavigation.html#t%3ANavigate"
>Navigate</A
></TD
></TR
><TR
><TD CLASS="s8"
></TD
></TR
><TR
><TD CLASS="decl"
><A HREF="#v%3ApullGroup"
>pullGroup</A
> :: <A HREF="XMonad-Util-Types.html#t%3ADirection2D"
>Direction2D</A
> -&gt; <A HREF="XMonad-Layout-WindowNavigation.html#t%3ANavigate"
>Navigate</A
></TD
></TR
><TR
><TD CLASS="s8"
></TD
></TR
><TR
><TD CLASS="decl"
><A HREF="#v%3ApushWindow"
>pushWindow</A
> :: <A HREF="XMonad-Util-Types.html#t%3ADirection2D"
>Direction2D</A
> -&gt; <A HREF="XMonad-Layout-WindowNavigation.html#t%3ANavigate"
>Navigate</A
></TD
></TR
><TR
><TD CLASS="s8"
></TD
></TR
><TR
><TD CLASS="decl"
><A HREF="#v%3ApullWindow"
>pullWindow</A
> :: <A HREF="XMonad-Util-Types.html#t%3ADirection2D"
>Direction2D</A
> -&gt; <A HREF="XMonad-Layout-WindowNavigation.html#t%3ANavigate"
>Navigate</A
></TD
></TR
><TR
><TD CLASS="s8"
></TD
></TR
><TR
><TD CLASS="decl"
><A HREF="#v%3AonGroup"
>onGroup</A
> :: (<A HREF="/usr/share/doc/ghc/html/libraries/xmonad-0.9.1/XMonad-StackSet.html#t%3AStack"
>Stack</A
> <A HREF="/usr/share/doc/ghc/html/libraries/X11-1.5.0.0/Graphics-X11-Types.html#t%3AWindow"
>Window</A
> -&gt; <A HREF="/usr/share/doc/ghc/html/libraries/xmonad-0.9.1/XMonad-StackSet.html#t%3AStack"
>Stack</A
> <A HREF="/usr/share/doc/ghc/html/libraries/X11-1.5.0.0/Graphics-X11-Types.html#t%3AWindow"
>Window</A
>) -&gt; <A HREF="/usr/share/doc/ghc/html/libraries/xmonad-0.9.1/XMonad-Core.html#t%3AX"
>X</A
> <A HREF="/usr/share/doc/ghc/html/libraries/ghc-prim-0.2.0.0/GHC-Unit.html#t%3A%28%29"
>()</A
></TD
></TR
><TR
><TD CLASS="s8"
></TD
></TR
><TR
><TD CLASS="decl"
><A HREF="#v%3AtoSubl"
>toSubl</A
> :: <A HREF="/usr/share/doc/ghc/html/libraries/xmonad-0.9.1/XMonad-Core.html#t%3AMessage"
>Message</A
> a =&gt; a -&gt; <A HREF="/usr/share/doc/ghc/html/libraries/xmonad-0.9.1/XMonad-Core.html#t%3AX"
>X</A
> <A HREF="/usr/share/doc/ghc/html/libraries/ghc-prim-0.2.0.0/GHC-Unit.html#t%3A%28%29"
>()</A
></TD
></TR
><TR
><TD CLASS="s8"
></TD
></TR
><TR
><TD CLASS="decl"
><A HREF="#v%3AmergeDir"
>mergeDir</A
> :: (<A HREF="/usr/share/doc/ghc/html/libraries/xmonad-0.9.1/XMonad-StackSet.html#t%3AStack"
>Stack</A
> <A HREF="/usr/share/doc/ghc/html/libraries/X11-1.5.0.0/Graphics-X11-Types.html#t%3AWindow"
>Window</A
> -&gt; <A HREF="/usr/share/doc/ghc/html/libraries/xmonad-0.9.1/XMonad-StackSet.html#t%3AStack"
>Stack</A
> <A HREF="/usr/share/doc/ghc/html/libraries/X11-1.5.0.0/Graphics-X11-Types.html#t%3AWindow"
>Window</A
>) -&gt; <A HREF="/usr/share/doc/ghc/html/libraries/X11-1.5.0.0/Graphics-X11-Types.html#t%3AWindow"
>Window</A
> -&gt; <A HREF="XMonad-Layout-SubLayouts.html#t%3AGroupMsg"
>GroupMsg</A
> <A HREF="/usr/share/doc/ghc/html/libraries/X11-1.5.0.0/Graphics-X11-Types.html#t%3AWindow"
>Window</A
></TD
></TR
><TR
><TD CLASS="s8"
></TD
></TR
><TR
><TD CLASS="decl"
><TABLE CLASS="vanilla" CELLSPACING="0" CELLPADDING="0"
><TR
><TD CLASS="decl"
><SPAN CLASS="keyword"
>data</SPAN
>  <A HREF="#t%3AGroupMsg"
>GroupMsg</A
> a </TD
></TR
><TR
><TD CLASS="body"
><TABLE CLASS="vanilla" CELLSPACING="0" CELLPADDING="0"
><TR
><TD CLASS="decl"
>= <A HREF="#v%3AUnMerge"
>UnMerge</A
> a</TD
></TR
><TR
><TD CLASS="decl"
>| <A HREF="#v%3AUnMergeAll"
>UnMergeAll</A
> a</TD
></TR
><TR
><TD CLASS="decl"
>| <A HREF="#v%3AMerge"
>Merge</A
> a a</TD
></TR
><TR
><TD CLASS="decl"
>| <A HREF="#v%3AMergeAll"
>MergeAll</A
> a</TD
></TR
><TR
><TD CLASS="decl"
>| <A HREF="#v%3AMigrate"
>Migrate</A
> a a</TD
></TR
><TR
><TD CLASS="decl"
>| <A HREF="#v%3AWithGroup"
>WithGroup</A
> (<A HREF="/usr/share/doc/ghc/html/libraries/xmonad-0.9.1/XMonad-StackSet.html#t%3AStack"
>Stack</A
> a -&gt; <A HREF="/usr/share/doc/ghc/html/libraries/xmonad-0.9.1/XMonad-Core.html#t%3AX"
>X</A
> (<A HREF="/usr/share/doc/ghc/html/libraries/xmonad-0.9.1/XMonad-StackSet.html#t%3AStack"
>Stack</A
> a)) a</TD
></TR
><TR
><TD CLASS="decl"
>| <A HREF="#v%3ASubMessage"
>SubMessage</A
> <A HREF="/usr/share/doc/ghc/html/libraries/xmonad-0.9.1/XMonad-Core.html#t%3ASomeMessage"
>SomeMessage</A
> a</TD
></TR
></TABLE
></TD
></TR
></TABLE
></TD
></TR
><TR
><TD CLASS="s8"
></TD
></TR
><TR
><TD CLASS="decl"
><SPAN CLASS="keyword"
>data</SPAN
>  <A HREF="#t%3ABroadcast"
>Broadcast</A
>  = <A HREF="#v%3ABroadcast"
>Broadcast</A
> <A HREF="/usr/share/doc/ghc/html/libraries/xmonad-0.9.1/XMonad-Core.html#t%3ASomeMessage"
>SomeMessage</A
></TD
></TR
><TR
><TD CLASS="s8"
></TD
></TR
><TR
><TD CLASS="decl"
><A HREF="#v%3AdefaultSublMap"
>defaultSublMap</A
> ::  <A HREF="/usr/share/doc/ghc/html/libraries/xmonad-0.9.1/XMonad-Core.html#t%3AXConfig"
>XConfig</A
> l -&gt; <A HREF="/usr/share/doc/ghc/html/libraries/containers-0.3.0.0/Data-Map.html#t%3AMap"
>Map</A
> (<A HREF="/usr/share/doc/ghc/html/libraries/X11-1.5.0.0/Graphics-X11-Types.html#t%3AKeyMask"
>KeyMask</A
>, <A HREF="/usr/share/doc/ghc/html/libraries/X11-1.5.0.0/Graphics-X11-Types.html#t%3AKeySym"
>KeySym</A
>) (<A HREF="/usr/share/doc/ghc/html/libraries/xmonad-0.9.1/XMonad-Core.html#t%3AX"
>X</A
> <A HREF="/usr/share/doc/ghc/html/libraries/ghc-prim-0.2.0.0/GHC-Unit.html#t%3A%28%29"
>()</A
>)</TD
></TR
></TABLE
></TD
></TR
><TR
><TD CLASS="s15"
></TD
></TR
><TR
><TD CLASS="s15"
></TD
></TR
><TR
><TD CLASS="section1"
><A NAME="1"
><A NAME="1"
>Usage
</A
></A
></TD
></TR
><TR
><TD CLASS="s15"
></TD
></TR
><TR
><TD CLASS="doc"
><P
>You can use this module with the following in your <TT
>~/.xmonad/xmonad.hs</TT
>:
</P
><PRE
> import XMonad.Layout.SubLayouts
 import XMonad.Layout.WindowNavigation
</PRE
><P
>Using <A HREF="XMonad-Layout-BoringWindows.html"
>XMonad.Layout.BoringWindows</A
> is optional and it allows you to add a
 keybinding to skip over the non-visible windows.
</P
><PRE
> import XMonad.Layout.BoringWindows
</PRE
><P
>Then edit your <TT
>layoutHook</TT
> by adding the <TT
><A HREF="XMonad-Layout-SubLayouts.html#v%3AsubTabbed"
>subTabbed</A
></TT
> layout modifier:
</P
><PRE
> myLayout = windowNavigation $ subTabbed $ boringWindows $
                        Tall 1 (3/100) (1/2) ||| etc..
 main = xmonad defaultConfig { layoutHook = myLayout }
</PRE
><P
><A HREF="XMonad-Layout-WindowNavigation.html"
>XMonad.Layout.WindowNavigation</A
> is used to specify which windows to merge,
 and it is not integrated into the modifier because it can be configured, and
 works best as the outer modifier.
</P
><P
>Then to your keybindings add:
</P
><PRE
> , ((modm .|. controlMask, xK_h), sendMessage $ pullGroup L)
 , ((modm .|. controlMask, xK_l), sendMessage $ pullGroup R)
 , ((modm .|. controlMask, xK_k), sendMessage $ pullGroup U)
 , ((modm .|. controlMask, xK_j), sendMessage $ pullGroup D)

 , ((modm .|. controlMask, xK_m), withFocused (sendMessage . MergeAll))
 , ((modm .|. controlMask, xK_u), withFocused (sendMessage . UnMerge))

 , ((modm .|. controlMask, xK_period), onGroup W.focusUp')
 , ((modm .|. controlMask, xK_comma), onGroup W.focusDown')
</PRE
><P
>These additional keybindings require the optional
  <A HREF="XMonad-Layout-BoringWindows.html"
>XMonad.Layout.BoringWindows</A
> layoutModifier. The focus will skip over the
  windows that are not focused in each sublayout.
</P
><PRE
> , ((modm, xK_j), focusDown)
 , ((modm, xK_k), focusUp)
</PRE
><P
>A submap can be used to make modifying the sublayouts using <TT
><A HREF="XMonad-Layout-SubLayouts.html#v%3AonGroup"
>onGroup</A
></TT
> and
  <TT
><A HREF="XMonad-Layout-SubLayouts.html#v%3AtoSubl"
>toSubl</A
></TT
> simpler:
</P
><PRE
> ,((modm, xK_s), submap $ defaultSublMap conf)
</PRE
><P
><EM
>NOTE:</EM
> is there some reason that <TT
>asks config &gt;&gt;= submap . defaultSublMap</TT
>
  could not be used in the keybinding instead? It avoids having to explicitly
  pass the conf.
</P
><P
>For more detailed instructions, see:
</P
><P
><A HREF="XMonad-Doc-Extending.html#Editing_the_layout_hook"
>XMonad.Doc.Extending</A
>
 <A HREF="XMonad-Doc-Extending.html#Adding_key_bindings"
>XMonad.Doc.Extending</A
>
</P
></TD
></TR
><TR
><TD CLASS="s15"
></TD
></TR
><TR
><TD CLASS="topdecl"
><TABLE CLASS="declbar"
><TR
><TD CLASS="declname"
><A NAME="v:subLayout"
><A NAME="v%3AsubLayout"
></A
></A
><B
>subLayout</B
> ::  [<A HREF="/usr/share/doc/ghc/html/libraries/base-4.2.0.2/Data-Int.html#t%3AInt"
>Int</A
>] -&gt; subl a -&gt; l a -&gt; <A HREF="XMonad-Layout-LayoutModifier.html#t%3AModifiedLayout"
>ModifiedLayout</A
> (Sublayout subl) l a</TD
><TD CLASS="declbut"
><A HREF="src/XMonad-Layout-SubLayouts.html#subLayout"
>Source</A
></TD
></TR
></TABLE
></TD
></TR
><TR
><TD CLASS="doc"
><P
>The main layout modifier arguments:
</P
><PRE
>subLayout advanceInnerLayouts innerLayout outerLayout</PRE
><DL
><DT
><TT
>advanceInnerLayouts</TT
></DT
><DD
> When a new group at index <TT
>n</TT
> in the outer layout
  is created (even with one element), the <TT
>innerLayout</TT
> is used as the
  layout within that group after being advanced with <TT
>advanceInnerLayouts !!
  n</TT
> <TT
><A HREF="/usr/share/doc/ghc/html/libraries/xmonad-0.9.1/XMonad-Layout.html#v%3ANextLayout"
>NextLayout</A
></TT
> messages. If there is no corresponding element in the
  <TT
>advanceInnerLayouts</TT
> list, then <TT
>innerLayout</TT
> is not given any <TT
><A HREF="/usr/share/doc/ghc/html/libraries/xmonad-0.9.1/XMonad-Layout.html#v%3ANextLayout"
>NextLayout</A
></TT
>
  messages.
</DD
><DT
><TT
>innerLayout</TT
></DT
><DD
> The single layout given to be run as a sublayout.
</DD
><DT
><TT
>outerLayout</TT
></DT
><DD
> The layout that determines the rectangles given to each
  group.
</DD
></DL
><P
>Ex. The second group is <TT
><A HREF="/usr/share/doc/ghc/html/libraries/xmonad-0.9.1/XMonad-Layout.html#t%3ATall"
>Tall</A
></TT
>, the third is Circle, all others are tabbed
  with:
</P
><PRE
> myLayout = addTabs shrinkText defaultTheme
          $ subLayout [0,1,2] (Simplest ||| Tall 1 0.2 0.5 ||| Circle)
          $ Tall 1 0.2 0.5 ||| Full
</PRE
></TD
></TR
><TR
><TD CLASS="s15"
></TD
></TR
><TR
><TD CLASS="topdecl"
><TABLE CLASS="declbar"
><TR
><TD CLASS="declname"
><A NAME="v:subTabbed"
><A NAME="v%3AsubTabbed"
></A
></A
><B
>subTabbed</B
> :: (<A HREF="/usr/share/doc/ghc/html/libraries/base-4.2.0.2/Data-Eq.html#t%3AEq"
>Eq</A
> a, <A HREF="XMonad-Layout-LayoutModifier.html#t%3ALayoutModifier"
>LayoutModifier</A
> (Sublayout <A HREF="XMonad-Layout-Simplest.html#t%3ASimplest"
>Simplest</A
>) a, <A HREF="/usr/share/doc/ghc/html/libraries/xmonad-0.9.1/XMonad-Core.html#t%3ALayoutClass"
>LayoutClass</A
> l a) =&gt; l a -&gt; <A HREF="XMonad-Layout-LayoutModifier.html#t%3AModifiedLayout"
>ModifiedLayout</A
> (<A HREF="XMonad-Layout-Decoration.html#t%3ADecoration"
>Decoration</A
> <A HREF="XMonad-Layout-Tabbed.html#t%3ATabbedDecoration"
>TabbedDecoration</A
> <A HREF="XMonad-Layout-Decoration.html#t%3ADefaultShrinker"
>DefaultShrinker</A
>) (<A HREF="XMonad-Layout-LayoutModifier.html#t%3AModifiedLayout"
>ModifiedLayout</A
> (Sublayout <A HREF="XMonad-Layout-Simplest.html#t%3ASimplest"
>Simplest</A
>) l) a</TD
><TD CLASS="declbut"
><A HREF="src/XMonad-Layout-SubLayouts.html#subTabbed"
>Source</A
></TD
></TR
></TABLE
></TD
></TR
><TR
><TD CLASS="doc"
><TT
>subTabbed</TT
> is a use of <TT
><A HREF="XMonad-Layout-SubLayouts.html#v%3AsubLayout"
>subLayout</A
></TT
> with <TT
><A HREF="XMonad-Layout-Tabbed.html#v%3AaddTabs"
>addTabs</A
></TT
> to show decorations.
</TD
></TR
><TR
><TD CLASS="s15"
></TD
></TR
><TR
><TD CLASS="topdecl"
><TABLE CLASS="declbar"
><TR
><TD CLASS="declname"
><A NAME="v:pushGroup"
><A NAME="v%3ApushGroup"
></A
></A
><B
>pushGroup</B
> :: <A HREF="XMonad-Util-Types.html#t%3ADirection2D"
>Direction2D</A
> -&gt; <A HREF="XMonad-Layout-WindowNavigation.html#t%3ANavigate"
>Navigate</A
></TD
><TD CLASS="declbut"
><A HREF="src/XMonad-Layout-SubLayouts.html#pushGroup"
>Source</A
></TD
></TR
></TABLE
></TD
></TR
><TR
><TD CLASS="doc"
><P
><TT
>pullGroup</TT
>, <TT
>pushGroup</TT
> allow you to merge windows or groups inheriting
 the position of the current window (pull) or the other window (push).
</P
><P
><TT
>pushWindow</TT
> and <TT
>pullWindow</TT
> move individual windows between groups. They
 are less effective at preserving window positions.
</P
></TD
></TR
><TR
><TD CLASS="s15"
></TD
></TR
><TR
><TD CLASS="topdecl"
><TABLE CLASS="declbar"
><TR
><TD CLASS="declname"
><A NAME="v:pullGroup"
><A NAME="v%3ApullGroup"
></A
></A
><B
>pullGroup</B
> :: <A HREF="XMonad-Util-Types.html#t%3ADirection2D"
>Direction2D</A
> -&gt; <A HREF="XMonad-Layout-WindowNavigation.html#t%3ANavigate"
>Navigate</A
></TD
><TD CLASS="declbut"
><A HREF="src/XMonad-Layout-SubLayouts.html#pullGroup"
>Source</A
></TD
></TR
></TABLE
></TD
></TR
><TR
><TD CLASS="s15"
></TD
></TR
><TR
><TD CLASS="topdecl"
><TABLE CLASS="declbar"
><TR
><TD CLASS="declname"
><A NAME="v:pushWindow"
><A NAME="v%3ApushWindow"
></A
></A
><B
>pushWindow</B
> :: <A HREF="XMonad-Util-Types.html#t%3ADirection2D"
>Direction2D</A
> -&gt; <A HREF="XMonad-Layout-WindowNavigation.html#t%3ANavigate"
>Navigate</A
></TD
><TD CLASS="declbut"
><A HREF="src/XMonad-Layout-SubLayouts.html#pushWindow"
>Source</A
></TD
></TR
></TABLE
></TD
></TR
><TR
><TD CLASS="s15"
></TD
></TR
><TR
><TD CLASS="topdecl"
><TABLE CLASS="declbar"
><TR
><TD CLASS="declname"
><A NAME="v:pullWindow"
><A NAME="v%3ApullWindow"
></A
></A
><B
>pullWindow</B
> :: <A HREF="XMonad-Util-Types.html#t%3ADirection2D"
>Direction2D</A
> -&gt; <A HREF="XMonad-Layout-WindowNavigation.html#t%3ANavigate"
>Navigate</A
></TD
><TD CLASS="declbut"
><A HREF="src/XMonad-Layout-SubLayouts.html#pullWindow"
>Source</A
></TD
></TR
></TABLE
></TD
></TR
><TR
><TD CLASS="s15"
></TD
></TR
><TR
><TD CLASS="topdecl"
><TABLE CLASS="declbar"
><TR
><TD CLASS="declname"
><A NAME="v:onGroup"
><A NAME="v%3AonGroup"
></A
></A
><B
>onGroup</B
> :: (<A HREF="/usr/share/doc/ghc/html/libraries/xmonad-0.9.1/XMonad-StackSet.html#t%3AStack"
>Stack</A
> <A HREF="/usr/share/doc/ghc/html/libraries/X11-1.5.0.0/Graphics-X11-Types.html#t%3AWindow"
>Window</A
> -&gt; <A HREF="/usr/share/doc/ghc/html/libraries/xmonad-0.9.1/XMonad-StackSet.html#t%3AStack"
>Stack</A
> <A HREF="/usr/share/doc/ghc/html/libraries/X11-1.5.0.0/Graphics-X11-Types.html#t%3AWindow"
>Window</A
>) -&gt; <A HREF="/usr/share/doc/ghc/html/libraries/xmonad-0.9.1/XMonad-Core.html#t%3AX"
>X</A
> <A HREF="/usr/share/doc/ghc/html/libraries/ghc-prim-0.2.0.0/GHC-Unit.html#t%3A%28%29"
>()</A
></TD
><TD CLASS="declbut"
><A HREF="src/XMonad-Layout-SubLayouts.html#onGroup"
>Source</A
></TD
></TR
></TABLE
></TD
></TR
><TR
><TD CLASS="doc"
>Apply a function on the stack belonging to the currently focused group. It
 works for rearranging windows and for changing focus.
</TD
></TR
><TR
><TD CLASS="s15"
></TD
></TR
><TR
><TD CLASS="topdecl"
><TABLE CLASS="declbar"
><TR
><TD CLASS="declname"
><A NAME="v:toSubl"
><A NAME="v%3AtoSubl"
></A
></A
><B
>toSubl</B
> :: <A HREF="/usr/share/doc/ghc/html/libraries/xmonad-0.9.1/XMonad-Core.html#t%3AMessage"
>Message</A
> a =&gt; a -&gt; <A HREF="/usr/share/doc/ghc/html/libraries/xmonad-0.9.1/XMonad-Core.html#t%3AX"
>X</A
> <A HREF="/usr/share/doc/ghc/html/libraries/ghc-prim-0.2.0.0/GHC-Unit.html#t%3A%28%29"
>()</A
></TD
><TD CLASS="declbut"
><A HREF="src/XMonad-Layout-SubLayouts.html#toSubl"
>Source</A
></TD
></TR
></TABLE
></TD
></TR
><TR
><TD CLASS="doc"
>Send a message to the currently focused sublayout.
</TD
></TR
><TR
><TD CLASS="s15"
></TD
></TR
><TR
><TD CLASS="topdecl"
><TABLE CLASS="declbar"
><TR
><TD CLASS="declname"
><A NAME="v:mergeDir"
><A NAME="v%3AmergeDir"
></A
></A
><B
>mergeDir</B
> :: (<A HREF="/usr/share/doc/ghc/html/libraries/xmonad-0.9.1/XMonad-StackSet.html#t%3AStack"
>Stack</A
> <A HREF="/usr/share/doc/ghc/html/libraries/X11-1.5.0.0/Graphics-X11-Types.html#t%3AWindow"
>Window</A
> -&gt; <A HREF="/usr/share/doc/ghc/html/libraries/xmonad-0.9.1/XMonad-StackSet.html#t%3AStack"
>Stack</A
> <A HREF="/usr/share/doc/ghc/html/libraries/X11-1.5.0.0/Graphics-X11-Types.html#t%3AWindow"
>Window</A
>) -&gt; <A HREF="/usr/share/doc/ghc/html/libraries/X11-1.5.0.0/Graphics-X11-Types.html#t%3AWindow"
>Window</A
> -&gt; <A HREF="XMonad-Layout-SubLayouts.html#t%3AGroupMsg"
>GroupMsg</A
> <A HREF="/usr/share/doc/ghc/html/libraries/X11-1.5.0.0/Graphics-X11-Types.html#t%3AWindow"
>Window</A
></TD
><TD CLASS="declbut"
><A HREF="src/XMonad-Layout-SubLayouts.html#mergeDir"
>Source</A
></TD
></TR
></TABLE
></TD
></TR
><TR
><TD CLASS="doc"
>merge the window that would be focused by the function when applied to the
 W.Stack of all windows, with the current group removed. The given window
 should be focused by a sublayout. Example usage: <TT
>withFocused (sendMessage .
 mergeDir W.focusDown')</TT
>
</TD
></TR
><TR
><TD CLASS="s15"
></TD
></TR
><TR
><TD CLASS="topdecl"
><TABLE CLASS="declbar"
><TR
><TD CLASS="declname"
><SPAN CLASS="keyword"
>data</SPAN
>  <A NAME="t:GroupMsg"
><A NAME="t%3AGroupMsg"
></A
></A
><B
>GroupMsg</B
> a </TD
><TD CLASS="declbut"
><A HREF="src/XMonad-Layout-SubLayouts.html#GroupMsg"
>Source</A
></TD
></TR
></TABLE
></TD
></TR
><TR
><TD CLASS="body"
><TABLE CLASS="vanilla" CELLSPACING="0" CELLPADDING="0"
><TR
><TD CLASS="ndoc"
>GroupMsg take window parameters to determine which group the action should
 be applied to
</TD
></TR
><TR
><TD CLASS="section4"
>Constructors</TD
></TR
><TR
><TD CLASS="body"
><TABLE CLASS="vanilla" CELLSPACING="1" CELLPADDING="0"
><TR
><TD CLASS="arg"
><A NAME="v:UnMerge"
><A NAME="v%3AUnMerge"
></A
></A
><B
>UnMerge</B
> a</TD
><TD CLASS="rdoc"
>free the focused window from its tab stack
</TD
></TR
><TR
><TD CLASS="arg"
><A NAME="v:UnMergeAll"
><A NAME="v%3AUnMergeAll"
></A
></A
><B
>UnMergeAll</B
> a</TD
><TD CLASS="rdoc"
>separate the focused group into singleton groups
</TD
></TR
><TR
><TD CLASS="arg"
><A NAME="v:Merge"
><A NAME="v%3AMerge"
></A
></A
><B
>Merge</B
> a a</TD
><TD CLASS="rdoc"
>merge the first group into the second group
</TD
></TR
><TR
><TD CLASS="arg"
><A NAME="v:MergeAll"
><A NAME="v%3AMergeAll"
></A
></A
><B
>MergeAll</B
> a</TD
><TD CLASS="rdoc"
>make one large group, keeping the parameter focused
</TD
></TR
><TR
><TD CLASS="arg"
><A NAME="v:Migrate"
><A NAME="v%3AMigrate"
></A
></A
><B
>Migrate</B
> a a</TD
><TD CLASS="rdoc"
>used to the window named in the first argument to the
 second argument's group, this may be replaced by a
 combination of <TT
><A HREF="XMonad-Layout-SubLayouts.html#v%3AUnMerge"
>UnMerge</A
></TT
> and <TT
><A HREF="XMonad-Layout-SubLayouts.html#v%3AMerge"
>Merge</A
></TT
>
</TD
></TR
><TR
><TD CLASS="arg"
><A NAME="v:WithGroup"
><A NAME="v%3AWithGroup"
></A
></A
><B
>WithGroup</B
> (<A HREF="/usr/share/doc/ghc/html/libraries/xmonad-0.9.1/XMonad-StackSet.html#t%3AStack"
>Stack</A
> a -&gt; <A HREF="/usr/share/doc/ghc/html/libraries/xmonad-0.9.1/XMonad-Core.html#t%3AX"
>X</A
> (<A HREF="/usr/share/doc/ghc/html/libraries/xmonad-0.9.1/XMonad-StackSet.html#t%3AStack"
>Stack</A
> a)) a</TD
><TD CLASS="rdoc"
></TD
></TR
><TR
><TD CLASS="arg"
><A NAME="v:SubMessage"
><A NAME="v%3ASubMessage"
></A
></A
><B
>SubMessage</B
> <A HREF="/usr/share/doc/ghc/html/libraries/xmonad-0.9.1/XMonad-Core.html#t%3ASomeMessage"
>SomeMessage</A
> a</TD
><TD CLASS="rdoc"
>the sublayout with the given window will get the message
</TD
></TR
></TABLE
></TD
></TR
><TR
><TD CLASS="section4"
><IMG SRC="minus.gif" CLASS="coll" ONCLICK="toggle(this,'i:GroupMsg')" ALT="show/hide"
> Instances</TD
></TR
><TR
><TD CLASS="body"
><DIV ID="i:GroupMsg" STYLE="display:block;"
><TABLE CLASS="vanilla" CELLSPACING="1" CELLPADDING="0"
><TR
><TD CLASS="decl"
><A HREF="/usr/share/doc/ghc/html/libraries/base-4.2.0.2/Data-Typeable.html#t%3ATypeable1"
>Typeable1</A
> <A HREF="XMonad-Layout-SubLayouts.html#t%3AGroupMsg"
>GroupMsg</A
></TD
></TR
><TR
><TD CLASS="decl"
><A HREF="/usr/share/doc/ghc/html/libraries/base-4.2.0.2/Data-Typeable.html#t%3ATypeable"
>Typeable</A
> a =&gt; <A HREF="/usr/share/doc/ghc/html/libraries/xmonad-0.9.1/XMonad-Core.html#t%3AMessage"
>Message</A
> (<A HREF="XMonad-Layout-SubLayouts.html#t%3AGroupMsg"
>GroupMsg</A
> a)</TD
></TR
></TABLE
></DIV
></TD
></TR
></TABLE
></TD
></TR
><TR
><TD CLASS="s15"
></TD
></TR
><TR
><TD CLASS="topdecl"
><TABLE CLASS="declbar"
><TR
><TD CLASS="declname"
><SPAN CLASS="keyword"
>data</SPAN
>  <A NAME="t:Broadcast"
><A NAME="t%3ABroadcast"
></A
></A
><B
>Broadcast</B
>  </TD
><TD CLASS="declbut"
><A HREF="src/XMonad-Layout-SubLayouts.html#Broadcast"
>Source</A
></TD
></TR
></TABLE
></TD
></TR
><TR
><TD CLASS="body"
><TABLE CLASS="vanilla" CELLSPACING="0" CELLPADDING="0"
><TR
><TD CLASS="section4"
>Constructors</TD
></TR
><TR
><TD CLASS="body"
><TABLE CLASS="vanilla" CELLSPACING="1" CELLPADDING="0"
><TR
><TD CLASS="arg"
><A NAME="v:Broadcast"
><A NAME="v%3ABroadcast"
></A
></A
><B
>Broadcast</B
> <A HREF="/usr/share/doc/ghc/html/libraries/xmonad-0.9.1/XMonad-Core.html#t%3ASomeMessage"
>SomeMessage</A
></TD
><TD CLASS="rdoc"
>send a message to all sublayouts
</TD
></TR
></TABLE
></TD
></TR
><TR
><TD CLASS="section4"
><IMG SRC="minus.gif" CLASS="coll" ONCLICK="toggle(this,'i:Broadcast')" ALT="show/hide"
> Instances</TD
></TR
><TR
><TD CLASS="body"
><DIV ID="i:Broadcast" STYLE="display:block;"
><TABLE CLASS="vanilla" CELLSPACING="1" CELLPADDING="0"
><TR
><TD CLASS="decl"
><A HREF="/usr/share/doc/ghc/html/libraries/base-4.2.0.2/Data-Typeable.html#t%3ATypeable"
>Typeable</A
> <A HREF="XMonad-Layout-SubLayouts.html#t%3ABroadcast"
>Broadcast</A
></TD
></TR
><TR
><TD CLASS="decl"
><A HREF="/usr/share/doc/ghc/html/libraries/xmonad-0.9.1/XMonad-Core.html#t%3AMessage"
>Message</A
> <A HREF="XMonad-Layout-SubLayouts.html#t%3ABroadcast"
>Broadcast</A
></TD
></TR
></TABLE
></DIV
></TD
></TR
></TABLE
></TD
></TR
><TR
><TD CLASS="s15"
></TD
></TR
><TR
><TD CLASS="topdecl"
><TABLE CLASS="declbar"
><TR
><TD CLASS="declname"
><A NAME="v:defaultSublMap"
><A NAME="v%3AdefaultSublMap"
></A
></A
><B
>defaultSublMap</B
> ::  <A HREF="/usr/share/doc/ghc/html/libraries/xmonad-0.9.1/XMonad-Core.html#t%3AXConfig"
>XConfig</A
> l -&gt; <A HREF="/usr/share/doc/ghc/html/libraries/containers-0.3.0.0/Data-Map.html#t%3AMap"
>Map</A
> (<A HREF="/usr/share/doc/ghc/html/libraries/X11-1.5.0.0/Graphics-X11-Types.html#t%3AKeyMask"
>KeyMask</A
>, <A HREF="/usr/share/doc/ghc/html/libraries/X11-1.5.0.0/Graphics-X11-Types.html#t%3AKeySym"
>KeySym</A
>) (<A HREF="/usr/share/doc/ghc/html/libraries/xmonad-0.9.1/XMonad-Core.html#t%3AX"
>X</A
> <A HREF="/usr/share/doc/ghc/html/libraries/ghc-prim-0.2.0.0/GHC-Unit.html#t%3A%28%29"
>()</A
>)</TD
><TD CLASS="declbut"
><A HREF="src/XMonad-Layout-SubLayouts.html#defaultSublMap"
>Source</A
></TD
></TR
></TABLE
></TD
></TR
><TR
><TD CLASS="doc"
><TT
>defaultSublMap</TT
> is an attempt to create a set of keybindings like the
 defaults ones but to be used as a submap for sending messages to the
 sublayout.
</TD
></TR
><TR
><TD CLASS="s15"
></TD
></TR
><TR
><TD CLASS="section1"
><A NAME="2"
><A NAME="2"
>Screenshots
</A
></A
></TD
></TR
><TR
><TD CLASS="s15"
></TD
></TR
><TR
><TD CLASS="doc"
><P
><IMG SRC="http://haskell.org/sitewiki/images/thumb/8/8b/Xmonad-SubLayouts-xinerama.png/480px-Xmonad-SubLayouts-xinerama.png"
>
</P
><P
>Larger version: <A HREF="http://haskell.org/sitewiki/images/8/8b/Xmonad-SubLayouts-xinerama.png"
>http://haskell.org/sitewiki/images/8/8b/Xmonad-SubLayouts-xinerama.png</A
>
</P
></TD
></TR
><TR
><TD CLASS="s15"
></TD
></TR
><TR
><TD CLASS="section1"
><A NAME="3"
><A NAME="3"
>Todo
</A
></A
></TD
></TR
><TR
><TD CLASS="s15"
></TD
></TR
><TR
><TD CLASS="doc"
><P
><EM
>Issue 288</EM
>
</P
><P
><A HREF="XMonad-Layout-ResizableTile.html"
>XMonad.Layout.ResizableTile</A
> assumes that its environment
  contains only the windows it is running: sublayouts are currently run with
  the stack containing only the windows passed to it in its environment, but
  any changes that the layout makes are not merged back.
</P
><P
>Should the behavior be made optional?
</P
><P
><EM
>Features</EM
>
</P
><UL
><LI
> suggested managehooks for merging specific windows, or the apropriate
     layout based hack to find out the number of groups currently showed, but
     the size of current window groups is not available (outside of this
     growing module)
</LI
></UL
><P
><EM
>SimpleTabbed as a SubLayout</EM
>
</P
><P
><TT
><A HREF="XMonad-Layout-SubLayouts.html#v%3AsubTabbed"
>subTabbed</A
></TT
> works well, but it would be more uniform to avoid the use of
  addTabs, with the sublayout being Simplest (but
  XMonad.Layout.Tabbed.simpleTabbed is this...).  The only thing to be
  gained by fixing this issue is the ability to mix and match decoration
  styles. Better compatibility with some other layouts of which I am not
  aware could be another benefit.
</P
><P
>simpleTabbed (and other decorated layouts) fail horribly when used as
  subLayouts:
</P
><UL
><LI
> decorations stick around: layout is run after being told to Hide
</LI
><LI
> mouse events do not change focus: the group-ungroup does not respect
      the focus changes it wants?
</LI
><LI
> sending ReleaseResources before running it makes xmonad very slow, and
      still leaves borders sticking around
</LI
></UL
></TD
></TR
><TR
><TD CLASS="s15"
></TD
></TR
><TR
><TD CLASS="botbar"
>Produced by <A HREF="http://www.haskell.org/haddock/"
>Haddock</A
> version 2.6.1</TD
></TR
></TABLE
></BODY
></HTML
>