<!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.StackSet</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-StackSet.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-0.9.1: A tiling window manager</TD ><TD CLASS="topbut" ><A HREF="src/XMonad-StackSet.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.StackSet</FONT ></TD ><TD ALIGN="right" ><TABLE CLASS="narrow" CELLSPACING="0" CELLPADDING="0" ><TR ><TD CLASS="infohead" >Portability</TD ><TD CLASS="infoval" >portable, Haskell 98</TD ></TR ><TR ><TD CLASS="infohead" >Stability</TD ><TD CLASS="infoval" >experimental</TD ></TR ><TR ><TD CLASS="infohead" >Maintainer</TD ><TD CLASS="infoval" >dons@galois.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" >Introduction </A ></DT ><DD ><DL ><DT ><A HREF="#2" >The Zipper </A ></DT ><DT ><A HREF="#3" >Xinerama support </A ></DT ><DT ><A HREF="#4" >Master and Focus </A ></DT ></DL ></DD ><DT ><A HREF="#5" >Construction </A ></DT ><DT ><A HREF="#6" >Xinerama operations </A ></DT ><DT ><A HREF="#7" >Operations on the current stack </A ></DT ><DT ><A HREF="#8" >Modifying the stackset </A ></DT ><DT ><A HREF="#9" >Setting the master window </A ></DT ><DT ><A HREF="#10" >Composite operations </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" ></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" ><SPAN CLASS="keyword" >data</SPAN > <A HREF="#t%3AStackSet" >StackSet</A > i l a sid sd = <A HREF="#v%3AStackSet" >StackSet</A > {<TABLE CLASS="vanilla" CELLSPACING="0" CELLPADDING="0" ><TR ><TD CLASS="recfield" ><A HREF="#v%3Acurrent" >current</A > :: !(<A HREF="XMonad-StackSet.html#t%3AScreen" >Screen</A > i l a sid sd)</TD ></TR ><TR ><TD CLASS="recfield" ><A HREF="#v%3Avisible" >visible</A > :: [<A HREF="XMonad-StackSet.html#t%3AScreen" >Screen</A > i l a sid sd]</TD ></TR ><TR ><TD CLASS="recfield" ><A HREF="#v%3Ahidden" >hidden</A > :: [<A HREF="XMonad-StackSet.html#t%3AWorkspace" >Workspace</A > i l a]</TD ></TR ><TR ><TD CLASS="recfield" ><A HREF="#v%3Afloating" >floating</A > :: <A HREF="/usr/share/doc/ghc/html/libraries/containers-0.3.0.0/Data-Map.html#t%3AMap" >Map</A > a <A HREF="XMonad-StackSet.html#t%3ARationalRect" >RationalRect</A ></TD ></TR ></TABLE >}</TD ></TR ><TR ><TD CLASS="s8" ></TD ></TR ><TR ><TD CLASS="decl" ><SPAN CLASS="keyword" >data</SPAN > <A HREF="#t%3AWorkspace" >Workspace</A > i l a = <A HREF="#v%3AWorkspace" >Workspace</A > {<TABLE CLASS="vanilla" CELLSPACING="0" CELLPADDING="0" ><TR ><TD CLASS="recfield" ><A HREF="#v%3Atag" >tag</A > :: !i</TD ></TR ><TR ><TD CLASS="recfield" ><A HREF="#v%3Alayout" >layout</A > :: l</TD ></TR ><TR ><TD CLASS="recfield" ><A HREF="#v%3Astack" >stack</A > :: <A HREF="/usr/share/doc/ghc/html/libraries/base-4.2.0.2/Data-Maybe.html#t%3AMaybe" >Maybe</A > (<A HREF="XMonad-StackSet.html#t%3AStack" >Stack</A > a)</TD ></TR ></TABLE >}</TD ></TR ><TR ><TD CLASS="s8" ></TD ></TR ><TR ><TD CLASS="decl" ><SPAN CLASS="keyword" >data</SPAN > <A HREF="#t%3AScreen" >Screen</A > i l a sid sd = <A HREF="#v%3AScreen" >Screen</A > {<TABLE CLASS="vanilla" CELLSPACING="0" CELLPADDING="0" ><TR ><TD CLASS="recfield" ><A HREF="#v%3Aworkspace" >workspace</A > :: !(<A HREF="XMonad-StackSet.html#t%3AWorkspace" >Workspace</A > i l a)</TD ></TR ><TR ><TD CLASS="recfield" ><A HREF="#v%3Ascreen" >screen</A > :: !sid</TD ></TR ><TR ><TD CLASS="recfield" ><A HREF="#v%3AscreenDetail" >screenDetail</A > :: !sd</TD ></TR ></TABLE >}</TD ></TR ><TR ><TD CLASS="s8" ></TD ></TR ><TR ><TD CLASS="decl" ><SPAN CLASS="keyword" >data</SPAN > <A HREF="#t%3AStack" >Stack</A > a = <A HREF="#v%3AStack" >Stack</A > {<TABLE CLASS="vanilla" CELLSPACING="0" CELLPADDING="0" ><TR ><TD CLASS="recfield" ><A HREF="#v%3Afocus" >focus</A > :: !a</TD ></TR ><TR ><TD CLASS="recfield" ><A HREF="#v%3Aup" >up</A > :: [a]</TD ></TR ><TR ><TD CLASS="recfield" ><A HREF="#v%3Adown" >down</A > :: [a]</TD ></TR ></TABLE >}</TD ></TR ><TR ><TD CLASS="s8" ></TD ></TR ><TR ><TD CLASS="decl" ><SPAN CLASS="keyword" >data</SPAN > <A HREF="#t%3ARationalRect" >RationalRect</A > = <A HREF="#v%3ARationalRect" >RationalRect</A > <A HREF="/usr/share/doc/ghc/html/libraries/base-4.2.0.2/Prelude.html#t%3ARational" >Rational</A > <A HREF="/usr/share/doc/ghc/html/libraries/base-4.2.0.2/Prelude.html#t%3ARational" >Rational</A > <A HREF="/usr/share/doc/ghc/html/libraries/base-4.2.0.2/Prelude.html#t%3ARational" >Rational</A > <A HREF="/usr/share/doc/ghc/html/libraries/base-4.2.0.2/Prelude.html#t%3ARational" >Rational</A ></TD ></TR ><TR ><TD CLASS="s8" ></TD ></TR ><TR ><TD CLASS="decl" ><A HREF="#v%3Anew" >new</A > :: <A HREF="/usr/share/doc/ghc/html/libraries/base-4.2.0.2/Prelude.html#t%3AIntegral" >Integral</A > s => l -> [i] -> [sd] -> <A HREF="XMonad-StackSet.html#t%3AStackSet" >StackSet</A > i l a s sd</TD ></TR ><TR ><TD CLASS="s8" ></TD ></TR ><TR ><TD CLASS="decl" ><A HREF="#v%3Aview" >view</A > :: (<A HREF="/usr/share/doc/ghc/html/libraries/base-4.2.0.2/Data-Eq.html#t%3AEq" >Eq</A > s, <A HREF="/usr/share/doc/ghc/html/libraries/base-4.2.0.2/Data-Eq.html#t%3AEq" >Eq</A > i) => i -> <A HREF="XMonad-StackSet.html#t%3AStackSet" >StackSet</A > i l a s sd -> <A HREF="XMonad-StackSet.html#t%3AStackSet" >StackSet</A > i l a s sd</TD ></TR ><TR ><TD CLASS="s8" ></TD ></TR ><TR ><TD CLASS="decl" ><A HREF="#v%3AgreedyView" >greedyView</A > :: (<A HREF="/usr/share/doc/ghc/html/libraries/base-4.2.0.2/Data-Eq.html#t%3AEq" >Eq</A > s, <A HREF="/usr/share/doc/ghc/html/libraries/base-4.2.0.2/Data-Eq.html#t%3AEq" >Eq</A > i) => i -> <A HREF="XMonad-StackSet.html#t%3AStackSet" >StackSet</A > i l a s sd -> <A HREF="XMonad-StackSet.html#t%3AStackSet" >StackSet</A > i l a s sd</TD ></TR ><TR ><TD CLASS="s8" ></TD ></TR ><TR ><TD CLASS="decl" ><A HREF="#v%3AlookupWorkspace" >lookupWorkspace</A > :: <A HREF="/usr/share/doc/ghc/html/libraries/base-4.2.0.2/Data-Eq.html#t%3AEq" >Eq</A > s => s -> <A HREF="XMonad-StackSet.html#t%3AStackSet" >StackSet</A > i l a s sd -> <A HREF="/usr/share/doc/ghc/html/libraries/base-4.2.0.2/Data-Maybe.html#t%3AMaybe" >Maybe</A > i</TD ></TR ><TR ><TD CLASS="s8" ></TD ></TR ><TR ><TD CLASS="decl" ><A HREF="#v%3Ascreens" >screens</A > :: <A HREF="XMonad-StackSet.html#t%3AStackSet" >StackSet</A > i l a s sd -> [<A HREF="XMonad-StackSet.html#t%3AScreen" >Screen</A > i l a s sd]</TD ></TR ><TR ><TD CLASS="s8" ></TD ></TR ><TR ><TD CLASS="decl" ><A HREF="#v%3Aworkspaces" >workspaces</A > :: <A HREF="XMonad-StackSet.html#t%3AStackSet" >StackSet</A > i l a s sd -> [<A HREF="XMonad-StackSet.html#t%3AWorkspace" >Workspace</A > i l a]</TD ></TR ><TR ><TD CLASS="s8" ></TD ></TR ><TR ><TD CLASS="decl" ><A HREF="#v%3AallWindows" >allWindows</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-StackSet.html#t%3AStackSet" >StackSet</A > i l a s sd -> [a]</TD ></TR ><TR ><TD CLASS="s8" ></TD ></TR ><TR ><TD CLASS="decl" ><A HREF="#v%3AcurrentTag" >currentTag</A > :: <A HREF="XMonad-StackSet.html#t%3AStackSet" >StackSet</A > i l a s sd -> i</TD ></TR ><TR ><TD CLASS="s8" ></TD ></TR ><TR ><TD CLASS="decl" ><A HREF="#v%3Apeek" >peek</A > :: <A HREF="XMonad-StackSet.html#t%3AStackSet" >StackSet</A > i l a s sd -> <A HREF="/usr/share/doc/ghc/html/libraries/base-4.2.0.2/Data-Maybe.html#t%3AMaybe" >Maybe</A > a</TD ></TR ><TR ><TD CLASS="s8" ></TD ></TR ><TR ><TD CLASS="decl" ><A HREF="#v%3Aindex" >index</A > :: <A HREF="XMonad-StackSet.html#t%3AStackSet" >StackSet</A > i l a s sd -> [a]</TD ></TR ><TR ><TD CLASS="s8" ></TD ></TR ><TR ><TD CLASS="decl" ><A HREF="#v%3Aintegrate" >integrate</A > :: <A HREF="XMonad-StackSet.html#t%3AStack" >Stack</A > a -> [a]</TD ></TR ><TR ><TD CLASS="s8" ></TD ></TR ><TR ><TD CLASS="decl" ><A HREF="#v%3Aintegrate%27" >integrate'</A > :: <A HREF="/usr/share/doc/ghc/html/libraries/base-4.2.0.2/Data-Maybe.html#t%3AMaybe" >Maybe</A > (<A HREF="XMonad-StackSet.html#t%3AStack" >Stack</A > a) -> [a]</TD ></TR ><TR ><TD CLASS="s8" ></TD ></TR ><TR ><TD CLASS="decl" ><A HREF="#v%3Adifferentiate" >differentiate</A > :: [a] -> <A HREF="/usr/share/doc/ghc/html/libraries/base-4.2.0.2/Data-Maybe.html#t%3AMaybe" >Maybe</A > (<A HREF="XMonad-StackSet.html#t%3AStack" >Stack</A > a)</TD ></TR ><TR ><TD CLASS="s8" ></TD ></TR ><TR ><TD CLASS="decl" ><A HREF="#v%3AfocusUp" >focusUp</A > :: <A HREF="XMonad-StackSet.html#t%3AStackSet" >StackSet</A > i l a s sd -> <A HREF="XMonad-StackSet.html#t%3AStackSet" >StackSet</A > i l a s sd</TD ></TR ><TR ><TD CLASS="s8" ></TD ></TR ><TR ><TD CLASS="decl" ><A HREF="#v%3AfocusDown" >focusDown</A > :: <A HREF="XMonad-StackSet.html#t%3AStackSet" >StackSet</A > i l a s sd -> <A HREF="XMonad-StackSet.html#t%3AStackSet" >StackSet</A > i l a s sd</TD ></TR ><TR ><TD CLASS="s8" ></TD ></TR ><TR ><TD CLASS="decl" ><A HREF="#v%3AfocusUp%27" >focusUp'</A > :: <A HREF="XMonad-StackSet.html#t%3AStack" >Stack</A > a -> <A HREF="XMonad-StackSet.html#t%3AStack" >Stack</A > a</TD ></TR ><TR ><TD CLASS="s8" ></TD ></TR ><TR ><TD CLASS="decl" ><A HREF="#v%3AfocusDown%27" >focusDown'</A > :: <A HREF="XMonad-StackSet.html#t%3AStack" >Stack</A > a -> <A HREF="XMonad-StackSet.html#t%3AStack" >Stack</A > a</TD ></TR ><TR ><TD CLASS="s8" ></TD ></TR ><TR ><TD CLASS="decl" ><A HREF="#v%3AfocusMaster" >focusMaster</A > :: <A HREF="XMonad-StackSet.html#t%3AStackSet" >StackSet</A > i l a s sd -> <A HREF="XMonad-StackSet.html#t%3AStackSet" >StackSet</A > i l a s sd</TD ></TR ><TR ><TD CLASS="s8" ></TD ></TR ><TR ><TD CLASS="decl" ><A HREF="#v%3AfocusWindow" >focusWindow</A > :: (<A HREF="/usr/share/doc/ghc/html/libraries/base-4.2.0.2/Data-Eq.html#t%3AEq" >Eq</A > s, <A HREF="/usr/share/doc/ghc/html/libraries/base-4.2.0.2/Data-Eq.html#t%3AEq" >Eq</A > a, <A HREF="/usr/share/doc/ghc/html/libraries/base-4.2.0.2/Data-Eq.html#t%3AEq" >Eq</A > i) => a -> <A HREF="XMonad-StackSet.html#t%3AStackSet" >StackSet</A > i l a s sd -> <A HREF="XMonad-StackSet.html#t%3AStackSet" >StackSet</A > i l a s sd</TD ></TR ><TR ><TD CLASS="s8" ></TD ></TR ><TR ><TD CLASS="decl" ><A HREF="#v%3AtagMember" >tagMember</A > :: <A HREF="/usr/share/doc/ghc/html/libraries/base-4.2.0.2/Data-Eq.html#t%3AEq" >Eq</A > i => i -> <A HREF="XMonad-StackSet.html#t%3AStackSet" >StackSet</A > i l a s sd -> <A HREF="/usr/share/doc/ghc/html/libraries/base-4.2.0.2/Data-Bool.html#t%3ABool" >Bool</A ></TD ></TR ><TR ><TD CLASS="s8" ></TD ></TR ><TR ><TD CLASS="decl" ><A HREF="#v%3ArenameTag" >renameTag</A > :: <A HREF="/usr/share/doc/ghc/html/libraries/base-4.2.0.2/Data-Eq.html#t%3AEq" >Eq</A > i => i -> i -> <A HREF="XMonad-StackSet.html#t%3AStackSet" >StackSet</A > i l a s sd -> <A HREF="XMonad-StackSet.html#t%3AStackSet" >StackSet</A > i l a s sd</TD ></TR ><TR ><TD CLASS="s8" ></TD ></TR ><TR ><TD CLASS="decl" ><A HREF="#v%3AensureTags" >ensureTags</A > :: <A HREF="/usr/share/doc/ghc/html/libraries/base-4.2.0.2/Data-Eq.html#t%3AEq" >Eq</A > i => l -> [i] -> <A HREF="XMonad-StackSet.html#t%3AStackSet" >StackSet</A > i l a s sd -> <A HREF="XMonad-StackSet.html#t%3AStackSet" >StackSet</A > i l a s sd</TD ></TR ><TR ><TD CLASS="s8" ></TD ></TR ><TR ><TD CLASS="decl" ><A HREF="#v%3Amember" >member</A > :: <A HREF="/usr/share/doc/ghc/html/libraries/base-4.2.0.2/Data-Eq.html#t%3AEq" >Eq</A > a => a -> <A HREF="XMonad-StackSet.html#t%3AStackSet" >StackSet</A > i l a s sd -> <A HREF="/usr/share/doc/ghc/html/libraries/base-4.2.0.2/Data-Bool.html#t%3ABool" >Bool</A ></TD ></TR ><TR ><TD CLASS="s8" ></TD ></TR ><TR ><TD CLASS="decl" ><A HREF="#v%3AfindTag" >findTag</A > :: <A HREF="/usr/share/doc/ghc/html/libraries/base-4.2.0.2/Data-Eq.html#t%3AEq" >Eq</A > a => a -> <A HREF="XMonad-StackSet.html#t%3AStackSet" >StackSet</A > i l a s sd -> <A HREF="/usr/share/doc/ghc/html/libraries/base-4.2.0.2/Data-Maybe.html#t%3AMaybe" >Maybe</A > i</TD ></TR ><TR ><TD CLASS="s8" ></TD ></TR ><TR ><TD CLASS="decl" ><A HREF="#v%3AmapWorkspace" >mapWorkspace</A > :: (<A HREF="XMonad-StackSet.html#t%3AWorkspace" >Workspace</A > i l a -> <A HREF="XMonad-StackSet.html#t%3AWorkspace" >Workspace</A > i l a) -> <A HREF="XMonad-StackSet.html#t%3AStackSet" >StackSet</A > i l a s sd -> <A HREF="XMonad-StackSet.html#t%3AStackSet" >StackSet</A > i l a s sd</TD ></TR ><TR ><TD CLASS="s8" ></TD ></TR ><TR ><TD CLASS="decl" ><A HREF="#v%3AmapLayout" >mapLayout</A > :: (l -> l') -> <A HREF="XMonad-StackSet.html#t%3AStackSet" >StackSet</A > i l a s sd -> <A HREF="XMonad-StackSet.html#t%3AStackSet" >StackSet</A > i l' a s sd</TD ></TR ><TR ><TD CLASS="s8" ></TD ></TR ><TR ><TD CLASS="decl" ><A HREF="#v%3AinsertUp" >insertUp</A > :: <A HREF="/usr/share/doc/ghc/html/libraries/base-4.2.0.2/Data-Eq.html#t%3AEq" >Eq</A > a => a -> <A HREF="XMonad-StackSet.html#t%3AStackSet" >StackSet</A > i l a s sd -> <A HREF="XMonad-StackSet.html#t%3AStackSet" >StackSet</A > i l a s sd</TD ></TR ><TR ><TD CLASS="s8" ></TD ></TR ><TR ><TD CLASS="decl" ><A HREF="#v%3Adelete" >delete</A > :: (<A HREF="/usr/share/doc/ghc/html/libraries/base-4.2.0.2/Data-Ord.html#t%3AOrd" >Ord</A > a, <A HREF="/usr/share/doc/ghc/html/libraries/base-4.2.0.2/Data-Eq.html#t%3AEq" >Eq</A > s) => a -> <A HREF="XMonad-StackSet.html#t%3AStackSet" >StackSet</A > i l a s sd -> <A HREF="XMonad-StackSet.html#t%3AStackSet" >StackSet</A > i l a s sd</TD ></TR ><TR ><TD CLASS="s8" ></TD ></TR ><TR ><TD CLASS="decl" ><A HREF="#v%3Adelete%27" >delete'</A > :: (<A HREF="/usr/share/doc/ghc/html/libraries/base-4.2.0.2/Data-Eq.html#t%3AEq" >Eq</A > a, <A HREF="/usr/share/doc/ghc/html/libraries/base-4.2.0.2/Data-Eq.html#t%3AEq" >Eq</A > s) => a -> <A HREF="XMonad-StackSet.html#t%3AStackSet" >StackSet</A > i l a s sd -> <A HREF="XMonad-StackSet.html#t%3AStackSet" >StackSet</A > i l a s sd</TD ></TR ><TR ><TD CLASS="s8" ></TD ></TR ><TR ><TD CLASS="decl" ><A HREF="#v%3Afilter" >filter</A > :: (a -> <A HREF="/usr/share/doc/ghc/html/libraries/base-4.2.0.2/Data-Bool.html#t%3ABool" >Bool</A >) -> <A HREF="XMonad-StackSet.html#t%3AStack" >Stack</A > a -> <A HREF="/usr/share/doc/ghc/html/libraries/base-4.2.0.2/Data-Maybe.html#t%3AMaybe" >Maybe</A > (<A HREF="XMonad-StackSet.html#t%3AStack" >Stack</A > a)</TD ></TR ><TR ><TD CLASS="s8" ></TD ></TR ><TR ><TD CLASS="decl" ><A HREF="#v%3AswapUp" >swapUp</A > :: <A HREF="XMonad-StackSet.html#t%3AStackSet" >StackSet</A > i l a s sd -> <A HREF="XMonad-StackSet.html#t%3AStackSet" >StackSet</A > i l a s sd</TD ></TR ><TR ><TD CLASS="s8" ></TD ></TR ><TR ><TD CLASS="decl" ><A HREF="#v%3AswapDown" >swapDown</A > :: <A HREF="XMonad-StackSet.html#t%3AStackSet" >StackSet</A > i l a s sd -> <A HREF="XMonad-StackSet.html#t%3AStackSet" >StackSet</A > i l a s sd</TD ></TR ><TR ><TD CLASS="s8" ></TD ></TR ><TR ><TD CLASS="decl" ><A HREF="#v%3AswapMaster" >swapMaster</A > :: <A HREF="XMonad-StackSet.html#t%3AStackSet" >StackSet</A > i l a s sd -> <A HREF="XMonad-StackSet.html#t%3AStackSet" >StackSet</A > i l a s sd</TD ></TR ><TR ><TD CLASS="s8" ></TD ></TR ><TR ><TD CLASS="decl" ><A HREF="#v%3AshiftMaster" >shiftMaster</A > :: <A HREF="XMonad-StackSet.html#t%3AStackSet" >StackSet</A > i l a s sd -> <A HREF="XMonad-StackSet.html#t%3AStackSet" >StackSet</A > i l a s sd</TD ></TR ><TR ><TD CLASS="s8" ></TD ></TR ><TR ><TD CLASS="decl" ><A HREF="#v%3Amodify" >modify</A > :: <A HREF="/usr/share/doc/ghc/html/libraries/base-4.2.0.2/Data-Maybe.html#t%3AMaybe" >Maybe</A > (<A HREF="XMonad-StackSet.html#t%3AStack" >Stack</A > a) -> (<A HREF="XMonad-StackSet.html#t%3AStack" >Stack</A > a -> <A HREF="/usr/share/doc/ghc/html/libraries/base-4.2.0.2/Data-Maybe.html#t%3AMaybe" >Maybe</A > (<A HREF="XMonad-StackSet.html#t%3AStack" >Stack</A > a)) -> <A HREF="XMonad-StackSet.html#t%3AStackSet" >StackSet</A > i l a s sd -> <A HREF="XMonad-StackSet.html#t%3AStackSet" >StackSet</A > i l a s sd</TD ></TR ><TR ><TD CLASS="s8" ></TD ></TR ><TR ><TD CLASS="decl" ><A HREF="#v%3Amodify%27" >modify'</A > :: (<A HREF="XMonad-StackSet.html#t%3AStack" >Stack</A > a -> <A HREF="XMonad-StackSet.html#t%3AStack" >Stack</A > a) -> <A HREF="XMonad-StackSet.html#t%3AStackSet" >StackSet</A > i l a s sd -> <A HREF="XMonad-StackSet.html#t%3AStackSet" >StackSet</A > i l a s sd</TD ></TR ><TR ><TD CLASS="s8" ></TD ></TR ><TR ><TD CLASS="decl" ><A HREF="#v%3Afloat" >float</A > :: <A HREF="/usr/share/doc/ghc/html/libraries/base-4.2.0.2/Data-Ord.html#t%3AOrd" >Ord</A > a => a -> <A HREF="XMonad-StackSet.html#t%3ARationalRect" >RationalRect</A > -> <A HREF="XMonad-StackSet.html#t%3AStackSet" >StackSet</A > i l a s sd -> <A HREF="XMonad-StackSet.html#t%3AStackSet" >StackSet</A > i l a s sd</TD ></TR ><TR ><TD CLASS="s8" ></TD ></TR ><TR ><TD CLASS="decl" ><A HREF="#v%3Asink" >sink</A > :: <A HREF="/usr/share/doc/ghc/html/libraries/base-4.2.0.2/Data-Ord.html#t%3AOrd" >Ord</A > a => a -> <A HREF="XMonad-StackSet.html#t%3AStackSet" >StackSet</A > i l a s sd -> <A HREF="XMonad-StackSet.html#t%3AStackSet" >StackSet</A > i l a s sd</TD ></TR ><TR ><TD CLASS="s8" ></TD ></TR ><TR ><TD CLASS="decl" ><A HREF="#v%3Ashift" >shift</A > :: (<A HREF="/usr/share/doc/ghc/html/libraries/base-4.2.0.2/Data-Ord.html#t%3AOrd" >Ord</A > a, <A HREF="/usr/share/doc/ghc/html/libraries/base-4.2.0.2/Data-Eq.html#t%3AEq" >Eq</A > s, <A HREF="/usr/share/doc/ghc/html/libraries/base-4.2.0.2/Data-Eq.html#t%3AEq" >Eq</A > i) => i -> <A HREF="XMonad-StackSet.html#t%3AStackSet" >StackSet</A > i l a s sd -> <A HREF="XMonad-StackSet.html#t%3AStackSet" >StackSet</A > i l a s sd</TD ></TR ><TR ><TD CLASS="s8" ></TD ></TR ><TR ><TD CLASS="decl" ><A HREF="#v%3AshiftWin" >shiftWin</A > :: (<A HREF="/usr/share/doc/ghc/html/libraries/base-4.2.0.2/Data-Ord.html#t%3AOrd" >Ord</A > a, <A HREF="/usr/share/doc/ghc/html/libraries/base-4.2.0.2/Data-Eq.html#t%3AEq" >Eq</A > a, <A HREF="/usr/share/doc/ghc/html/libraries/base-4.2.0.2/Data-Eq.html#t%3AEq" >Eq</A > s, <A HREF="/usr/share/doc/ghc/html/libraries/base-4.2.0.2/Data-Eq.html#t%3AEq" >Eq</A > i) => i -> a -> <A HREF="XMonad-StackSet.html#t%3AStackSet" >StackSet</A > i l a s sd -> <A HREF="XMonad-StackSet.html#t%3AStackSet" >StackSet</A > i l a s sd</TD ></TR ><TR ><TD CLASS="s8" ></TD ></TR ><TR ><TD CLASS="decl" ><A HREF="#v%3Aabort" >abort</A > :: <A HREF="/usr/share/doc/ghc/html/libraries/base-4.2.0.2/Data-Char.html#t%3AString" >String</A > -> 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" >Introduction </A ></A ></TD ></TR ><TR ><TD CLASS="s15" ></TD ></TR ><TR ><TD CLASS="doc" ><P >The <TT ><A HREF="XMonad-StackSet.html#t%3AStackSet" >StackSet</A ></TT > data type encodes a window manager abstraction. The window manager is a set of virtual workspaces. On each workspace is a stack of windows. A given workspace is always current, and a given window on each workspace has focus. The focused window on the current workspace is the one which will take user input. It can be visualised as follows: </P ><PRE > Workspace { 0*} { 1 } { 2 } { 3 } { 4 } Windows [1 [] [3* [6*] [] ,2*] ,4 ,5] </PRE ><P >Note that workspaces are indexed from 0, windows are numbered uniquely. A <TT ><A HREF="/usr/share/doc/ghc/html/libraries/base-4.2.0.2/Prelude.html#v%3A%2A" >*</A ></TT > indicates the window on each workspace that has focus, and which workspace is current. </P ></TD ></TR ><TR ><TD CLASS="s15" ></TD ></TR ><TR ><TD CLASS="section2" ><A NAME="2" ><A NAME="2" >The Zipper </A ></A ></TD ></TR ><TR ><TD CLASS="s15" ></TD ></TR ><TR ><TD CLASS="doc" ><P >We encode all the focus tracking directly in the data structure, with a zipper: </P ><P >A Zipper is essentially an updateable and yet pure functional cursor into a data structure. Zipper is also a delimited continuation reified as a data structure. </P ><P >The Zipper lets us replace an item deep in a complex data structure, e.g., a tree or a term, without an mutation. The resulting data structure will share as much of its components with the old structure as possible. </P ><P >Oleg Kiselyov, 27 Apr 2005, haskell@, <A HREF="Zipper as a delimited continuation.html" >Zipper as a delimited continuation</A > </P ><P >We use the zipper to keep track of the focused workspace and the focused window on each workspace, allowing us to have correct focus by construction. We closely follow Huet's original implementation: </P ><P >G. Huet, <EM >Functional Pearl: The Zipper</EM >, 1997, J. Functional Programming 75(5):549-554. and: R. Hinze and J. Jeuring, <EM >Functional Pearl: The Web</EM >. </P ><P >and Conor McBride's zipper differentiation paper. Another good reference is: </P ><P >The Zipper, Haskell wikibook </P ></TD ></TR ><TR ><TD CLASS="s15" ></TD ></TR ><TR ><TD CLASS="section2" ><A NAME="3" ><A NAME="3" >Xinerama support </A ></A ></TD ></TR ><TR ><TD CLASS="s15" ></TD ></TR ><TR ><TD CLASS="doc" >Xinerama in X11 lets us view multiple virtual workspaces simultaneously. While only one will ever be in focus (i.e. will receive keyboard events), other workspaces may be passively viewable. We thus need to track which virtual workspaces are associated (viewed) on which physical screens. To keep track of this, <TT ><A HREF="XMonad-StackSet.html#t%3AStackSet" >StackSet</A ></TT > keeps separate lists of visible but non-focused workspaces, and non-visible workspaces. </TD ></TR ><TR ><TD CLASS="s15" ></TD ></TR ><TR ><TD CLASS="section2" ><A NAME="4" ><A NAME="4" >Master and Focus </A ></A ></TD ></TR ><TR ><TD CLASS="s15" ></TD ></TR ><TR ><TD CLASS="doc" >Each stack tracks a focused item, and for tiling purposes also tracks a master position. The connection between master and <TT ><A HREF="XMonad-StackSet.html#v%3Afocus" >focus</A ></TT > needs to be well defined, particularly in relation to insert and <TT ><A HREF="XMonad-StackSet.html#v%3Adelete" >delete</A ></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:StackSet" ><A NAME="t%3AStackSet" ></A ></A ><B >StackSet</B > i l a sid sd </TD ><TD CLASS="declbut" ><A HREF="src/XMonad-StackSet.html#StackSet" >Source</A ></TD ></TR ></TABLE ></TD ></TR ><TR ><TD CLASS="body" ><TABLE CLASS="vanilla" CELLSPACING="0" CELLPADDING="0" ><TR ><TD CLASS="ndoc" ><P >A cursor into a non-empty list of workspaces. </P ><P >We puncture the workspace list, producing a hole in the structure used to track the currently focused workspace. The two other lists that are produced are used to track those workspaces visible as Xinerama screens, and those workspaces not visible anywhere. </P ></TD ></TR ><TR ><TD CLASS="section4" >Constructors</TD ></TR ><TR ><TD CLASS="body" ><TABLE CLASS="vanilla" CELLSPACING="5" CELLPADDING="0" ><TR ><TD CLASS="arg" ><A NAME="v:StackSet" ><A NAME="v%3AStackSet" ></A ></A ><B >StackSet</B ></TD ><TD CLASS="rdoc" ></TD ></TR ><TR ><TD CLASS="body" COLSPAN="2" ><TABLE CLASS="vanilla" CELLSPACING="1" CELLPADDING="0" ><TR ><TD CLASS="arg" ><A NAME="v:current" ><A NAME="v%3Acurrent" ></A ></A ><B >current</B > :: !(<A HREF="XMonad-StackSet.html#t%3AScreen" >Screen</A > i l a sid sd)</TD ><TD CLASS="rdoc" >currently focused workspace </TD ></TR ><TR ><TD CLASS="arg" ><A NAME="v:visible" ><A NAME="v%3Avisible" ></A ></A ><B >visible</B > :: [<A HREF="XMonad-StackSet.html#t%3AScreen" >Screen</A > i l a sid sd]</TD ><TD CLASS="rdoc" >non-focused workspaces, visible in xinerama </TD ></TR ><TR ><TD CLASS="arg" ><A NAME="v:hidden" ><A NAME="v%3Ahidden" ></A ></A ><B >hidden</B > :: [<A HREF="XMonad-StackSet.html#t%3AWorkspace" >Workspace</A > i l a]</TD ><TD CLASS="rdoc" >workspaces not visible anywhere </TD ></TR ><TR ><TD CLASS="arg" ><A NAME="v:floating" ><A NAME="v%3Afloating" ></A ></A ><B >floating</B > :: <A HREF="/usr/share/doc/ghc/html/libraries/containers-0.3.0.0/Data-Map.html#t%3AMap" >Map</A > a <A HREF="XMonad-StackSet.html#t%3ARationalRect" >RationalRect</A ></TD ><TD CLASS="rdoc" >floating windows </TD ></TR ></TABLE ></TD ></TR ></TABLE ></TD ></TR ><TR ><TD CLASS="section4" ><IMG SRC="minus.gif" CLASS="coll" ONCLICK="toggle(this,'i:StackSet')" ALT="show/hide" > Instances</TD ></TR ><TR ><TD CLASS="body" ><DIV ID="i:StackSet" 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-Eq.html#t%3AEq" >Eq</A > i, <A HREF="/usr/share/doc/ghc/html/libraries/base-4.2.0.2/Data-Eq.html#t%3AEq" >Eq</A > l, <A HREF="/usr/share/doc/ghc/html/libraries/base-4.2.0.2/Data-Eq.html#t%3AEq" >Eq</A > a, <A HREF="/usr/share/doc/ghc/html/libraries/base-4.2.0.2/Data-Eq.html#t%3AEq" >Eq</A > sid, <A HREF="/usr/share/doc/ghc/html/libraries/base-4.2.0.2/Data-Eq.html#t%3AEq" >Eq</A > sd) => <A HREF="/usr/share/doc/ghc/html/libraries/base-4.2.0.2/Data-Eq.html#t%3AEq" >Eq</A > (<A HREF="XMonad-StackSet.html#t%3AStackSet" >StackSet</A > i l a sid sd)</TD ></TR ><TR ><TD CLASS="decl" >(<A HREF="/usr/share/doc/ghc/html/libraries/base-4.2.0.2/Data-Ord.html#t%3AOrd" >Ord</A > a, <A HREF="/usr/share/doc/ghc/html/libraries/base-4.2.0.2/Text-Read.html#t%3ARead" >Read</A > i, <A HREF="/usr/share/doc/ghc/html/libraries/base-4.2.0.2/Text-Read.html#t%3ARead" >Read</A > l, <A HREF="/usr/share/doc/ghc/html/libraries/base-4.2.0.2/Text-Read.html#t%3ARead" >Read</A > a, <A HREF="/usr/share/doc/ghc/html/libraries/base-4.2.0.2/Text-Read.html#t%3ARead" >Read</A > sid, <A HREF="/usr/share/doc/ghc/html/libraries/base-4.2.0.2/Text-Read.html#t%3ARead" >Read</A > sd) => <A HREF="/usr/share/doc/ghc/html/libraries/base-4.2.0.2/Text-Read.html#t%3ARead" >Read</A > (<A HREF="XMonad-StackSet.html#t%3AStackSet" >StackSet</A > i l a sid sd)</TD ></TR ><TR ><TD CLASS="decl" >(<A HREF="/usr/share/doc/ghc/html/libraries/base-4.2.0.2/Text-Show.html#t%3AShow" >Show</A > i, <A HREF="/usr/share/doc/ghc/html/libraries/base-4.2.0.2/Text-Show.html#t%3AShow" >Show</A > l, <A HREF="/usr/share/doc/ghc/html/libraries/base-4.2.0.2/Text-Show.html#t%3AShow" >Show</A > a, <A HREF="/usr/share/doc/ghc/html/libraries/base-4.2.0.2/Text-Show.html#t%3AShow" >Show</A > sid, <A HREF="/usr/share/doc/ghc/html/libraries/base-4.2.0.2/Text-Show.html#t%3AShow" >Show</A > sd) => <A HREF="/usr/share/doc/ghc/html/libraries/base-4.2.0.2/Text-Show.html#t%3AShow" >Show</A > (<A HREF="XMonad-StackSet.html#t%3AStackSet" >StackSet</A > i l a sid sd)</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:Workspace" ><A NAME="t%3AWorkspace" ></A ></A ><B >Workspace</B > i l a </TD ><TD CLASS="declbut" ><A HREF="src/XMonad-StackSet.html#Workspace" >Source</A ></TD ></TR ></TABLE ></TD ></TR ><TR ><TD CLASS="body" ><TABLE CLASS="vanilla" CELLSPACING="0" CELLPADDING="0" ><TR ><TD CLASS="ndoc" >A workspace is just a tag, a layout, and a stack. </TD ></TR ><TR ><TD CLASS="section4" >Constructors</TD ></TR ><TR ><TD CLASS="body" ><TABLE CLASS="vanilla" CELLSPACING="5" CELLPADDING="0" ><TR ><TD CLASS="arg" ><A NAME="v:Workspace" ><A NAME="v%3AWorkspace" ></A ></A ><B >Workspace</B ></TD ><TD CLASS="rdoc" ></TD ></TR ><TR ><TD CLASS="body" COLSPAN="2" ><TABLE CLASS="vanilla" CELLSPACING="1" CELLPADDING="0" ><TR ><TD CLASS="arg" ><A NAME="v:tag" ><A NAME="v%3Atag" ></A ></A ><B >tag</B > :: !i</TD ><TD CLASS="rdoc" ></TD ></TR ><TR ><TD CLASS="arg" ><A NAME="v:layout" ><A NAME="v%3Alayout" ></A ></A ><B >layout</B > :: l</TD ><TD CLASS="rdoc" ></TD ></TR ><TR ><TD CLASS="arg" ><A NAME="v:stack" ><A NAME="v%3Astack" ></A ></A ><B >stack</B > :: <A HREF="/usr/share/doc/ghc/html/libraries/base-4.2.0.2/Data-Maybe.html#t%3AMaybe" >Maybe</A > (<A HREF="XMonad-StackSet.html#t%3AStack" >Stack</A > a)</TD ><TD CLASS="rdoc" ></TD ></TR ></TABLE ></TD ></TR ></TABLE ></TD ></TR ><TR ><TD CLASS="section4" ><IMG SRC="minus.gif" CLASS="coll" ONCLICK="toggle(this,'i:Workspace')" ALT="show/hide" > Instances</TD ></TR ><TR ><TD CLASS="body" ><DIV ID="i:Workspace" 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-Eq.html#t%3AEq" >Eq</A > i, <A HREF="/usr/share/doc/ghc/html/libraries/base-4.2.0.2/Data-Eq.html#t%3AEq" >Eq</A > l, <A HREF="/usr/share/doc/ghc/html/libraries/base-4.2.0.2/Data-Eq.html#t%3AEq" >Eq</A > a) => <A HREF="/usr/share/doc/ghc/html/libraries/base-4.2.0.2/Data-Eq.html#t%3AEq" >Eq</A > (<A HREF="XMonad-StackSet.html#t%3AWorkspace" >Workspace</A > i l a)</TD ></TR ><TR ><TD CLASS="decl" >(<A HREF="/usr/share/doc/ghc/html/libraries/base-4.2.0.2/Text-Read.html#t%3ARead" >Read</A > i, <A HREF="/usr/share/doc/ghc/html/libraries/base-4.2.0.2/Text-Read.html#t%3ARead" >Read</A > l, <A HREF="/usr/share/doc/ghc/html/libraries/base-4.2.0.2/Text-Read.html#t%3ARead" >Read</A > a) => <A HREF="/usr/share/doc/ghc/html/libraries/base-4.2.0.2/Text-Read.html#t%3ARead" >Read</A > (<A HREF="XMonad-StackSet.html#t%3AWorkspace" >Workspace</A > i l a)</TD ></TR ><TR ><TD CLASS="decl" >(<A HREF="/usr/share/doc/ghc/html/libraries/base-4.2.0.2/Text-Show.html#t%3AShow" >Show</A > i, <A HREF="/usr/share/doc/ghc/html/libraries/base-4.2.0.2/Text-Show.html#t%3AShow" >Show</A > l, <A HREF="/usr/share/doc/ghc/html/libraries/base-4.2.0.2/Text-Show.html#t%3AShow" >Show</A > a) => <A HREF="/usr/share/doc/ghc/html/libraries/base-4.2.0.2/Text-Show.html#t%3AShow" >Show</A > (<A HREF="XMonad-StackSet.html#t%3AWorkspace" >Workspace</A > i l 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:Screen" ><A NAME="t%3AScreen" ></A ></A ><B >Screen</B > i l a sid sd </TD ><TD CLASS="declbut" ><A HREF="src/XMonad-StackSet.html#Screen" >Source</A ></TD ></TR ></TABLE ></TD ></TR ><TR ><TD CLASS="body" ><TABLE CLASS="vanilla" CELLSPACING="0" CELLPADDING="0" ><TR ><TD CLASS="ndoc" >Visible workspaces, and their Xinerama screens. </TD ></TR ><TR ><TD CLASS="section4" >Constructors</TD ></TR ><TR ><TD CLASS="body" ><TABLE CLASS="vanilla" CELLSPACING="5" CELLPADDING="0" ><TR ><TD CLASS="arg" ><A NAME="v:Screen" ><A NAME="v%3AScreen" ></A ></A ><B >Screen</B ></TD ><TD CLASS="rdoc" ></TD ></TR ><TR ><TD CLASS="body" COLSPAN="2" ><TABLE CLASS="vanilla" CELLSPACING="1" CELLPADDING="0" ><TR ><TD CLASS="arg" ><A NAME="v:workspace" ><A NAME="v%3Aworkspace" ></A ></A ><B >workspace</B > :: !(<A HREF="XMonad-StackSet.html#t%3AWorkspace" >Workspace</A > i l a)</TD ><TD CLASS="rdoc" ></TD ></TR ><TR ><TD CLASS="arg" ><A NAME="v:screen" ><A NAME="v%3Ascreen" ></A ></A ><B >screen</B > :: !sid</TD ><TD CLASS="rdoc" ></TD ></TR ><TR ><TD CLASS="arg" ><A NAME="v:screenDetail" ><A NAME="v%3AscreenDetail" ></A ></A ><B >screenDetail</B > :: !sd</TD ><TD CLASS="rdoc" ></TD ></TR ></TABLE ></TD ></TR ></TABLE ></TD ></TR ><TR ><TD CLASS="section4" ><IMG SRC="minus.gif" CLASS="coll" ONCLICK="toggle(this,'i:Screen')" ALT="show/hide" > Instances</TD ></TR ><TR ><TD CLASS="body" ><DIV ID="i:Screen" 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-Eq.html#t%3AEq" >Eq</A > i, <A HREF="/usr/share/doc/ghc/html/libraries/base-4.2.0.2/Data-Eq.html#t%3AEq" >Eq</A > l, <A HREF="/usr/share/doc/ghc/html/libraries/base-4.2.0.2/Data-Eq.html#t%3AEq" >Eq</A > a, <A HREF="/usr/share/doc/ghc/html/libraries/base-4.2.0.2/Data-Eq.html#t%3AEq" >Eq</A > sid, <A HREF="/usr/share/doc/ghc/html/libraries/base-4.2.0.2/Data-Eq.html#t%3AEq" >Eq</A > sd) => <A HREF="/usr/share/doc/ghc/html/libraries/base-4.2.0.2/Data-Eq.html#t%3AEq" >Eq</A > (<A HREF="XMonad-StackSet.html#t%3AScreen" >Screen</A > i l a sid sd)</TD ></TR ><TR ><TD CLASS="decl" >(<A HREF="/usr/share/doc/ghc/html/libraries/base-4.2.0.2/Text-Read.html#t%3ARead" >Read</A > i, <A HREF="/usr/share/doc/ghc/html/libraries/base-4.2.0.2/Text-Read.html#t%3ARead" >Read</A > l, <A HREF="/usr/share/doc/ghc/html/libraries/base-4.2.0.2/Text-Read.html#t%3ARead" >Read</A > a, <A HREF="/usr/share/doc/ghc/html/libraries/base-4.2.0.2/Text-Read.html#t%3ARead" >Read</A > sid, <A HREF="/usr/share/doc/ghc/html/libraries/base-4.2.0.2/Text-Read.html#t%3ARead" >Read</A > sd) => <A HREF="/usr/share/doc/ghc/html/libraries/base-4.2.0.2/Text-Read.html#t%3ARead" >Read</A > (<A HREF="XMonad-StackSet.html#t%3AScreen" >Screen</A > i l a sid sd)</TD ></TR ><TR ><TD CLASS="decl" >(<A HREF="/usr/share/doc/ghc/html/libraries/base-4.2.0.2/Text-Show.html#t%3AShow" >Show</A > i, <A HREF="/usr/share/doc/ghc/html/libraries/base-4.2.0.2/Text-Show.html#t%3AShow" >Show</A > l, <A HREF="/usr/share/doc/ghc/html/libraries/base-4.2.0.2/Text-Show.html#t%3AShow" >Show</A > a, <A HREF="/usr/share/doc/ghc/html/libraries/base-4.2.0.2/Text-Show.html#t%3AShow" >Show</A > sid, <A HREF="/usr/share/doc/ghc/html/libraries/base-4.2.0.2/Text-Show.html#t%3AShow" >Show</A > sd) => <A HREF="/usr/share/doc/ghc/html/libraries/base-4.2.0.2/Text-Show.html#t%3AShow" >Show</A > (<A HREF="XMonad-StackSet.html#t%3AScreen" >Screen</A > i l a sid sd)</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:Stack" ><A NAME="t%3AStack" ></A ></A ><B >Stack</B > a </TD ><TD CLASS="declbut" ><A HREF="src/XMonad-StackSet.html#Stack" >Source</A ></TD ></TR ></TABLE ></TD ></TR ><TR ><TD CLASS="body" ><TABLE CLASS="vanilla" CELLSPACING="0" CELLPADDING="0" ><TR ><TD CLASS="ndoc" ><P >A stack is a cursor onto a (possibly empty) window list. The data structure tracks focus by construction, and the master window is by convention the top-most item. Focus operations will not reorder the list that results from flattening the cursor. The structure can be envisaged as: </P ><PRE > +-- master: < '7' > up | [ '2' ] +--------- [ '3' ] focus: < '4' > dn +----------- [ '8' ] </PRE ><P >A <TT ><A HREF="XMonad-StackSet.html#t%3AStack" >Stack</A ></TT > can be viewed as a list with a hole punched in it to make the focused position. Under the zipper/calculus view of such structures, it is the differentiation of a [a], and integrating it back has a natural implementation used in <TT ><A HREF="XMonad-StackSet.html#v%3Aindex" >index</A ></TT >. </P ></TD ></TR ><TR ><TD CLASS="section4" >Constructors</TD ></TR ><TR ><TD CLASS="body" ><TABLE CLASS="vanilla" CELLSPACING="5" CELLPADDING="0" ><TR ><TD CLASS="arg" ><A NAME="v:Stack" ><A NAME="v%3AStack" ></A ></A ><B >Stack</B ></TD ><TD CLASS="rdoc" ></TD ></TR ><TR ><TD CLASS="body" COLSPAN="2" ><TABLE CLASS="vanilla" CELLSPACING="1" CELLPADDING="0" ><TR ><TD CLASS="arg" ><A NAME="v:focus" ><A NAME="v%3Afocus" ></A ></A ><B >focus</B > :: !a</TD ><TD CLASS="rdoc" ></TD ></TR ><TR ><TD CLASS="arg" ><A NAME="v:up" ><A NAME="v%3Aup" ></A ></A ><B >up</B > :: [a]</TD ><TD CLASS="rdoc" ></TD ></TR ><TR ><TD CLASS="arg" ><A NAME="v:down" ><A NAME="v%3Adown" ></A ></A ><B >down</B > :: [a]</TD ><TD CLASS="rdoc" ></TD ></TR ></TABLE ></TD ></TR ></TABLE ></TD ></TR ><TR ><TD CLASS="section4" ><IMG SRC="minus.gif" CLASS="coll" ONCLICK="toggle(this,'i:Stack')" ALT="show/hide" > Instances</TD ></TR ><TR ><TD CLASS="body" ><DIV ID="i:Stack" 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-Eq.html#t%3AEq" >Eq</A > a => <A HREF="/usr/share/doc/ghc/html/libraries/base-4.2.0.2/Data-Eq.html#t%3AEq" >Eq</A > (<A HREF="XMonad-StackSet.html#t%3AStack" >Stack</A > a)</TD ></TR ><TR ><TD CLASS="decl" ><A HREF="/usr/share/doc/ghc/html/libraries/base-4.2.0.2/Text-Read.html#t%3ARead" >Read</A > a => <A HREF="/usr/share/doc/ghc/html/libraries/base-4.2.0.2/Text-Read.html#t%3ARead" >Read</A > (<A HREF="XMonad-StackSet.html#t%3AStack" >Stack</A > a)</TD ></TR ><TR ><TD CLASS="decl" ><A HREF="/usr/share/doc/ghc/html/libraries/base-4.2.0.2/Text-Show.html#t%3AShow" >Show</A > a => <A HREF="/usr/share/doc/ghc/html/libraries/base-4.2.0.2/Text-Show.html#t%3AShow" >Show</A > (<A HREF="XMonad-StackSet.html#t%3AStack" >Stack</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:RationalRect" ><A NAME="t%3ARationalRect" ></A ></A ><B >RationalRect</B > </TD ><TD CLASS="declbut" ><A HREF="src/XMonad-StackSet.html#RationalRect" >Source</A ></TD ></TR ></TABLE ></TD ></TR ><TR ><TD CLASS="body" ><TABLE CLASS="vanilla" CELLSPACING="0" CELLPADDING="0" ><TR ><TD CLASS="ndoc" >A structure for window geometries </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:RationalRect" ><A NAME="v%3ARationalRect" ></A ></A ><B >RationalRect</B > <A HREF="/usr/share/doc/ghc/html/libraries/base-4.2.0.2/Prelude.html#t%3ARational" >Rational</A > <A HREF="/usr/share/doc/ghc/html/libraries/base-4.2.0.2/Prelude.html#t%3ARational" >Rational</A > <A HREF="/usr/share/doc/ghc/html/libraries/base-4.2.0.2/Prelude.html#t%3ARational" >Rational</A > <A HREF="/usr/share/doc/ghc/html/libraries/base-4.2.0.2/Prelude.html#t%3ARational" >Rational</A ></TD ><TD CLASS="rdoc" ></TD ></TR ></TABLE ></TD ></TR ><TR ><TD CLASS="section4" ><IMG SRC="minus.gif" CLASS="coll" ONCLICK="toggle(this,'i:RationalRect')" ALT="show/hide" > Instances</TD ></TR ><TR ><TD CLASS="body" ><DIV ID="i:RationalRect" 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-Eq.html#t%3AEq" >Eq</A > <A HREF="XMonad-StackSet.html#t%3ARationalRect" >RationalRect</A ></TD ></TR ><TR ><TD CLASS="decl" ><A HREF="/usr/share/doc/ghc/html/libraries/base-4.2.0.2/Text-Read.html#t%3ARead" >Read</A > <A HREF="XMonad-StackSet.html#t%3ARationalRect" >RationalRect</A ></TD ></TR ><TR ><TD CLASS="decl" ><A HREF="/usr/share/doc/ghc/html/libraries/base-4.2.0.2/Text-Show.html#t%3AShow" >Show</A > <A HREF="XMonad-StackSet.html#t%3ARationalRect" >RationalRect</A ></TD ></TR ></TABLE ></DIV ></TD ></TR ></TABLE ></TD ></TR ><TR ><TD CLASS="s15" ></TD ></TR ><TR ><TD CLASS="section1" ><A NAME="5" ><A NAME="5" >Construction </A ></A ></TD ></TR ><TR ><TD CLASS="s15" ></TD ></TR ><TR ><TD CLASS="doc" ></TD ></TR ><TR ><TD CLASS="s15" ></TD ></TR ><TR ><TD CLASS="topdecl" ><TABLE CLASS="declbar" ><TR ><TD CLASS="declname" ><A NAME="v:new" ><A NAME="v%3Anew" ></A ></A ><B >new</B > :: <A HREF="/usr/share/doc/ghc/html/libraries/base-4.2.0.2/Prelude.html#t%3AIntegral" >Integral</A > s => l -> [i] -> [sd] -> <A HREF="XMonad-StackSet.html#t%3AStackSet" >StackSet</A > i l a s sd</TD ><TD CLASS="declbut" ><A HREF="src/XMonad-StackSet.html#new" >Source</A ></TD ></TR ></TABLE ></TD ></TR ><TR ><TD CLASS="doc" ><P ><EM >O(n)</EM >. Create a new stackset, of empty stacks, with given tags, with physical screens whose descriptions are given by m. The number of physical screens (<TT >length m</TT >) should be less than or equal to the number of workspace tags. The first workspace in the list will be current. </P ><P >Xinerama: Virtual workspaces are assigned to physical screens, starting at 0. </P ></TD ></TR ><TR ><TD CLASS="s15" ></TD ></TR ><TR ><TD CLASS="topdecl" ><TABLE CLASS="declbar" ><TR ><TD CLASS="declname" ><A NAME="v:view" ><A NAME="v%3Aview" ></A ></A ><B >view</B > :: (<A HREF="/usr/share/doc/ghc/html/libraries/base-4.2.0.2/Data-Eq.html#t%3AEq" >Eq</A > s, <A HREF="/usr/share/doc/ghc/html/libraries/base-4.2.0.2/Data-Eq.html#t%3AEq" >Eq</A > i) => i -> <A HREF="XMonad-StackSet.html#t%3AStackSet" >StackSet</A > i l a s sd -> <A HREF="XMonad-StackSet.html#t%3AStackSet" >StackSet</A > i l a s sd</TD ><TD CLASS="declbut" ><A HREF="src/XMonad-StackSet.html#view" >Source</A ></TD ></TR ></TABLE ></TD ></TR ><TR ><TD CLASS="doc" ><P ><EM >O(w)</EM >. Set focus to the workspace with index 'i'. If the index is out of range, return the original <TT ><A HREF="XMonad-StackSet.html#t%3AStackSet" >StackSet</A ></TT >. </P ><P >Xinerama: If the workspace is not visible on any Xinerama screen, it becomes the current screen. If it is in the visible list, it becomes current. </P ></TD ></TR ><TR ><TD CLASS="s15" ></TD ></TR ><TR ><TD CLASS="topdecl" ><TABLE CLASS="declbar" ><TR ><TD CLASS="declname" ><A NAME="v:greedyView" ><A NAME="v%3AgreedyView" ></A ></A ><B >greedyView</B > :: (<A HREF="/usr/share/doc/ghc/html/libraries/base-4.2.0.2/Data-Eq.html#t%3AEq" >Eq</A > s, <A HREF="/usr/share/doc/ghc/html/libraries/base-4.2.0.2/Data-Eq.html#t%3AEq" >Eq</A > i) => i -> <A HREF="XMonad-StackSet.html#t%3AStackSet" >StackSet</A > i l a s sd -> <A HREF="XMonad-StackSet.html#t%3AStackSet" >StackSet</A > i l a s sd</TD ><TD CLASS="declbut" ><A HREF="src/XMonad-StackSet.html#greedyView" >Source</A ></TD ></TR ></TABLE ></TD ></TR ><TR ><TD CLASS="doc" >Set focus to the given workspace. If that workspace does not exist in the stackset, the original workspace is returned. If that workspace is <TT ><A HREF="XMonad-StackSet.html#v%3Ahidden" >hidden</A ></TT >, then display that workspace on the current screen, and move the current workspace to <TT ><A HREF="XMonad-StackSet.html#v%3Ahidden" >hidden</A ></TT >. If that workspace is <TT ><A HREF="XMonad-StackSet.html#v%3Avisible" >visible</A ></TT > on another screen, the workspaces of the current screen and the other screen are swapped. </TD ></TR ><TR ><TD CLASS="s15" ></TD ></TR ><TR ><TD CLASS="section1" ><A NAME="6" ><A NAME="6" >Xinerama operations </A ></A ></TD ></TR ><TR ><TD CLASS="s15" ></TD ></TR ><TR ><TD CLASS="doc" >Xinerama in X11 lets us view multiple virtual workspaces simultaneously. While only one will ever be in focus (i.e. will receive keyboard events), other workspaces may be passively viewable. We thus need to track which virtual workspaces are associated (viewed) on which physical screens. To keep track of this, <TT ><A HREF="XMonad-StackSet.html#t%3AStackSet" >StackSet</A ></TT > keeps separate lists of visible but non-focused workspaces, and non-visible workspaces. </TD ></TR ><TR ><TD CLASS="s15" ></TD ></TR ><TR ><TD CLASS="topdecl" ><TABLE CLASS="declbar" ><TR ><TD CLASS="declname" ><A NAME="v:lookupWorkspace" ><A NAME="v%3AlookupWorkspace" ></A ></A ><B >lookupWorkspace</B > :: <A HREF="/usr/share/doc/ghc/html/libraries/base-4.2.0.2/Data-Eq.html#t%3AEq" >Eq</A > s => s -> <A HREF="XMonad-StackSet.html#t%3AStackSet" >StackSet</A > i l a s sd -> <A HREF="/usr/share/doc/ghc/html/libraries/base-4.2.0.2/Data-Maybe.html#t%3AMaybe" >Maybe</A > i</TD ><TD CLASS="declbut" ><A HREF="src/XMonad-StackSet.html#lookupWorkspace" >Source</A ></TD ></TR ></TABLE ></TD ></TR ><TR ><TD CLASS="doc" >Find the tag of the workspace visible on Xinerama screen sc. <TT ><A HREF="/usr/share/doc/ghc/html/libraries/base-4.2.0.2/Data-Maybe.html#v%3ANothing" >Nothing</A ></TT > if screen is out of bounds. </TD ></TR ><TR ><TD CLASS="s15" ></TD ></TR ><TR ><TD CLASS="topdecl" ><TABLE CLASS="declbar" ><TR ><TD CLASS="declname" ><A NAME="v:screens" ><A NAME="v%3Ascreens" ></A ></A ><B >screens</B > :: <A HREF="XMonad-StackSet.html#t%3AStackSet" >StackSet</A > i l a s sd -> [<A HREF="XMonad-StackSet.html#t%3AScreen" >Screen</A > i l a s sd]</TD ><TD CLASS="declbut" ><A HREF="src/XMonad-StackSet.html#screens" >Source</A ></TD ></TR ></TABLE ></TD ></TR ><TR ><TD CLASS="doc" >Get a list of all screens in the <TT ><A HREF="XMonad-StackSet.html#t%3AStackSet" >StackSet</A ></TT >. </TD ></TR ><TR ><TD CLASS="s15" ></TD ></TR ><TR ><TD CLASS="topdecl" ><TABLE CLASS="declbar" ><TR ><TD CLASS="declname" ><A NAME="v:workspaces" ><A NAME="v%3Aworkspaces" ></A ></A ><B >workspaces</B > :: <A HREF="XMonad-StackSet.html#t%3AStackSet" >StackSet</A > i l a s sd -> [<A HREF="XMonad-StackSet.html#t%3AWorkspace" >Workspace</A > i l a]</TD ><TD CLASS="declbut" ><A HREF="src/XMonad-StackSet.html#workspaces" >Source</A ></TD ></TR ></TABLE ></TD ></TR ><TR ><TD CLASS="doc" >Get a list of all workspaces in the <TT ><A HREF="XMonad-StackSet.html#t%3AStackSet" >StackSet</A ></TT >. </TD ></TR ><TR ><TD CLASS="s15" ></TD ></TR ><TR ><TD CLASS="topdecl" ><TABLE CLASS="declbar" ><TR ><TD CLASS="declname" ><A NAME="v:allWindows" ><A NAME="v%3AallWindows" ></A ></A ><B >allWindows</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-StackSet.html#t%3AStackSet" >StackSet</A > i l a s sd -> [a]</TD ><TD CLASS="declbut" ><A HREF="src/XMonad-StackSet.html#allWindows" >Source</A ></TD ></TR ></TABLE ></TD ></TR ><TR ><TD CLASS="doc" >Get a list of all windows in the <TT ><A HREF="XMonad-StackSet.html#t%3AStackSet" >StackSet</A ></TT > in no particular order </TD ></TR ><TR ><TD CLASS="s15" ></TD ></TR ><TR ><TD CLASS="topdecl" ><TABLE CLASS="declbar" ><TR ><TD CLASS="declname" ><A NAME="v:currentTag" ><A NAME="v%3AcurrentTag" ></A ></A ><B >currentTag</B > :: <A HREF="XMonad-StackSet.html#t%3AStackSet" >StackSet</A > i l a s sd -> i</TD ><TD CLASS="declbut" ><A HREF="src/XMonad-StackSet.html#currentTag" >Source</A ></TD ></TR ></TABLE ></TD ></TR ><TR ><TD CLASS="doc" >Get the tag of the currently focused workspace. </TD ></TR ><TR ><TD CLASS="s15" ></TD ></TR ><TR ><TD CLASS="section1" ><A NAME="7" ><A NAME="7" >Operations on the current stack </A ></A ></TD ></TR ><TR ><TD CLASS="s15" ></TD ></TR ><TR ><TD CLASS="doc" ></TD ></TR ><TR ><TD CLASS="s15" ></TD ></TR ><TR ><TD CLASS="topdecl" ><TABLE CLASS="declbar" ><TR ><TD CLASS="declname" ><A NAME="v:peek" ><A NAME="v%3Apeek" ></A ></A ><B >peek</B > :: <A HREF="XMonad-StackSet.html#t%3AStackSet" >StackSet</A > i l a s sd -> <A HREF="/usr/share/doc/ghc/html/libraries/base-4.2.0.2/Data-Maybe.html#t%3AMaybe" >Maybe</A > a</TD ><TD CLASS="declbut" ><A HREF="src/XMonad-StackSet.html#peek" >Source</A ></TD ></TR ></TABLE ></TD ></TR ><TR ><TD CLASS="doc" ><EM >O(1)</EM >. Extract the focused element of the current stack. Return <TT ><A HREF="/usr/share/doc/ghc/html/libraries/base-4.2.0.2/Data-Maybe.html#v%3AJust" >Just</A ></TT > that element, or <TT ><A HREF="/usr/share/doc/ghc/html/libraries/base-4.2.0.2/Data-Maybe.html#v%3ANothing" >Nothing</A ></TT > for an empty stack. </TD ></TR ><TR ><TD CLASS="s15" ></TD ></TR ><TR ><TD CLASS="topdecl" ><TABLE CLASS="declbar" ><TR ><TD CLASS="declname" ><A NAME="v:index" ><A NAME="v%3Aindex" ></A ></A ><B >index</B > :: <A HREF="XMonad-StackSet.html#t%3AStackSet" >StackSet</A > i l a s sd -> [a]</TD ><TD CLASS="declbut" ><A HREF="src/XMonad-StackSet.html#index" >Source</A ></TD ></TR ></TABLE ></TD ></TR ><TR ><TD CLASS="doc" ><EM >O(s)</EM >. Extract the stack on the current workspace, as a list. The order of the stack is determined by the master window -- it will be the head of the list. The implementation is given by the natural integration of a one-hole list cursor, back to a list. </TD ></TR ><TR ><TD CLASS="s15" ></TD ></TR ><TR ><TD CLASS="topdecl" ><TABLE CLASS="declbar" ><TR ><TD CLASS="declname" ><A NAME="v:integrate" ><A NAME="v%3Aintegrate" ></A ></A ><B >integrate</B > :: <A HREF="XMonad-StackSet.html#t%3AStack" >Stack</A > a -> [a]</TD ><TD CLASS="declbut" ><A HREF="src/XMonad-StackSet.html#integrate" >Source</A ></TD ></TR ></TABLE ></TD ></TR ><TR ><TD CLASS="doc" ><EM >O(n)</EM >. Flatten a <TT ><A HREF="XMonad-StackSet.html#t%3AStack" >Stack</A ></TT > into a list. </TD ></TR ><TR ><TD CLASS="s15" ></TD ></TR ><TR ><TD CLASS="topdecl" ><TABLE CLASS="declbar" ><TR ><TD CLASS="declname" ><A NAME="v:integrate'" ><A NAME="v%3Aintegrate%27" ></A ></A ><B >integrate'</B > :: <A HREF="/usr/share/doc/ghc/html/libraries/base-4.2.0.2/Data-Maybe.html#t%3AMaybe" >Maybe</A > (<A HREF="XMonad-StackSet.html#t%3AStack" >Stack</A > a) -> [a]</TD ><TD CLASS="declbut" ><A HREF="src/XMonad-StackSet.html#integrate%27" >Source</A ></TD ></TR ></TABLE ></TD ></TR ><TR ><TD CLASS="doc" ><EM >O(n)</EM > Flatten a possibly empty stack into a list. </TD ></TR ><TR ><TD CLASS="s15" ></TD ></TR ><TR ><TD CLASS="topdecl" ><TABLE CLASS="declbar" ><TR ><TD CLASS="declname" ><A NAME="v:differentiate" ><A NAME="v%3Adifferentiate" ></A ></A ><B >differentiate</B > :: [a] -> <A HREF="/usr/share/doc/ghc/html/libraries/base-4.2.0.2/Data-Maybe.html#t%3AMaybe" >Maybe</A > (<A HREF="XMonad-StackSet.html#t%3AStack" >Stack</A > a)</TD ><TD CLASS="declbut" ><A HREF="src/XMonad-StackSet.html#differentiate" >Source</A ></TD ></TR ></TABLE ></TD ></TR ><TR ><TD CLASS="doc" ><EM >O(n)</EM >. Turn a list into a possibly empty stack (i.e., a zipper): the first element of the list is current, and the rest of the list is down. </TD ></TR ><TR ><TD CLASS="s15" ></TD ></TR ><TR ><TD CLASS="topdecl" ><TABLE CLASS="declbar" ><TR ><TD CLASS="declname" ><A NAME="v:focusUp" ><A NAME="v%3AfocusUp" ></A ></A ><B >focusUp</B > :: <A HREF="XMonad-StackSet.html#t%3AStackSet" >StackSet</A > i l a s sd -> <A HREF="XMonad-StackSet.html#t%3AStackSet" >StackSet</A > i l a s sd</TD ><TD CLASS="declbut" ><A HREF="src/XMonad-StackSet.html#focusUp" >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:focusDown" ><A NAME="v%3AfocusDown" ></A ></A ><B >focusDown</B > :: <A HREF="XMonad-StackSet.html#t%3AStackSet" >StackSet</A > i l a s sd -> <A HREF="XMonad-StackSet.html#t%3AStackSet" >StackSet</A > i l a s sd</TD ><TD CLASS="declbut" ><A HREF="src/XMonad-StackSet.html#focusDown" >Source</A ></TD ></TR ></TABLE ></TD ></TR ><TR ><TD CLASS="doc" ><P ><EM >O(1), O(w) on the wrapping case</EM >. </P ><P >focusUp, focusDown. Move the window focus up or down the stack, wrapping if we reach the end. The wrapping should model a <TT ><A HREF="/usr/share/doc/ghc/html/libraries/base-4.2.0.2/Data-List.html#v%3Acycle" >cycle</A ></TT > on the current stack. The master window, and window order, are unaffected by movement of focus. </P ><P >swapUp, swapDown, swap the neighbour in the stack ordering, wrapping if we reach the end. Again the wrapping model should <TT ><A HREF="/usr/share/doc/ghc/html/libraries/base-4.2.0.2/Data-List.html#v%3Acycle" >cycle</A ></TT > on the current stack. </P ></TD ></TR ><TR ><TD CLASS="s15" ></TD ></TR ><TR ><TD CLASS="topdecl" ><TABLE CLASS="declbar" ><TR ><TD CLASS="declname" ><A NAME="v:focusUp'" ><A NAME="v%3AfocusUp%27" ></A ></A ><B >focusUp'</B > :: <A HREF="XMonad-StackSet.html#t%3AStack" >Stack</A > a -> <A HREF="XMonad-StackSet.html#t%3AStack" >Stack</A > a</TD ><TD CLASS="declbut" ><A HREF="src/XMonad-StackSet.html#focusUp%27" >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:focusDown'" ><A NAME="v%3AfocusDown%27" ></A ></A ><B >focusDown'</B > :: <A HREF="XMonad-StackSet.html#t%3AStack" >Stack</A > a -> <A HREF="XMonad-StackSet.html#t%3AStack" >Stack</A > a</TD ><TD CLASS="declbut" ><A HREF="src/XMonad-StackSet.html#focusDown%27" >Source</A ></TD ></TR ></TABLE ></TD ></TR ><TR ><TD CLASS="doc" >Variants of <TT ><A HREF="XMonad-StackSet.html#v%3AfocusUp" >focusUp</A ></TT > and <TT ><A HREF="XMonad-StackSet.html#v%3AfocusDown" >focusDown</A ></TT > that work on a <TT ><A HREF="XMonad-StackSet.html#t%3AStack" >Stack</A ></TT > rather than an entire <TT ><A HREF="XMonad-StackSet.html#t%3AStackSet" >StackSet</A ></TT >. </TD ></TR ><TR ><TD CLASS="s15" ></TD ></TR ><TR ><TD CLASS="topdecl" ><TABLE CLASS="declbar" ><TR ><TD CLASS="declname" ><A NAME="v:focusMaster" ><A NAME="v%3AfocusMaster" ></A ></A ><B >focusMaster</B > :: <A HREF="XMonad-StackSet.html#t%3AStackSet" >StackSet</A > i l a s sd -> <A HREF="XMonad-StackSet.html#t%3AStackSet" >StackSet</A > i l a s sd</TD ><TD CLASS="declbut" ><A HREF="src/XMonad-StackSet.html#focusMaster" >Source</A ></TD ></TR ></TABLE ></TD ></TR ><TR ><TD CLASS="doc" ><EM >O(s)</EM >. Set focus to the master window. </TD ></TR ><TR ><TD CLASS="s15" ></TD ></TR ><TR ><TD CLASS="topdecl" ><TABLE CLASS="declbar" ><TR ><TD CLASS="declname" ><A NAME="v:focusWindow" ><A NAME="v%3AfocusWindow" ></A ></A ><B >focusWindow</B > :: (<A HREF="/usr/share/doc/ghc/html/libraries/base-4.2.0.2/Data-Eq.html#t%3AEq" >Eq</A > s, <A HREF="/usr/share/doc/ghc/html/libraries/base-4.2.0.2/Data-Eq.html#t%3AEq" >Eq</A > a, <A HREF="/usr/share/doc/ghc/html/libraries/base-4.2.0.2/Data-Eq.html#t%3AEq" >Eq</A > i) => a -> <A HREF="XMonad-StackSet.html#t%3AStackSet" >StackSet</A > i l a s sd -> <A HREF="XMonad-StackSet.html#t%3AStackSet" >StackSet</A > i l a s sd</TD ><TD CLASS="declbut" ><A HREF="src/XMonad-StackSet.html#focusWindow" >Source</A ></TD ></TR ></TABLE ></TD ></TR ><TR ><TD CLASS="doc" ><EM >O(1) on current window, O(n) in general</EM >. Focus the window w, and set its workspace as current. </TD ></TR ><TR ><TD CLASS="s15" ></TD ></TR ><TR ><TD CLASS="topdecl" ><TABLE CLASS="declbar" ><TR ><TD CLASS="declname" ><A NAME="v:tagMember" ><A NAME="v%3AtagMember" ></A ></A ><B >tagMember</B > :: <A HREF="/usr/share/doc/ghc/html/libraries/base-4.2.0.2/Data-Eq.html#t%3AEq" >Eq</A > i => i -> <A HREF="XMonad-StackSet.html#t%3AStackSet" >StackSet</A > i l a s sd -> <A HREF="/usr/share/doc/ghc/html/libraries/base-4.2.0.2/Data-Bool.html#t%3ABool" >Bool</A ></TD ><TD CLASS="declbut" ><A HREF="src/XMonad-StackSet.html#tagMember" >Source</A ></TD ></TR ></TABLE ></TD ></TR ><TR ><TD CLASS="doc" >Is the given tag present in the <TT ><A HREF="XMonad-StackSet.html#t%3AStackSet" >StackSet</A ></TT >? </TD ></TR ><TR ><TD CLASS="s15" ></TD ></TR ><TR ><TD CLASS="topdecl" ><TABLE CLASS="declbar" ><TR ><TD CLASS="declname" ><A NAME="v:renameTag" ><A NAME="v%3ArenameTag" ></A ></A ><B >renameTag</B > :: <A HREF="/usr/share/doc/ghc/html/libraries/base-4.2.0.2/Data-Eq.html#t%3AEq" >Eq</A > i => i -> i -> <A HREF="XMonad-StackSet.html#t%3AStackSet" >StackSet</A > i l a s sd -> <A HREF="XMonad-StackSet.html#t%3AStackSet" >StackSet</A > i l a s sd</TD ><TD CLASS="declbut" ><A HREF="src/XMonad-StackSet.html#renameTag" >Source</A ></TD ></TR ></TABLE ></TD ></TR ><TR ><TD CLASS="doc" >Rename a given tag if present in the <TT ><A HREF="XMonad-StackSet.html#t%3AStackSet" >StackSet</A ></TT >. </TD ></TR ><TR ><TD CLASS="s15" ></TD ></TR ><TR ><TD CLASS="topdecl" ><TABLE CLASS="declbar" ><TR ><TD CLASS="declname" ><A NAME="v:ensureTags" ><A NAME="v%3AensureTags" ></A ></A ><B >ensureTags</B > :: <A HREF="/usr/share/doc/ghc/html/libraries/base-4.2.0.2/Data-Eq.html#t%3AEq" >Eq</A > i => l -> [i] -> <A HREF="XMonad-StackSet.html#t%3AStackSet" >StackSet</A > i l a s sd -> <A HREF="XMonad-StackSet.html#t%3AStackSet" >StackSet</A > i l a s sd</TD ><TD CLASS="declbut" ><A HREF="src/XMonad-StackSet.html#ensureTags" >Source</A ></TD ></TR ></TABLE ></TD ></TR ><TR ><TD CLASS="doc" >Ensure that a given set of workspace tags is present by renaming existing workspaces and/or creating new hidden workspaces as necessary. </TD ></TR ><TR ><TD CLASS="s15" ></TD ></TR ><TR ><TD CLASS="topdecl" ><TABLE CLASS="declbar" ><TR ><TD CLASS="declname" ><A NAME="v:member" ><A NAME="v%3Amember" ></A ></A ><B >member</B > :: <A HREF="/usr/share/doc/ghc/html/libraries/base-4.2.0.2/Data-Eq.html#t%3AEq" >Eq</A > a => a -> <A HREF="XMonad-StackSet.html#t%3AStackSet" >StackSet</A > i l a s sd -> <A HREF="/usr/share/doc/ghc/html/libraries/base-4.2.0.2/Data-Bool.html#t%3ABool" >Bool</A ></TD ><TD CLASS="declbut" ><A HREF="src/XMonad-StackSet.html#member" >Source</A ></TD ></TR ></TABLE ></TD ></TR ><TR ><TD CLASS="doc" ><EM >O(n)</EM >. Is a window in the <TT ><A HREF="XMonad-StackSet.html#t%3AStackSet" >StackSet</A ></TT >? </TD ></TR ><TR ><TD CLASS="s15" ></TD ></TR ><TR ><TD CLASS="topdecl" ><TABLE CLASS="declbar" ><TR ><TD CLASS="declname" ><A NAME="v:findTag" ><A NAME="v%3AfindTag" ></A ></A ><B >findTag</B > :: <A HREF="/usr/share/doc/ghc/html/libraries/base-4.2.0.2/Data-Eq.html#t%3AEq" >Eq</A > a => a -> <A HREF="XMonad-StackSet.html#t%3AStackSet" >StackSet</A > i l a s sd -> <A HREF="/usr/share/doc/ghc/html/libraries/base-4.2.0.2/Data-Maybe.html#t%3AMaybe" >Maybe</A > i</TD ><TD CLASS="declbut" ><A HREF="src/XMonad-StackSet.html#findTag" >Source</A ></TD ></TR ></TABLE ></TD ></TR ><TR ><TD CLASS="doc" ><EM >O(1) on current window, O(n) in general</EM >. Return <TT ><A HREF="/usr/share/doc/ghc/html/libraries/base-4.2.0.2/Data-Maybe.html#v%3AJust" >Just</A ></TT > the workspace tag of the given window, or <TT ><A HREF="/usr/share/doc/ghc/html/libraries/base-4.2.0.2/Data-Maybe.html#v%3ANothing" >Nothing</A ></TT > if the window is not in the <TT ><A HREF="XMonad-StackSet.html#t%3AStackSet" >StackSet</A ></TT >. </TD ></TR ><TR ><TD CLASS="s15" ></TD ></TR ><TR ><TD CLASS="topdecl" ><TABLE CLASS="declbar" ><TR ><TD CLASS="declname" ><A NAME="v:mapWorkspace" ><A NAME="v%3AmapWorkspace" ></A ></A ><B >mapWorkspace</B > :: (<A HREF="XMonad-StackSet.html#t%3AWorkspace" >Workspace</A > i l a -> <A HREF="XMonad-StackSet.html#t%3AWorkspace" >Workspace</A > i l a) -> <A HREF="XMonad-StackSet.html#t%3AStackSet" >StackSet</A > i l a s sd -> <A HREF="XMonad-StackSet.html#t%3AStackSet" >StackSet</A > i l a s sd</TD ><TD CLASS="declbut" ><A HREF="src/XMonad-StackSet.html#mapWorkspace" >Source</A ></TD ></TR ></TABLE ></TD ></TR ><TR ><TD CLASS="doc" >Map a function on all the workspaces in the <TT ><A HREF="XMonad-StackSet.html#t%3AStackSet" >StackSet</A ></TT >. </TD ></TR ><TR ><TD CLASS="s15" ></TD ></TR ><TR ><TD CLASS="topdecl" ><TABLE CLASS="declbar" ><TR ><TD CLASS="declname" ><A NAME="v:mapLayout" ><A NAME="v%3AmapLayout" ></A ></A ><B >mapLayout</B > :: (l -> l') -> <A HREF="XMonad-StackSet.html#t%3AStackSet" >StackSet</A > i l a s sd -> <A HREF="XMonad-StackSet.html#t%3AStackSet" >StackSet</A > i l' a s sd</TD ><TD CLASS="declbut" ><A HREF="src/XMonad-StackSet.html#mapLayout" >Source</A ></TD ></TR ></TABLE ></TD ></TR ><TR ><TD CLASS="doc" >Map a function on all the layouts in the <TT ><A HREF="XMonad-StackSet.html#t%3AStackSet" >StackSet</A ></TT >. </TD ></TR ><TR ><TD CLASS="s15" ></TD ></TR ><TR ><TD CLASS="section1" ><A NAME="8" ><A NAME="8" >Modifying the stackset </A ></A ></TD ></TR ><TR ><TD CLASS="s15" ></TD ></TR ><TR ><TD CLASS="doc" ></TD ></TR ><TR ><TD CLASS="s15" ></TD ></TR ><TR ><TD CLASS="topdecl" ><TABLE CLASS="declbar" ><TR ><TD CLASS="declname" ><A NAME="v:insertUp" ><A NAME="v%3AinsertUp" ></A ></A ><B >insertUp</B > :: <A HREF="/usr/share/doc/ghc/html/libraries/base-4.2.0.2/Data-Eq.html#t%3AEq" >Eq</A > a => a -> <A HREF="XMonad-StackSet.html#t%3AStackSet" >StackSet</A > i l a s sd -> <A HREF="XMonad-StackSet.html#t%3AStackSet" >StackSet</A > i l a s sd</TD ><TD CLASS="declbut" ><A HREF="src/XMonad-StackSet.html#insertUp" >Source</A ></TD ></TR ></TABLE ></TD ></TR ><TR ><TD CLASS="doc" ><P ><EM >O(n)</EM >. (Complexity due to duplicate check). Insert a new element into the stack, above the currently focused element. The new element is given focus; the previously focused element is moved down. </P ><P >If the element is already in the stackset, the original stackset is returned unmodified. </P ><P >Semantics in Huet's paper is that insert doesn't move the cursor. However, we choose to insert above, and move the focus. </P ></TD ></TR ><TR ><TD CLASS="s15" ></TD ></TR ><TR ><TD CLASS="topdecl" ><TABLE CLASS="declbar" ><TR ><TD CLASS="declname" ><A NAME="v:delete" ><A NAME="v%3Adelete" ></A ></A ><B >delete</B > :: (<A HREF="/usr/share/doc/ghc/html/libraries/base-4.2.0.2/Data-Ord.html#t%3AOrd" >Ord</A > a, <A HREF="/usr/share/doc/ghc/html/libraries/base-4.2.0.2/Data-Eq.html#t%3AEq" >Eq</A > s) => a -> <A HREF="XMonad-StackSet.html#t%3AStackSet" >StackSet</A > i l a s sd -> <A HREF="XMonad-StackSet.html#t%3AStackSet" >StackSet</A > i l a s sd</TD ><TD CLASS="declbut" ><A HREF="src/XMonad-StackSet.html#delete" >Source</A ></TD ></TR ></TABLE ></TD ></TR ><TR ><TD CLASS="doc" ><P ><EM >O(1) on current window, O(n) in general</EM >. Delete window w if it exists. There are 4 cases to consider: </P ><UL ><LI > delete on an <TT ><A HREF="/usr/share/doc/ghc/html/libraries/base-4.2.0.2/Data-Maybe.html#v%3ANothing" >Nothing</A ></TT > workspace leaves it Nothing </LI ><LI > otherwise, try to move focus to the down </LI ><LI > otherwise, try to move focus to the up </LI ><LI > otherwise, you've got an empty workspace, becomes <TT ><A HREF="/usr/share/doc/ghc/html/libraries/base-4.2.0.2/Data-Maybe.html#v%3ANothing" >Nothing</A ></TT > </LI ></UL ><P >Behaviour with respect to the master: </P ><UL ><LI > deleting the master window resets it to the newly focused window </LI ><LI > otherwise, delete doesn't affect the master. </LI ></UL ></TD ></TR ><TR ><TD CLASS="s15" ></TD ></TR ><TR ><TD CLASS="topdecl" ><TABLE CLASS="declbar" ><TR ><TD CLASS="declname" ><A NAME="v:delete'" ><A NAME="v%3Adelete%27" ></A ></A ><B >delete'</B > :: (<A HREF="/usr/share/doc/ghc/html/libraries/base-4.2.0.2/Data-Eq.html#t%3AEq" >Eq</A > a, <A HREF="/usr/share/doc/ghc/html/libraries/base-4.2.0.2/Data-Eq.html#t%3AEq" >Eq</A > s) => a -> <A HREF="XMonad-StackSet.html#t%3AStackSet" >StackSet</A > i l a s sd -> <A HREF="XMonad-StackSet.html#t%3AStackSet" >StackSet</A > i l a s sd</TD ><TD CLASS="declbut" ><A HREF="src/XMonad-StackSet.html#delete%27" >Source</A ></TD ></TR ></TABLE ></TD ></TR ><TR ><TD CLASS="doc" >Only temporarily remove the window from the stack, thereby not destroying special information saved in the Stackset </TD ></TR ><TR ><TD CLASS="s15" ></TD ></TR ><TR ><TD CLASS="topdecl" ><TABLE CLASS="declbar" ><TR ><TD CLASS="declname" ><A NAME="v:filter" ><A NAME="v%3Afilter" ></A ></A ><B >filter</B > :: (a -> <A HREF="/usr/share/doc/ghc/html/libraries/base-4.2.0.2/Data-Bool.html#t%3ABool" >Bool</A >) -> <A HREF="XMonad-StackSet.html#t%3AStack" >Stack</A > a -> <A HREF="/usr/share/doc/ghc/html/libraries/base-4.2.0.2/Data-Maybe.html#t%3AMaybe" >Maybe</A > (<A HREF="XMonad-StackSet.html#t%3AStack" >Stack</A > a)</TD ><TD CLASS="declbut" ><A HREF="src/XMonad-StackSet.html#filter" >Source</A ></TD ></TR ></TABLE ></TD ></TR ><TR ><TD CLASS="doc" ><EM >O(n)</EM >. 'filter p s' returns the elements of s such that p evaluates to <TT ><A HREF="/usr/share/doc/ghc/html/libraries/base-4.2.0.2/Data-Bool.html#v%3ATrue" >True</A ></TT >. Order is preserved, and focus moves as described for <TT ><A HREF="XMonad-StackSet.html#v%3Adelete" >delete</A ></TT >. </TD ></TR ><TR ><TD CLASS="s15" ></TD ></TR ><TR ><TD CLASS="section1" ><A NAME="9" ><A NAME="9" >Setting the master window </A ></A ></TD ></TR ><TR ><TD CLASS="s15" ></TD ></TR ><TR ><TD CLASS="doc" ></TD ></TR ><TR ><TD CLASS="s15" ></TD ></TR ><TR ><TD CLASS="topdecl" ><TABLE CLASS="declbar" ><TR ><TD CLASS="declname" ><A NAME="v:swapUp" ><A NAME="v%3AswapUp" ></A ></A ><B >swapUp</B > :: <A HREF="XMonad-StackSet.html#t%3AStackSet" >StackSet</A > i l a s sd -> <A HREF="XMonad-StackSet.html#t%3AStackSet" >StackSet</A > i l a s sd</TD ><TD CLASS="declbut" ><A HREF="src/XMonad-StackSet.html#swapUp" >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:swapDown" ><A NAME="v%3AswapDown" ></A ></A ><B >swapDown</B > :: <A HREF="XMonad-StackSet.html#t%3AStackSet" >StackSet</A > i l a s sd -> <A HREF="XMonad-StackSet.html#t%3AStackSet" >StackSet</A > i l a s sd</TD ><TD CLASS="declbut" ><A HREF="src/XMonad-StackSet.html#swapDown" >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:swapMaster" ><A NAME="v%3AswapMaster" ></A ></A ><B >swapMaster</B > :: <A HREF="XMonad-StackSet.html#t%3AStackSet" >StackSet</A > i l a s sd -> <A HREF="XMonad-StackSet.html#t%3AStackSet" >StackSet</A > i l a s sd</TD ><TD CLASS="declbut" ><A HREF="src/XMonad-StackSet.html#swapMaster" >Source</A ></TD ></TR ></TABLE ></TD ></TR ><TR ><TD CLASS="doc" ><EM >O(s)</EM >. Set the master window to the focused window. The old master window is swapped in the tiling order with the focused window. Focus stays with the item moved. </TD ></TR ><TR ><TD CLASS="s15" ></TD ></TR ><TR ><TD CLASS="topdecl" ><TABLE CLASS="declbar" ><TR ><TD CLASS="declname" ><A NAME="v:shiftMaster" ><A NAME="v%3AshiftMaster" ></A ></A ><B >shiftMaster</B > :: <A HREF="XMonad-StackSet.html#t%3AStackSet" >StackSet</A > i l a s sd -> <A HREF="XMonad-StackSet.html#t%3AStackSet" >StackSet</A > i l a s sd</TD ><TD CLASS="declbut" ><A HREF="src/XMonad-StackSet.html#shiftMaster" >Source</A ></TD ></TR ></TABLE ></TD ></TR ><TR ><TD CLASS="doc" ><EM >O(s)</EM >. Set the master window to the focused window. The other windows are kept in order and shifted down on the stack, as if you just hit mod-shift-k a bunch of times. Focus stays with the item moved. </TD ></TR ><TR ><TD CLASS="s15" ></TD ></TR ><TR ><TD CLASS="topdecl" ><TABLE CLASS="declbar" ><TR ><TD CLASS="declname" ><A NAME="v:modify" ><A NAME="v%3Amodify" ></A ></A ><B >modify</B > :: <A HREF="/usr/share/doc/ghc/html/libraries/base-4.2.0.2/Data-Maybe.html#t%3AMaybe" >Maybe</A > (<A HREF="XMonad-StackSet.html#t%3AStack" >Stack</A > a) -> (<A HREF="XMonad-StackSet.html#t%3AStack" >Stack</A > a -> <A HREF="/usr/share/doc/ghc/html/libraries/base-4.2.0.2/Data-Maybe.html#t%3AMaybe" >Maybe</A > (<A HREF="XMonad-StackSet.html#t%3AStack" >Stack</A > a)) -> <A HREF="XMonad-StackSet.html#t%3AStackSet" >StackSet</A > i l a s sd -> <A HREF="XMonad-StackSet.html#t%3AStackSet" >StackSet</A > i l a s sd</TD ><TD CLASS="declbut" ><A HREF="src/XMonad-StackSet.html#modify" >Source</A ></TD ></TR ></TABLE ></TD ></TR ><TR ><TD CLASS="doc" >Apply a function, and a default value for <TT ><A HREF="/usr/share/doc/ghc/html/libraries/base-4.2.0.2/Data-Maybe.html#v%3ANothing" >Nothing</A ></TT >, to modify the current stack. </TD ></TR ><TR ><TD CLASS="s15" ></TD ></TR ><TR ><TD CLASS="topdecl" ><TABLE CLASS="declbar" ><TR ><TD CLASS="declname" ><A NAME="v:modify'" ><A NAME="v%3Amodify%27" ></A ></A ><B >modify'</B > :: (<A HREF="XMonad-StackSet.html#t%3AStack" >Stack</A > a -> <A HREF="XMonad-StackSet.html#t%3AStack" >Stack</A > a) -> <A HREF="XMonad-StackSet.html#t%3AStackSet" >StackSet</A > i l a s sd -> <A HREF="XMonad-StackSet.html#t%3AStackSet" >StackSet</A > i l a s sd</TD ><TD CLASS="declbut" ><A HREF="src/XMonad-StackSet.html#modify%27" >Source</A ></TD ></TR ></TABLE ></TD ></TR ><TR ><TD CLASS="doc" >Apply a function to modify the current stack if it isn't empty, and we don't want to empty it. </TD ></TR ><TR ><TD CLASS="s15" ></TD ></TR ><TR ><TD CLASS="topdecl" ><TABLE CLASS="declbar" ><TR ><TD CLASS="declname" ><A NAME="v:float" ><A NAME="v%3Afloat" ></A ></A ><B >float</B > :: <A HREF="/usr/share/doc/ghc/html/libraries/base-4.2.0.2/Data-Ord.html#t%3AOrd" >Ord</A > a => a -> <A HREF="XMonad-StackSet.html#t%3ARationalRect" >RationalRect</A > -> <A HREF="XMonad-StackSet.html#t%3AStackSet" >StackSet</A > i l a s sd -> <A HREF="XMonad-StackSet.html#t%3AStackSet" >StackSet</A > i l a s sd</TD ><TD CLASS="declbut" ><A HREF="src/XMonad-StackSet.html#float" >Source</A ></TD ></TR ></TABLE ></TD ></TR ><TR ><TD CLASS="doc" >Given a window, and its preferred rectangle, set it as floating A floating window should already be managed by the <TT ><A HREF="XMonad-StackSet.html#t%3AStackSet" >StackSet</A ></TT >. </TD ></TR ><TR ><TD CLASS="s15" ></TD ></TR ><TR ><TD CLASS="topdecl" ><TABLE CLASS="declbar" ><TR ><TD CLASS="declname" ><A NAME="v:sink" ><A NAME="v%3Asink" ></A ></A ><B >sink</B > :: <A HREF="/usr/share/doc/ghc/html/libraries/base-4.2.0.2/Data-Ord.html#t%3AOrd" >Ord</A > a => a -> <A HREF="XMonad-StackSet.html#t%3AStackSet" >StackSet</A > i l a s sd -> <A HREF="XMonad-StackSet.html#t%3AStackSet" >StackSet</A > i l a s sd</TD ><TD CLASS="declbut" ><A HREF="src/XMonad-StackSet.html#sink" >Source</A ></TD ></TR ></TABLE ></TD ></TR ><TR ><TD CLASS="doc" >Clear the floating status of a window </TD ></TR ><TR ><TD CLASS="s15" ></TD ></TR ><TR ><TD CLASS="section1" ><A NAME="10" ><A NAME="10" >Composite operations </A ></A ></TD ></TR ><TR ><TD CLASS="s15" ></TD ></TR ><TR ><TD CLASS="doc" ></TD ></TR ><TR ><TD CLASS="s15" ></TD ></TR ><TR ><TD CLASS="topdecl" ><TABLE CLASS="declbar" ><TR ><TD CLASS="declname" ><A NAME="v:shift" ><A NAME="v%3Ashift" ></A ></A ><B >shift</B > :: (<A HREF="/usr/share/doc/ghc/html/libraries/base-4.2.0.2/Data-Ord.html#t%3AOrd" >Ord</A > a, <A HREF="/usr/share/doc/ghc/html/libraries/base-4.2.0.2/Data-Eq.html#t%3AEq" >Eq</A > s, <A HREF="/usr/share/doc/ghc/html/libraries/base-4.2.0.2/Data-Eq.html#t%3AEq" >Eq</A > i) => i -> <A HREF="XMonad-StackSet.html#t%3AStackSet" >StackSet</A > i l a s sd -> <A HREF="XMonad-StackSet.html#t%3AStackSet" >StackSet</A > i l a s sd</TD ><TD CLASS="declbut" ><A HREF="src/XMonad-StackSet.html#shift" >Source</A ></TD ></TR ></TABLE ></TD ></TR ><TR ><TD CLASS="doc" ><EM >O(w)</EM >. shift. Move the focused element of the current stack to stack n, leaving it as the focused element on that stack. The item is inserted above the currently focused element on that workspace. The actual focused workspace doesn't change. If there is no element on the current stack, the original stackSet is returned. </TD ></TR ><TR ><TD CLASS="s15" ></TD ></TR ><TR ><TD CLASS="topdecl" ><TABLE CLASS="declbar" ><TR ><TD CLASS="declname" ><A NAME="v:shiftWin" ><A NAME="v%3AshiftWin" ></A ></A ><B >shiftWin</B > :: (<A HREF="/usr/share/doc/ghc/html/libraries/base-4.2.0.2/Data-Ord.html#t%3AOrd" >Ord</A > a, <A HREF="/usr/share/doc/ghc/html/libraries/base-4.2.0.2/Data-Eq.html#t%3AEq" >Eq</A > a, <A HREF="/usr/share/doc/ghc/html/libraries/base-4.2.0.2/Data-Eq.html#t%3AEq" >Eq</A > s, <A HREF="/usr/share/doc/ghc/html/libraries/base-4.2.0.2/Data-Eq.html#t%3AEq" >Eq</A > i) => i -> a -> <A HREF="XMonad-StackSet.html#t%3AStackSet" >StackSet</A > i l a s sd -> <A HREF="XMonad-StackSet.html#t%3AStackSet" >StackSet</A > i l a s sd</TD ><TD CLASS="declbut" ><A HREF="src/XMonad-StackSet.html#shiftWin" >Source</A ></TD ></TR ></TABLE ></TD ></TR ><TR ><TD CLASS="doc" ><EM >O(n)</EM >. shiftWin. Searches for the specified window w on all workspaces of the stackSet and moves it to stack n, leaving it as the focused element on that stack. The item is inserted above the currently focused element on that workspace. The actual focused workspace doesn't change. If the window is not found in the stackSet, the original stackSet is returned. </TD ></TR ><TR ><TD CLASS="s15" ></TD ></TR ><TR ><TD CLASS="topdecl" ><TABLE CLASS="declbar" ><TR ><TD CLASS="declname" ><A NAME="v:abort" ><A NAME="v%3Aabort" ></A ></A ><B >abort</B > :: <A HREF="/usr/share/doc/ghc/html/libraries/base-4.2.0.2/Data-Char.html#t%3AString" >String</A > -> a</TD ><TD CLASS="declbut" ><A HREF="src/XMonad-StackSet.html#abort" >Source</A ></TD ></TR ></TABLE ></TD ></TR ><TR ><TD CLASS="doc" >this function indicates to catch that an error is expected </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 >