This file is indexed.

/usr/share/doc/libghc-xmonad-doc/html/XMonad-StackSet.html is in libghc-xmonad-doc 0.12-1.

This file is owned by root:root, with mode 0o644.

The actual contents of the file can be viewed below.

  1
  2
  3
  4
  5
  6
  7
  8
  9
 10
 11
 12
 13
 14
 15
 16
 17
 18
 19
 20
 21
 22
 23
 24
 25
 26
 27
 28
 29
 30
 31
 32
 33
 34
 35
 36
 37
 38
 39
 40
 41
 42
 43
 44
 45
 46
 47
 48
 49
 50
 51
 52
 53
 54
 55
 56
 57
 58
 59
 60
 61
 62
 63
 64
 65
 66
 67
 68
 69
 70
 71
 72
 73
 74
 75
 76
 77
 78
 79
 80
 81
 82
 83
 84
 85
 86
 87
 88
 89
 90
 91
 92
 93
 94
 95
 96
 97
 98
 99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"><html xmlns="http://www.w3.org/1999/xhtml"><head><meta http-equiv="Content-Type" content="text/html; charset=UTF-8" /><title>XMonad.StackSet</title><link href="ocean.css" rel="stylesheet" type="text/css" title="Ocean" /><script src="haddock-util.js" type="text/javascript"></script><script type="text/javascript">//<![CDATA[
window.onload = function () {pageLoad();setSynopsis("mini_XMonad-StackSet.html");};
//]]>
</script></head><body><div id="package-header"><ul class="links" id="page-menu"><li><a href="src/XMonad-StackSet.html">Source</a></li><li><a href="index.html">Contents</a></li><li><a href="doc-index.html">Index</a></li></ul><p class="caption">xmonad-0.12: A tiling window manager</p></div><div id="content"><div id="module-header"><table class="info"><tr><th>Copyright</th><td>(c) Don Stewart 2007</td></tr><tr><th>License</th><td>BSD3-style (see LICENSE)</td></tr><tr><th>Maintainer</th><td>dons@galois.com</td></tr><tr><th>Stability</th><td>experimental</td></tr><tr><th>Portability</th><td>portable, Haskell 98</td></tr><tr><th>Safe Haskell</th><td>Safe</td></tr><tr><th>Language</th><td>Haskell98</td></tr></table><p class="caption">XMonad.StackSet</p></div><div id="table-of-contents"><p class="caption">Contents</p><ul><li><a href="#g:1">Introduction</a><ul><li><a href="#g:2">The Zipper</a></li><li><a href="#g:3">Xinerama support</a></li><li><a href="#g:4">Master and Focus</a></li></ul></li><li><a href="#g:5">Construction</a></li><li><a href="#g:6">Xinerama operations</a></li><li><a href="#g:7">Operations on the current stack</a></li><li><a href="#g:8">Modifying the stackset</a></li><li><a href="#g:9">Setting the master window</a></li><li><a href="#g:10">Composite operations</a></li></ul></div><div id="description"><p class="caption">Description</p><div class="doc empty">&nbsp;</div></div><div id="synopsis"><p id="control.syn" class="caption expander" onclick="toggleSection('syn')">Synopsis</p><ul id="section.syn" class="hide" onclick="toggleSection('syn')"><li class="src short"><span class="keyword">data</span> <a href="#t:StackSet">StackSet</a> i l a sid sd = <a href="#v:StackSet">StackSet</a> {<ul class="subs"><li><a href="#v:current">current</a> :: !(<a href="XMonad-StackSet.html#t:Screen">Screen</a> i l a sid sd)</li><li><a href="#v:visible">visible</a> :: [<a href="XMonad-StackSet.html#t:Screen">Screen</a> i l a sid sd]</li><li><a href="#v:hidden">hidden</a> :: [<a href="XMonad-StackSet.html#t:Workspace">Workspace</a> i l a]</li><li><a href="#v:floating">floating</a> :: <a href="file:///usr/share/doc/ghc-doc/html/libraries/containers-0.5.6.2/Data-Map-Lazy.html#t:Map">Map</a> a <a href="XMonad-StackSet.html#t:RationalRect">RationalRect</a></li></ul>}</li><li class="src short"><span class="keyword">data</span> <a href="#t:Workspace">Workspace</a> i l a = <a href="#v:Workspace">Workspace</a> {<ul class="subs"><li><a href="#v:tag">tag</a> :: !i</li><li><a href="#v:layout">layout</a> :: l</li><li><a href="#v:stack">stack</a> :: <a href="file:///usr/share/doc/ghc-doc/html/libraries/base-4.8.2.0/Data-Maybe.html#t:Maybe">Maybe</a> (<a href="XMonad-StackSet.html#t:Stack">Stack</a> a)</li></ul>}</li><li class="src short"><span class="keyword">data</span> <a href="#t:Screen">Screen</a> i l a sid sd = <a href="#v:Screen">Screen</a> {<ul class="subs"><li><a href="#v:workspace">workspace</a> :: !(<a href="XMonad-StackSet.html#t:Workspace">Workspace</a> i l a)</li><li><a href="#v:screen">screen</a> :: !sid</li><li><a href="#v:screenDetail">screenDetail</a> :: !sd</li></ul>}</li><li class="src short"><span class="keyword">data</span> <a href="#t:Stack">Stack</a> a = <a href="#v:Stack">Stack</a> {<ul class="subs"><li><a href="#v:focus">focus</a> :: !a</li><li><a href="#v:up">up</a> :: [a]</li><li><a href="#v:down">down</a> :: [a]</li></ul>}</li><li class="src short"><span class="keyword">data</span> <a href="#t:RationalRect">RationalRect</a> = <a href="#v:RationalRect">RationalRect</a> <a href="file:///usr/share/doc/ghc-doc/html/libraries/base-4.8.2.0/Prelude.html#t:Rational">Rational</a> <a href="file:///usr/share/doc/ghc-doc/html/libraries/base-4.8.2.0/Prelude.html#t:Rational">Rational</a> <a href="file:///usr/share/doc/ghc-doc/html/libraries/base-4.8.2.0/Prelude.html#t:Rational">Rational</a> <a href="file:///usr/share/doc/ghc-doc/html/libraries/base-4.8.2.0/Prelude.html#t:Rational">Rational</a></li><li class="src short"><a href="#v:new">new</a> :: <a href="file:///usr/share/doc/ghc-doc/html/libraries/base-4.8.2.0/Prelude.html#t:Integral">Integral</a> s =&gt; l -&gt; [i] -&gt; [sd] -&gt; <a href="XMonad-StackSet.html#t:StackSet">StackSet</a> i l a s sd</li><li class="src short"><a href="#v:view">view</a> :: (<a href="file:///usr/share/doc/ghc-doc/html/libraries/base-4.8.2.0/Data-Eq.html#t:Eq">Eq</a> s, <a href="file:///usr/share/doc/ghc-doc/html/libraries/base-4.8.2.0/Data-Eq.html#t:Eq">Eq</a> i) =&gt; i -&gt; <a href="XMonad-StackSet.html#t:StackSet">StackSet</a> i l a s sd -&gt; <a href="XMonad-StackSet.html#t:StackSet">StackSet</a> i l a s sd</li><li class="src short"><a href="#v:greedyView">greedyView</a> :: (<a href="file:///usr/share/doc/ghc-doc/html/libraries/base-4.8.2.0/Data-Eq.html#t:Eq">Eq</a> s, <a href="file:///usr/share/doc/ghc-doc/html/libraries/base-4.8.2.0/Data-Eq.html#t:Eq">Eq</a> i) =&gt; i -&gt; <a href="XMonad-StackSet.html#t:StackSet">StackSet</a> i l a s sd -&gt; <a href="XMonad-StackSet.html#t:StackSet">StackSet</a> i l a s sd</li><li class="src short"><a href="#v:lookupWorkspace">lookupWorkspace</a> :: <a href="file:///usr/share/doc/ghc-doc/html/libraries/base-4.8.2.0/Data-Eq.html#t:Eq">Eq</a> s =&gt; s -&gt; <a href="XMonad-StackSet.html#t:StackSet">StackSet</a> i l a s sd -&gt; <a href="file:///usr/share/doc/ghc-doc/html/libraries/base-4.8.2.0/Data-Maybe.html#t:Maybe">Maybe</a> i</li><li class="src short"><a href="#v:screens">screens</a> :: <a href="XMonad-StackSet.html#t:StackSet">StackSet</a> i l a s sd -&gt; [<a href="XMonad-StackSet.html#t:Screen">Screen</a> i l a s sd]</li><li class="src short"><a href="#v:workspaces">workspaces</a> :: <a href="XMonad-StackSet.html#t:StackSet">StackSet</a> i l a s sd -&gt; [<a href="XMonad-StackSet.html#t:Workspace">Workspace</a> i l a]</li><li class="src short"><a href="#v:allWindows">allWindows</a> :: <a href="file:///usr/share/doc/ghc-doc/html/libraries/base-4.8.2.0/Data-Eq.html#t:Eq">Eq</a> a =&gt; <a href="XMonad-StackSet.html#t:StackSet">StackSet</a> i l a s sd -&gt; [a]</li><li class="src short"><a href="#v:currentTag">currentTag</a> :: <a href="XMonad-StackSet.html#t:StackSet">StackSet</a> i l a s sd -&gt; i</li><li class="src short"><a href="#v:peek">peek</a> :: <a href="XMonad-StackSet.html#t:StackSet">StackSet</a> i l a s sd -&gt; <a href="file:///usr/share/doc/ghc-doc/html/libraries/base-4.8.2.0/Data-Maybe.html#t:Maybe">Maybe</a> a</li><li class="src short"><a href="#v:index">index</a> :: <a href="XMonad-StackSet.html#t:StackSet">StackSet</a> i l a s sd -&gt; [a]</li><li class="src short"><a href="#v:integrate">integrate</a> :: <a href="XMonad-StackSet.html#t:Stack">Stack</a> a -&gt; [a]</li><li class="src short"><a href="#v:integrate-39-">integrate'</a> :: <a href="file:///usr/share/doc/ghc-doc/html/libraries/base-4.8.2.0/Data-Maybe.html#t:Maybe">Maybe</a> (<a href="XMonad-StackSet.html#t:Stack">Stack</a> a) -&gt; [a]</li><li class="src short"><a href="#v:differentiate">differentiate</a> :: [a] -&gt; <a href="file:///usr/share/doc/ghc-doc/html/libraries/base-4.8.2.0/Data-Maybe.html#t:Maybe">Maybe</a> (<a href="XMonad-StackSet.html#t:Stack">Stack</a> a)</li><li class="src short"><a href="#v:focusUp">focusUp</a> :: <a href="XMonad-StackSet.html#t:StackSet">StackSet</a> i l a s sd -&gt; <a href="XMonad-StackSet.html#t:StackSet">StackSet</a> i l a s sd</li><li class="src short"><a href="#v:focusDown">focusDown</a> :: <a href="XMonad-StackSet.html#t:StackSet">StackSet</a> i l a s sd -&gt; <a href="XMonad-StackSet.html#t:StackSet">StackSet</a> i l a s sd</li><li class="src short"><a href="#v:focusUp-39-">focusUp'</a> :: <a href="XMonad-StackSet.html#t:Stack">Stack</a> a -&gt; <a href="XMonad-StackSet.html#t:Stack">Stack</a> a</li><li class="src short"><a href="#v:focusDown-39-">focusDown'</a> :: <a href="XMonad-StackSet.html#t:Stack">Stack</a> a -&gt; <a href="XMonad-StackSet.html#t:Stack">Stack</a> a</li><li class="src short"><a href="#v:focusMaster">focusMaster</a> :: <a href="XMonad-StackSet.html#t:StackSet">StackSet</a> i l a s sd -&gt; <a href="XMonad-StackSet.html#t:StackSet">StackSet</a> i l a s sd</li><li class="src short"><a href="#v:focusWindow">focusWindow</a> :: (<a href="file:///usr/share/doc/ghc-doc/html/libraries/base-4.8.2.0/Data-Eq.html#t:Eq">Eq</a> s, <a href="file:///usr/share/doc/ghc-doc/html/libraries/base-4.8.2.0/Data-Eq.html#t:Eq">Eq</a> a, <a href="file:///usr/share/doc/ghc-doc/html/libraries/base-4.8.2.0/Data-Eq.html#t:Eq">Eq</a> i) =&gt; a -&gt; <a href="XMonad-StackSet.html#t:StackSet">StackSet</a> i l a s sd -&gt; <a href="XMonad-StackSet.html#t:StackSet">StackSet</a> i l a s sd</li><li class="src short"><a href="#v:tagMember">tagMember</a> :: <a href="file:///usr/share/doc/ghc-doc/html/libraries/base-4.8.2.0/Data-Eq.html#t:Eq">Eq</a> i =&gt; i -&gt; <a href="XMonad-StackSet.html#t:StackSet">StackSet</a> i l a s sd -&gt; <a href="file:///usr/share/doc/ghc-doc/html/libraries/base-4.8.2.0/Data-Bool.html#t:Bool">Bool</a></li><li class="src short"><a href="#v:renameTag">renameTag</a> :: <a href="file:///usr/share/doc/ghc-doc/html/libraries/base-4.8.2.0/Data-Eq.html#t:Eq">Eq</a> i =&gt; i -&gt; i -&gt; <a href="XMonad-StackSet.html#t:StackSet">StackSet</a> i l a s sd -&gt; <a href="XMonad-StackSet.html#t:StackSet">StackSet</a> i l a s sd</li><li class="src short"><a href="#v:ensureTags">ensureTags</a> :: <a href="file:///usr/share/doc/ghc-doc/html/libraries/base-4.8.2.0/Data-Eq.html#t:Eq">Eq</a> i =&gt; l -&gt; [i] -&gt; <a href="XMonad-StackSet.html#t:StackSet">StackSet</a> i l a s sd -&gt; <a href="XMonad-StackSet.html#t:StackSet">StackSet</a> i l a s sd</li><li class="src short"><a href="#v:member">member</a> :: <a href="file:///usr/share/doc/ghc-doc/html/libraries/base-4.8.2.0/Data-Eq.html#t:Eq">Eq</a> a =&gt; a -&gt; <a href="XMonad-StackSet.html#t:StackSet">StackSet</a> i l a s sd -&gt; <a href="file:///usr/share/doc/ghc-doc/html/libraries/base-4.8.2.0/Data-Bool.html#t:Bool">Bool</a></li><li class="src short"><a href="#v:findTag">findTag</a> :: <a href="file:///usr/share/doc/ghc-doc/html/libraries/base-4.8.2.0/Data-Eq.html#t:Eq">Eq</a> a =&gt; a -&gt; <a href="XMonad-StackSet.html#t:StackSet">StackSet</a> i l a s sd -&gt; <a href="file:///usr/share/doc/ghc-doc/html/libraries/base-4.8.2.0/Data-Maybe.html#t:Maybe">Maybe</a> i</li><li class="src short"><a href="#v:mapWorkspace">mapWorkspace</a> :: (<a href="XMonad-StackSet.html#t:Workspace">Workspace</a> i l a -&gt; <a href="XMonad-StackSet.html#t:Workspace">Workspace</a> i l a) -&gt; <a href="XMonad-StackSet.html#t:StackSet">StackSet</a> i l a s sd -&gt; <a href="XMonad-StackSet.html#t:StackSet">StackSet</a> i l a s sd</li><li class="src short"><a href="#v:mapLayout">mapLayout</a> :: (l -&gt; l') -&gt; <a href="XMonad-StackSet.html#t:StackSet">StackSet</a> i l a s sd -&gt; <a href="XMonad-StackSet.html#t:StackSet">StackSet</a> i l' a s sd</li><li class="src short"><a href="#v:insertUp">insertUp</a> :: <a href="file:///usr/share/doc/ghc-doc/html/libraries/base-4.8.2.0/Data-Eq.html#t:Eq">Eq</a> a =&gt; a -&gt; <a href="XMonad-StackSet.html#t:StackSet">StackSet</a> i l a s sd -&gt; <a href="XMonad-StackSet.html#t:StackSet">StackSet</a> i l a s sd</li><li class="src short"><a href="#v:delete">delete</a> :: (<a href="file:///usr/share/doc/ghc-doc/html/libraries/base-4.8.2.0/Data-Ord.html#t:Ord">Ord</a> a, <a href="file:///usr/share/doc/ghc-doc/html/libraries/base-4.8.2.0/Data-Eq.html#t:Eq">Eq</a> s) =&gt; a -&gt; <a href="XMonad-StackSet.html#t:StackSet">StackSet</a> i l a s sd -&gt; <a href="XMonad-StackSet.html#t:StackSet">StackSet</a> i l a s sd</li><li class="src short"><a href="#v:delete-39-">delete'</a> :: (<a href="file:///usr/share/doc/ghc-doc/html/libraries/base-4.8.2.0/Data-Eq.html#t:Eq">Eq</a> a, <a href="file:///usr/share/doc/ghc-doc/html/libraries/base-4.8.2.0/Data-Eq.html#t:Eq">Eq</a> s) =&gt; a -&gt; <a href="XMonad-StackSet.html#t:StackSet">StackSet</a> i l a s sd -&gt; <a href="XMonad-StackSet.html#t:StackSet">StackSet</a> i l a s sd</li><li class="src short"><a href="#v:filter">filter</a> :: (a -&gt; <a href="file:///usr/share/doc/ghc-doc/html/libraries/base-4.8.2.0/Data-Bool.html#t:Bool">Bool</a>) -&gt; <a href="XMonad-StackSet.html#t:Stack">Stack</a> a -&gt; <a href="file:///usr/share/doc/ghc-doc/html/libraries/base-4.8.2.0/Data-Maybe.html#t:Maybe">Maybe</a> (<a href="XMonad-StackSet.html#t:Stack">Stack</a> a)</li><li class="src short"><a href="#v:swapUp">swapUp</a> :: <a href="XMonad-StackSet.html#t:StackSet">StackSet</a> i l a s sd -&gt; <a href="XMonad-StackSet.html#t:StackSet">StackSet</a> i l a s sd</li><li class="src short"><a href="#v:swapDown">swapDown</a> :: <a href="XMonad-StackSet.html#t:StackSet">StackSet</a> i l a s sd -&gt; <a href="XMonad-StackSet.html#t:StackSet">StackSet</a> i l a s sd</li><li class="src short"><a href="#v:swapMaster">swapMaster</a> :: <a href="XMonad-StackSet.html#t:StackSet">StackSet</a> i l a s sd -&gt; <a href="XMonad-StackSet.html#t:StackSet">StackSet</a> i l a s sd</li><li class="src short"><a href="#v:shiftMaster">shiftMaster</a> :: <a href="XMonad-StackSet.html#t:StackSet">StackSet</a> i l a s sd -&gt; <a href="XMonad-StackSet.html#t:StackSet">StackSet</a> i l a s sd</li><li class="src short"><a href="#v:modify">modify</a> :: <a href="file:///usr/share/doc/ghc-doc/html/libraries/base-4.8.2.0/Data-Maybe.html#t:Maybe">Maybe</a> (<a href="XMonad-StackSet.html#t:Stack">Stack</a> a) -&gt; (<a href="XMonad-StackSet.html#t:Stack">Stack</a> a -&gt; <a href="file:///usr/share/doc/ghc-doc/html/libraries/base-4.8.2.0/Data-Maybe.html#t:Maybe">Maybe</a> (<a href="XMonad-StackSet.html#t:Stack">Stack</a> a)) -&gt; <a href="XMonad-StackSet.html#t:StackSet">StackSet</a> i l a s sd -&gt; <a href="XMonad-StackSet.html#t:StackSet">StackSet</a> i l a s sd</li><li class="src short"><a href="#v:modify-39-">modify'</a> :: (<a href="XMonad-StackSet.html#t:Stack">Stack</a> a -&gt; <a href="XMonad-StackSet.html#t:Stack">Stack</a> a) -&gt; <a href="XMonad-StackSet.html#t:StackSet">StackSet</a> i l a s sd -&gt; <a href="XMonad-StackSet.html#t:StackSet">StackSet</a> i l a s sd</li><li class="src short"><a href="#v:float">float</a> :: <a href="file:///usr/share/doc/ghc-doc/html/libraries/base-4.8.2.0/Data-Ord.html#t:Ord">Ord</a> a =&gt; a -&gt; <a href="XMonad-StackSet.html#t:RationalRect">RationalRect</a> -&gt; <a href="XMonad-StackSet.html#t:StackSet">StackSet</a> i l a s sd -&gt; <a href="XMonad-StackSet.html#t:StackSet">StackSet</a> i l a s sd</li><li class="src short"><a href="#v:sink">sink</a> :: <a href="file:///usr/share/doc/ghc-doc/html/libraries/base-4.8.2.0/Data-Ord.html#t:Ord">Ord</a> a =&gt; a -&gt; <a href="XMonad-StackSet.html#t:StackSet">StackSet</a> i l a s sd -&gt; <a href="XMonad-StackSet.html#t:StackSet">StackSet</a> i l a s sd</li><li class="src short"><a href="#v:shift">shift</a> :: (<a href="file:///usr/share/doc/ghc-doc/html/libraries/base-4.8.2.0/Data-Ord.html#t:Ord">Ord</a> a, <a href="file:///usr/share/doc/ghc-doc/html/libraries/base-4.8.2.0/Data-Eq.html#t:Eq">Eq</a> s, <a href="file:///usr/share/doc/ghc-doc/html/libraries/base-4.8.2.0/Data-Eq.html#t:Eq">Eq</a> i) =&gt; i -&gt; <a href="XMonad-StackSet.html#t:StackSet">StackSet</a> i l a s sd -&gt; <a href="XMonad-StackSet.html#t:StackSet">StackSet</a> i l a s sd</li><li class="src short"><a href="#v:shiftWin">shiftWin</a> :: (<a href="file:///usr/share/doc/ghc-doc/html/libraries/base-4.8.2.0/Data-Ord.html#t:Ord">Ord</a> a, <a href="file:///usr/share/doc/ghc-doc/html/libraries/base-4.8.2.0/Data-Eq.html#t:Eq">Eq</a> a, <a href="file:///usr/share/doc/ghc-doc/html/libraries/base-4.8.2.0/Data-Eq.html#t:Eq">Eq</a> s, <a href="file:///usr/share/doc/ghc-doc/html/libraries/base-4.8.2.0/Data-Eq.html#t:Eq">Eq</a> i) =&gt; i -&gt; a -&gt; <a href="XMonad-StackSet.html#t:StackSet">StackSet</a> i l a s sd -&gt; <a href="XMonad-StackSet.html#t:StackSet">StackSet</a> i l a s sd</li><li class="src short"><a href="#v:abort">abort</a> :: <a href="file:///usr/share/doc/ghc-doc/html/libraries/base-4.8.2.0/Data-String.html#t:String">String</a> -&gt; a</li></ul></div><div id="interface"><h1 id="g:1">Introduction</h1><div class="doc"><p>The <code><a href="XMonad-StackSet.html#t:StackSet">StackSet</a></code> 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 <code><a href="file:///usr/share/doc/ghc-doc/html/libraries/base-4.8.2.0/Prelude.html#v:-42-">*</a></code> indicates the window on each workspace that has
 focus, and which workspace is current.</p></div><h2 id="g:2">The Zipper</h2><div class="doc"><p>We encode all the focus tracking directly in the data structure, with a <code>zipper</code>:</p><p>A Zipper is essentially an <code>updateable</code> 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@, &quot;Zipper as a delimited continuation&quot;</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></div><h2 id="g:3">Xinerama support</h2><div class="doc"><p>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, <code><a href="XMonad-StackSet.html#t:StackSet">StackSet</a></code> keeps separate lists of visible but non-focused
 workspaces, and non-visible workspaces.</p></div><h2 id="g:4">Master and Focus</h2><div class="doc"><p>Each stack tracks a focused item, and for tiling purposes also tracks
 a <code>master</code> position. The connection between <code>master</code> and <code><a href="XMonad-StackSet.html#v:focus">focus</a></code>
 needs to be well defined, particularly in relation to <code>insert</code> and
 <code><a href="XMonad-StackSet.html#v:delete">delete</a></code>.</p></div><div class="top"><p class="src"><span class="keyword">data</span> <a name="t:StackSet" class="def">StackSet</a> i l a sid sd <a href="src/XMonad-StackSet.html#StackSet" class="link">Source</a></p><div class="doc"><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></div><div class="subs constructors"><p class="caption">Constructors</p><table><tr><td class="src"><a name="v:StackSet" class="def">StackSet</a></td><td class="doc empty">&nbsp;</td></tr><tr><td colspan="2"><div class="subs fields"><p class="caption">Fields</p><dl><dt class="src"><a name="v:current" class="def">current</a> :: !(<a href="XMonad-StackSet.html#t:Screen">Screen</a> i l a sid sd)</dt><dd class="doc"><p>currently focused workspace</p></dd><dt class="src"><a name="v:visible" class="def">visible</a> :: [<a href="XMonad-StackSet.html#t:Screen">Screen</a> i l a sid sd]</dt><dd class="doc"><p>non-focused workspaces, visible in xinerama</p></dd><dt class="src"><a name="v:hidden" class="def">hidden</a> :: [<a href="XMonad-StackSet.html#t:Workspace">Workspace</a> i l a]</dt><dd class="doc"><p>workspaces not visible anywhere</p></dd><dt class="src"><a name="v:floating" class="def">floating</a> :: <a href="file:///usr/share/doc/ghc-doc/html/libraries/containers-0.5.6.2/Data-Map-Lazy.html#t:Map">Map</a> a <a href="XMonad-StackSet.html#t:RationalRect">RationalRect</a></dt><dd class="doc"><p>floating windows</p></dd></dl><div class="clear"></div></div></td></tr></table></div><div class="subs instances"><p id="control.i:StackSet" class="caption collapser" onclick="toggleSection('i:StackSet')">Instances</p><div id="section.i:StackSet" class="show"><table><tr><td class="src clearfix"><span class="inst-left">(<a href="file:///usr/share/doc/ghc-doc/html/libraries/base-4.8.2.0/Data-Eq.html#t:Eq">Eq</a> i, <a href="file:///usr/share/doc/ghc-doc/html/libraries/base-4.8.2.0/Data-Eq.html#t:Eq">Eq</a> l, <a href="file:///usr/share/doc/ghc-doc/html/libraries/base-4.8.2.0/Data-Eq.html#t:Eq">Eq</a> a, <a href="file:///usr/share/doc/ghc-doc/html/libraries/base-4.8.2.0/Data-Eq.html#t:Eq">Eq</a> sid, <a href="file:///usr/share/doc/ghc-doc/html/libraries/base-4.8.2.0/Data-Eq.html#t:Eq">Eq</a> sd) =&gt; <a href="file:///usr/share/doc/ghc-doc/html/libraries/base-4.8.2.0/Data-Eq.html#t:Eq">Eq</a> (<a href="XMonad-StackSet.html#t:StackSet">StackSet</a> i l a sid sd)</span> <a href="src/XMonad-StackSet.html#line-139" class="link">Source</a></td><td class="doc empty">&nbsp;</td></tr><tr><td class="src clearfix"><span class="inst-left">(<a href="file:///usr/share/doc/ghc-doc/html/libraries/base-4.8.2.0/Data-Ord.html#t:Ord">Ord</a> a, <a href="file:///usr/share/doc/ghc-doc/html/libraries/base-4.8.2.0/Text-Read.html#t:Read">Read</a> i, <a href="file:///usr/share/doc/ghc-doc/html/libraries/base-4.8.2.0/Text-Read.html#t:Read">Read</a> l, <a href="file:///usr/share/doc/ghc-doc/html/libraries/base-4.8.2.0/Text-Read.html#t:Read">Read</a> a, <a href="file:///usr/share/doc/ghc-doc/html/libraries/base-4.8.2.0/Text-Read.html#t:Read">Read</a> sid, <a href="file:///usr/share/doc/ghc-doc/html/libraries/base-4.8.2.0/Text-Read.html#t:Read">Read</a> sd) =&gt; <a href="file:///usr/share/doc/ghc-doc/html/libraries/base-4.8.2.0/Text-Read.html#t:Read">Read</a> (<a href="XMonad-StackSet.html#t:StackSet">StackSet</a> i l a sid sd)</span> <a href="src/XMonad-StackSet.html#line-139" class="link">Source</a></td><td class="doc empty">&nbsp;</td></tr><tr><td class="src clearfix"><span class="inst-left">(<a href="file:///usr/share/doc/ghc-doc/html/libraries/base-4.8.2.0/Text-Show.html#t:Show">Show</a> i, <a href="file:///usr/share/doc/ghc-doc/html/libraries/base-4.8.2.0/Text-Show.html#t:Show">Show</a> l, <a href="file:///usr/share/doc/ghc-doc/html/libraries/base-4.8.2.0/Text-Show.html#t:Show">Show</a> a, <a href="file:///usr/share/doc/ghc-doc/html/libraries/base-4.8.2.0/Text-Show.html#t:Show">Show</a> sid, <a href="file:///usr/share/doc/ghc-doc/html/libraries/base-4.8.2.0/Text-Show.html#t:Show">Show</a> sd) =&gt; <a href="file:///usr/share/doc/ghc-doc/html/libraries/base-4.8.2.0/Text-Show.html#t:Show">Show</a> (<a href="XMonad-StackSet.html#t:StackSet">StackSet</a> i l a sid sd)</span> <a href="src/XMonad-StackSet.html#line-139" class="link">Source</a></td><td class="doc empty">&nbsp;</td></tr></table></div></div></div><div class="top"><p class="src"><span class="keyword">data</span> <a name="t:Workspace" class="def">Workspace</a> i l a <a href="src/XMonad-StackSet.html#Workspace" class="link">Source</a></p><div class="doc"><p>A workspace is just a tag, a layout, and a stack.</p></div><div class="subs constructors"><p class="caption">Constructors</p><table><tr><td class="src"><a name="v:Workspace" class="def">Workspace</a></td><td class="doc empty">&nbsp;</td></tr><tr><td colspan="2"><div class="subs fields"><p class="caption">Fields</p><dl><dt class="src"><a name="v:tag" class="def">tag</a> :: !i</dt><dd class="doc empty">&nbsp;</dd><dt class="src"><a name="v:layout" class="def">layout</a> :: l</dt><dd class="doc empty">&nbsp;</dd><dt class="src"><a name="v:stack" class="def">stack</a> :: <a href="file:///usr/share/doc/ghc-doc/html/libraries/base-4.8.2.0/Data-Maybe.html#t:Maybe">Maybe</a> (<a href="XMonad-StackSet.html#t:Stack">Stack</a> a)</dt><dd class="doc empty">&nbsp;</dd></dl><div class="clear"></div></div></td></tr></table></div><div class="subs instances"><p id="control.i:Workspace" class="caption collapser" onclick="toggleSection('i:Workspace')">Instances</p><div id="section.i:Workspace" class="show"><table><tr><td class="src clearfix"><span class="inst-left">(<a href="file:///usr/share/doc/ghc-doc/html/libraries/base-4.8.2.0/Data-Eq.html#t:Eq">Eq</a> i, <a href="file:///usr/share/doc/ghc-doc/html/libraries/base-4.8.2.0/Data-Eq.html#t:Eq">Eq</a> l, <a href="file:///usr/share/doc/ghc-doc/html/libraries/base-4.8.2.0/Data-Eq.html#t:Eq">Eq</a> a) =&gt; <a href="file:///usr/share/doc/ghc-doc/html/libraries/base-4.8.2.0/Data-Eq.html#t:Eq">Eq</a> (<a href="XMonad-StackSet.html#t:Workspace">Workspace</a> i l a)</span> <a href="src/XMonad-StackSet.html#line-151" class="link">Source</a></td><td class="doc empty">&nbsp;</td></tr><tr><td class="src clearfix"><span class="inst-left">(<a href="file:///usr/share/doc/ghc-doc/html/libraries/base-4.8.2.0/Text-Read.html#t:Read">Read</a> i, <a href="file:///usr/share/doc/ghc-doc/html/libraries/base-4.8.2.0/Text-Read.html#t:Read">Read</a> l, <a href="file:///usr/share/doc/ghc-doc/html/libraries/base-4.8.2.0/Text-Read.html#t:Read">Read</a> a) =&gt; <a href="file:///usr/share/doc/ghc-doc/html/libraries/base-4.8.2.0/Text-Read.html#t:Read">Read</a> (<a href="XMonad-StackSet.html#t:Workspace">Workspace</a> i l a)</span> <a href="src/XMonad-StackSet.html#line-151" class="link">Source</a></td><td class="doc empty">&nbsp;</td></tr><tr><td class="src clearfix"><span class="inst-left">(<a href="file:///usr/share/doc/ghc-doc/html/libraries/base-4.8.2.0/Text-Show.html#t:Show">Show</a> i, <a href="file:///usr/share/doc/ghc-doc/html/libraries/base-4.8.2.0/Text-Show.html#t:Show">Show</a> l, <a href="file:///usr/share/doc/ghc-doc/html/libraries/base-4.8.2.0/Text-Show.html#t:Show">Show</a> a) =&gt; <a href="file:///usr/share/doc/ghc-doc/html/libraries/base-4.8.2.0/Text-Show.html#t:Show">Show</a> (<a href="XMonad-StackSet.html#t:Workspace">Workspace</a> i l a)</span> <a href="src/XMonad-StackSet.html#line-151" class="link">Source</a></td><td class="doc empty">&nbsp;</td></tr></table></div></div></div><div class="top"><p class="src"><span class="keyword">data</span> <a name="t:Screen" class="def">Screen</a> i l a sid sd <a href="src/XMonad-StackSet.html#Screen" class="link">Source</a></p><div class="doc"><p>Visible workspaces, and their Xinerama screens.</p></div><div class="subs constructors"><p class="caption">Constructors</p><table><tr><td class="src"><a name="v:Screen" class="def">Screen</a></td><td class="doc empty">&nbsp;</td></tr><tr><td colspan="2"><div class="subs fields"><p class="caption">Fields</p><dl><dt class="src"><a name="v:workspace" class="def">workspace</a> :: !(<a href="XMonad-StackSet.html#t:Workspace">Workspace</a> i l a)</dt><dd class="doc empty">&nbsp;</dd><dt class="src"><a name="v:screen" class="def">screen</a> :: !sid</dt><dd class="doc empty">&nbsp;</dd><dt class="src"><a name="v:screenDetail" class="def">screenDetail</a> :: !sd</dt><dd class="doc empty">&nbsp;</dd></dl><div class="clear"></div></div></td></tr></table></div><div class="subs instances"><p id="control.i:Screen" class="caption collapser" onclick="toggleSection('i:Screen')">Instances</p><div id="section.i:Screen" class="show"><table><tr><td class="src clearfix"><span class="inst-left">(<a href="file:///usr/share/doc/ghc-doc/html/libraries/base-4.8.2.0/Data-Eq.html#t:Eq">Eq</a> i, <a href="file:///usr/share/doc/ghc-doc/html/libraries/base-4.8.2.0/Data-Eq.html#t:Eq">Eq</a> l, <a href="file:///usr/share/doc/ghc-doc/html/libraries/base-4.8.2.0/Data-Eq.html#t:Eq">Eq</a> a, <a href="file:///usr/share/doc/ghc-doc/html/libraries/base-4.8.2.0/Data-Eq.html#t:Eq">Eq</a> sid, <a href="file:///usr/share/doc/ghc-doc/html/libraries/base-4.8.2.0/Data-Eq.html#t:Eq">Eq</a> sd) =&gt; <a href="file:///usr/share/doc/ghc-doc/html/libraries/base-4.8.2.0/Data-Eq.html#t:Eq">Eq</a> (<a href="XMonad-StackSet.html#t:Screen">Screen</a> i l a sid sd)</span> <a href="src/XMonad-StackSet.html#line-145" class="link">Source</a></td><td class="doc empty">&nbsp;</td></tr><tr><td class="src clearfix"><span class="inst-left">(<a href="file:///usr/share/doc/ghc-doc/html/libraries/base-4.8.2.0/Text-Read.html#t:Read">Read</a> i, <a href="file:///usr/share/doc/ghc-doc/html/libraries/base-4.8.2.0/Text-Read.html#t:Read">Read</a> l, <a href="file:///usr/share/doc/ghc-doc/html/libraries/base-4.8.2.0/Text-Read.html#t:Read">Read</a> a, <a href="file:///usr/share/doc/ghc-doc/html/libraries/base-4.8.2.0/Text-Read.html#t:Read">Read</a> sid, <a href="file:///usr/share/doc/ghc-doc/html/libraries/base-4.8.2.0/Text-Read.html#t:Read">Read</a> sd) =&gt; <a href="file:///usr/share/doc/ghc-doc/html/libraries/base-4.8.2.0/Text-Read.html#t:Read">Read</a> (<a href="XMonad-StackSet.html#t:Screen">Screen</a> i l a sid sd)</span> <a href="src/XMonad-StackSet.html#line-145" class="link">Source</a></td><td class="doc empty">&nbsp;</td></tr><tr><td class="src clearfix"><span class="inst-left">(<a href="file:///usr/share/doc/ghc-doc/html/libraries/base-4.8.2.0/Text-Show.html#t:Show">Show</a> i, <a href="file:///usr/share/doc/ghc-doc/html/libraries/base-4.8.2.0/Text-Show.html#t:Show">Show</a> l, <a href="file:///usr/share/doc/ghc-doc/html/libraries/base-4.8.2.0/Text-Show.html#t:Show">Show</a> a, <a href="file:///usr/share/doc/ghc-doc/html/libraries/base-4.8.2.0/Text-Show.html#t:Show">Show</a> sid, <a href="file:///usr/share/doc/ghc-doc/html/libraries/base-4.8.2.0/Text-Show.html#t:Show">Show</a> sd) =&gt; <a href="file:///usr/share/doc/ghc-doc/html/libraries/base-4.8.2.0/Text-Show.html#t:Show">Show</a> (<a href="XMonad-StackSet.html#t:Screen">Screen</a> i l a sid sd)</span> <a href="src/XMonad-StackSet.html#line-145" class="link">Source</a></td><td class="doc empty">&nbsp;</td></tr></table></div></div></div><div class="top"><p class="src"><span class="keyword">data</span> <a name="t:Stack" class="def">Stack</a> a <a href="src/XMonad-StackSet.html#Stack" class="link">Source</a></p><div class="doc"><p>A stack is a cursor onto a 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:  &lt; '7' &gt;
up |            [ '2' ]
   +---------   [ '3' ]
focus:          &lt; '4' &gt;
dn +----------- [ '8' ]</pre><p>A <code><a href="XMonad-StackSet.html#t:Stack">Stack</a></code> 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 <code><a href="XMonad-StackSet.html#v:index">index</a></code>.</p></div><div class="subs constructors"><p class="caption">Constructors</p><table><tr><td class="src"><a name="v:Stack" class="def">Stack</a></td><td class="doc empty">&nbsp;</td></tr><tr><td colspan="2"><div class="subs fields"><p class="caption">Fields</p><dl><dt class="src"><a name="v:focus" class="def">focus</a> :: !a</dt><dd class="doc empty">&nbsp;</dd><dt class="src"><a name="v:up" class="def">up</a> :: [a]</dt><dd class="doc empty">&nbsp;</dd><dt class="src"><a name="v:down" class="def">down</a> :: [a]</dt><dd class="doc empty">&nbsp;</dd></dl><div class="clear"></div></div></td></tr></table></div><div class="subs instances"><p id="control.i:Stack" class="caption collapser" onclick="toggleSection('i:Stack')">Instances</p><div id="section.i:Stack" class="show"><table><tr><td class="src clearfix"><span class="inst-left"><a href="file:///usr/share/doc/ghc-doc/html/libraries/base-4.8.2.0/Data-Eq.html#t:Eq">Eq</a> a =&gt; <a href="file:///usr/share/doc/ghc-doc/html/libraries/base-4.8.2.0/Data-Eq.html#t:Eq">Eq</a> (<a href="XMonad-StackSet.html#t:Stack">Stack</a> a)</span> <a href="src/XMonad-StackSet.html#line-178" class="link">Source</a></td><td class="doc empty">&nbsp;</td></tr><tr><td class="src clearfix"><span class="inst-left"><a href="file:///usr/share/doc/ghc-doc/html/libraries/base-4.8.2.0/Text-Read.html#t:Read">Read</a> a =&gt; <a href="file:///usr/share/doc/ghc-doc/html/libraries/base-4.8.2.0/Text-Read.html#t:Read">Read</a> (<a href="XMonad-StackSet.html#t:Stack">Stack</a> a)</span> <a href="src/XMonad-StackSet.html#line-178" class="link">Source</a></td><td class="doc empty">&nbsp;</td></tr><tr><td class="src clearfix"><span class="inst-left"><a href="file:///usr/share/doc/ghc-doc/html/libraries/base-4.8.2.0/Text-Show.html#t:Show">Show</a> a =&gt; <a href="file:///usr/share/doc/ghc-doc/html/libraries/base-4.8.2.0/Text-Show.html#t:Show">Show</a> (<a href="XMonad-StackSet.html#t:Stack">Stack</a> a)</span> <a href="src/XMonad-StackSet.html#line-178" class="link">Source</a></td><td class="doc empty">&nbsp;</td></tr></table></div></div></div><div class="top"><p class="src"><span class="keyword">data</span> <a name="t:RationalRect" class="def">RationalRect</a> <a href="src/XMonad-StackSet.html#RationalRect" class="link">Source</a></p><div class="doc"><p>A structure for window geometries</p></div><div class="subs constructors"><p class="caption">Constructors</p><table><tr><td class="src"><a name="v:RationalRect" class="def">RationalRect</a> <a href="file:///usr/share/doc/ghc-doc/html/libraries/base-4.8.2.0/Prelude.html#t:Rational">Rational</a> <a href="file:///usr/share/doc/ghc-doc/html/libraries/base-4.8.2.0/Prelude.html#t:Rational">Rational</a> <a href="file:///usr/share/doc/ghc-doc/html/libraries/base-4.8.2.0/Prelude.html#t:Rational">Rational</a> <a href="file:///usr/share/doc/ghc-doc/html/libraries/base-4.8.2.0/Prelude.html#t:Rational">Rational</a></td><td class="doc empty">&nbsp;</td></tr></table></div><div class="subs instances"><p id="control.i:RationalRect" class="caption collapser" onclick="toggleSection('i:RationalRect')">Instances</p><div id="section.i:RationalRect" class="show"><table><tr><td class="src clearfix"><span class="inst-left"><a href="file:///usr/share/doc/ghc-doc/html/libraries/base-4.8.2.0/Data-Eq.html#t:Eq">Eq</a> <a href="XMonad-StackSet.html#t:RationalRect">RationalRect</a></span> <a href="src/XMonad-StackSet.html#line-155" class="link">Source</a></td><td class="doc empty">&nbsp;</td></tr><tr><td class="src clearfix"><span class="inst-left"><a href="file:///usr/share/doc/ghc-doc/html/libraries/base-4.8.2.0/Text-Read.html#t:Read">Read</a> <a href="XMonad-StackSet.html#t:RationalRect">RationalRect</a></span> <a href="src/XMonad-StackSet.html#line-155" class="link">Source</a></td><td class="doc empty">&nbsp;</td></tr><tr><td class="src clearfix"><span class="inst-left"><a href="file:///usr/share/doc/ghc-doc/html/libraries/base-4.8.2.0/Text-Show.html#t:Show">Show</a> <a href="XMonad-StackSet.html#t:RationalRect">RationalRect</a></span> <a href="src/XMonad-StackSet.html#line-155" class="link">Source</a></td><td class="doc empty">&nbsp;</td></tr></table></div></div></div><h1 id="g:5">Construction</h1><div class="doc empty">&nbsp;</div><div class="top"><p class="src"><a name="v:new" class="def">new</a> :: <a href="file:///usr/share/doc/ghc-doc/html/libraries/base-4.8.2.0/Prelude.html#t:Integral">Integral</a> s =&gt; l -&gt; [i] -&gt; [sd] -&gt; <a href="XMonad-StackSet.html#t:StackSet">StackSet</a> i l a s sd <a href="src/XMonad-StackSet.html#new" class="link">Source</a></p><div 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 <code>m</code>. The
 number of physical screens (<code>length <code>m</code></code>) 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></div></div><div class="top"><p class="src"><a name="v:view" class="def">view</a> :: (<a href="file:///usr/share/doc/ghc-doc/html/libraries/base-4.8.2.0/Data-Eq.html#t:Eq">Eq</a> s, <a href="file:///usr/share/doc/ghc-doc/html/libraries/base-4.8.2.0/Data-Eq.html#t:Eq">Eq</a> i) =&gt; i -&gt; <a href="XMonad-StackSet.html#t:StackSet">StackSet</a> i l a s sd -&gt; <a href="XMonad-StackSet.html#t:StackSet">StackSet</a> i l a s sd <a href="src/XMonad-StackSet.html#view" class="link">Source</a></p><div 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 <code><a href="XMonad-StackSet.html#t:StackSet">StackSet</a></code>.</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></div></div><div class="top"><p class="src"><a name="v:greedyView" class="def">greedyView</a> :: (<a href="file:///usr/share/doc/ghc-doc/html/libraries/base-4.8.2.0/Data-Eq.html#t:Eq">Eq</a> s, <a href="file:///usr/share/doc/ghc-doc/html/libraries/base-4.8.2.0/Data-Eq.html#t:Eq">Eq</a> i) =&gt; i -&gt; <a href="XMonad-StackSet.html#t:StackSet">StackSet</a> i l a s sd -&gt; <a href="XMonad-StackSet.html#t:StackSet">StackSet</a> i l a s sd <a href="src/XMonad-StackSet.html#greedyView" class="link">Source</a></p><div class="doc"><p>Set focus to the given workspace.  If that workspace does not exist
 in the stackset, the original workspace is returned.  If that workspace is
 <code><a href="XMonad-StackSet.html#v:hidden">hidden</a></code>, then display that workspace on the current screen, and move the
 current workspace to <code><a href="XMonad-StackSet.html#v:hidden">hidden</a></code>.  If that workspace is <code><a href="XMonad-StackSet.html#v:visible">visible</a></code> on another
 screen, the workspaces of the current screen and the other screen are
 swapped.</p></div></div><h1 id="g:6">Xinerama operations</h1><div class="doc"><p>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, <code><a href="XMonad-StackSet.html#t:StackSet">StackSet</a></code> keeps separate lists of visible but non-focused
 workspaces, and non-visible workspaces.</p></div><div class="top"><p class="src"><a name="v:lookupWorkspace" class="def">lookupWorkspace</a> :: <a href="file:///usr/share/doc/ghc-doc/html/libraries/base-4.8.2.0/Data-Eq.html#t:Eq">Eq</a> s =&gt; s -&gt; <a href="XMonad-StackSet.html#t:StackSet">StackSet</a> i l a s sd -&gt; <a href="file:///usr/share/doc/ghc-doc/html/libraries/base-4.8.2.0/Data-Maybe.html#t:Maybe">Maybe</a> i <a href="src/XMonad-StackSet.html#lookupWorkspace" class="link">Source</a></p><div class="doc"><p>Find the tag of the workspace visible on Xinerama screen <code>sc</code>.
 <code><a href="file:///usr/share/doc/ghc-doc/html/libraries/base-4.8.2.0/Data-Maybe.html#v:Nothing">Nothing</a></code> if screen is out of bounds.</p></div></div><div class="top"><p class="src"><a name="v:screens" class="def">screens</a> :: <a href="XMonad-StackSet.html#t:StackSet">StackSet</a> i l a s sd -&gt; [<a href="XMonad-StackSet.html#t:Screen">Screen</a> i l a s sd] <a href="src/XMonad-StackSet.html#screens" class="link">Source</a></p><div class="doc"><p>Get a list of all screens in the <code><a href="XMonad-StackSet.html#t:StackSet">StackSet</a></code>.</p></div></div><div class="top"><p class="src"><a name="v:workspaces" class="def">workspaces</a> :: <a href="XMonad-StackSet.html#t:StackSet">StackSet</a> i l a s sd -&gt; [<a href="XMonad-StackSet.html#t:Workspace">Workspace</a> i l a] <a href="src/XMonad-StackSet.html#workspaces" class="link">Source</a></p><div class="doc"><p>Get a list of all workspaces in the <code><a href="XMonad-StackSet.html#t:StackSet">StackSet</a></code>.</p></div></div><div class="top"><p class="src"><a name="v:allWindows" class="def">allWindows</a> :: <a href="file:///usr/share/doc/ghc-doc/html/libraries/base-4.8.2.0/Data-Eq.html#t:Eq">Eq</a> a =&gt; <a href="XMonad-StackSet.html#t:StackSet">StackSet</a> i l a s sd -&gt; [a] <a href="src/XMonad-StackSet.html#allWindows" class="link">Source</a></p><div class="doc"><p>Get a list of all windows in the <code><a href="XMonad-StackSet.html#t:StackSet">StackSet</a></code> in no particular order</p></div></div><div class="top"><p class="src"><a name="v:currentTag" class="def">currentTag</a> :: <a href="XMonad-StackSet.html#t:StackSet">StackSet</a> i l a s sd -&gt; i <a href="src/XMonad-StackSet.html#currentTag" class="link">Source</a></p><div class="doc"><p>Get the tag of the currently focused workspace.</p></div></div><h1 id="g:7">Operations on the current stack</h1><div class="doc empty">&nbsp;</div><div class="top"><p class="src"><a name="v:peek" class="def">peek</a> :: <a href="XMonad-StackSet.html#t:StackSet">StackSet</a> i l a s sd -&gt; <a href="file:///usr/share/doc/ghc-doc/html/libraries/base-4.8.2.0/Data-Maybe.html#t:Maybe">Maybe</a> a <a href="src/XMonad-StackSet.html#peek" class="link">Source</a></p><div class="doc"><p><em>O(1)</em>. Extract the focused element of the current stack.
 Return <code><a href="file:///usr/share/doc/ghc-doc/html/libraries/base-4.8.2.0/Data-Maybe.html#v:Just">Just</a></code> that element, or <code><a href="file:///usr/share/doc/ghc-doc/html/libraries/base-4.8.2.0/Data-Maybe.html#v:Nothing">Nothing</a></code> for an empty stack.</p></div></div><div class="top"><p class="src"><a name="v:index" class="def">index</a> :: <a href="XMonad-StackSet.html#t:StackSet">StackSet</a> i l a s sd -&gt; [a] <a href="src/XMonad-StackSet.html#index" class="link">Source</a></p><div class="doc"><p><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.</p></div></div><div class="top"><p class="src"><a name="v:integrate" class="def">integrate</a> :: <a href="XMonad-StackSet.html#t:Stack">Stack</a> a -&gt; [a] <a href="src/XMonad-StackSet.html#integrate" class="link">Source</a></p><div class="doc"><p><em>O(n)</em>. Flatten a <code><a href="XMonad-StackSet.html#t:Stack">Stack</a></code> into a list.</p></div></div><div class="top"><p class="src"><a name="v:integrate-39-" class="def">integrate'</a> :: <a href="file:///usr/share/doc/ghc-doc/html/libraries/base-4.8.2.0/Data-Maybe.html#t:Maybe">Maybe</a> (<a href="XMonad-StackSet.html#t:Stack">Stack</a> a) -&gt; [a] <a href="src/XMonad-StackSet.html#integrate%27" class="link">Source</a></p><div class="doc"><p><em>O(n)</em> Flatten a possibly empty stack into a list.</p></div></div><div class="top"><p class="src"><a name="v:differentiate" class="def">differentiate</a> :: [a] -&gt; <a href="file:///usr/share/doc/ghc-doc/html/libraries/base-4.8.2.0/Data-Maybe.html#t:Maybe">Maybe</a> (<a href="XMonad-StackSet.html#t:Stack">Stack</a> a) <a href="src/XMonad-StackSet.html#differentiate" class="link">Source</a></p><div class="doc"><p><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.</p></div></div><div class="top"><p class="src"><a name="v:focusUp" class="def">focusUp</a> :: <a href="XMonad-StackSet.html#t:StackSet">StackSet</a> i l a s sd -&gt; <a href="XMonad-StackSet.html#t:StackSet">StackSet</a> i l a s sd <a href="src/XMonad-StackSet.html#focusUp" class="link">Source</a></p><div 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 <code><a href="file:///usr/share/doc/ghc-doc/html/libraries/base-4.8.2.0/GHC-OldList.html#v:cycle">cycle</a></code>
 on the current stack. The <code>master</code> 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 <code><a href="file:///usr/share/doc/ghc-doc/html/libraries/base-4.8.2.0/GHC-OldList.html#v:cycle">cycle</a></code> on
 the current stack.</p></div></div><div class="top"><p class="src"><a name="v:focusDown" class="def">focusDown</a> :: <a href="XMonad-StackSet.html#t:StackSet">StackSet</a> i l a s sd -&gt; <a href="XMonad-StackSet.html#t:StackSet">StackSet</a> i l a s sd <a href="src/XMonad-StackSet.html#focusDown" class="link">Source</a></p><div 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 <code><a href="file:///usr/share/doc/ghc-doc/html/libraries/base-4.8.2.0/GHC-OldList.html#v:cycle">cycle</a></code>
 on the current stack. The <code>master</code> 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 <code><a href="file:///usr/share/doc/ghc-doc/html/libraries/base-4.8.2.0/GHC-OldList.html#v:cycle">cycle</a></code> on
 the current stack.</p></div></div><div class="top"><p class="src"><a name="v:focusUp-39-" class="def">focusUp'</a> :: <a href="XMonad-StackSet.html#t:Stack">Stack</a> a -&gt; <a href="XMonad-StackSet.html#t:Stack">Stack</a> a <a href="src/XMonad-StackSet.html#focusUp%27" class="link">Source</a></p><div class="doc"><p>Variants of <code><a href="XMonad-StackSet.html#v:focusUp">focusUp</a></code> and <code><a href="XMonad-StackSet.html#v:focusDown">focusDown</a></code> that work on a
 <code><a href="XMonad-StackSet.html#t:Stack">Stack</a></code> rather than an entire <code><a href="XMonad-StackSet.html#t:StackSet">StackSet</a></code>.</p></div></div><div class="top"><p class="src"><a name="v:focusDown-39-" class="def">focusDown'</a> :: <a href="XMonad-StackSet.html#t:Stack">Stack</a> a -&gt; <a href="XMonad-StackSet.html#t:Stack">Stack</a> a <a href="src/XMonad-StackSet.html#focusDown%27" class="link">Source</a></p><div class="doc"><p>Variants of <code><a href="XMonad-StackSet.html#v:focusUp">focusUp</a></code> and <code><a href="XMonad-StackSet.html#v:focusDown">focusDown</a></code> that work on a
 <code><a href="XMonad-StackSet.html#t:Stack">Stack</a></code> rather than an entire <code><a href="XMonad-StackSet.html#t:StackSet">StackSet</a></code>.</p></div></div><div class="top"><p class="src"><a name="v:focusMaster" class="def">focusMaster</a> :: <a href="XMonad-StackSet.html#t:StackSet">StackSet</a> i l a s sd -&gt; <a href="XMonad-StackSet.html#t:StackSet">StackSet</a> i l a s sd <a href="src/XMonad-StackSet.html#focusMaster" class="link">Source</a></p><div class="doc"><p><em>O(s)</em>. Set focus to the master window.</p></div></div><div class="top"><p class="src"><a name="v:focusWindow" class="def">focusWindow</a> :: (<a href="file:///usr/share/doc/ghc-doc/html/libraries/base-4.8.2.0/Data-Eq.html#t:Eq">Eq</a> s, <a href="file:///usr/share/doc/ghc-doc/html/libraries/base-4.8.2.0/Data-Eq.html#t:Eq">Eq</a> a, <a href="file:///usr/share/doc/ghc-doc/html/libraries/base-4.8.2.0/Data-Eq.html#t:Eq">Eq</a> i) =&gt; a -&gt; <a href="XMonad-StackSet.html#t:StackSet">StackSet</a> i l a s sd -&gt; <a href="XMonad-StackSet.html#t:StackSet">StackSet</a> i l a s sd <a href="src/XMonad-StackSet.html#focusWindow" class="link">Source</a></p><div class="doc"><p><em>O(1) on current window, O(n) in general</em>. Focus the window <code>w</code>,
 and set its workspace as current.</p></div></div><div class="top"><p class="src"><a name="v:tagMember" class="def">tagMember</a> :: <a href="file:///usr/share/doc/ghc-doc/html/libraries/base-4.8.2.0/Data-Eq.html#t:Eq">Eq</a> i =&gt; i -&gt; <a href="XMonad-StackSet.html#t:StackSet">StackSet</a> i l a s sd -&gt; <a href="file:///usr/share/doc/ghc-doc/html/libraries/base-4.8.2.0/Data-Bool.html#t:Bool">Bool</a> <a href="src/XMonad-StackSet.html#tagMember" class="link">Source</a></p><div class="doc"><p>Is the given tag present in the <code><a href="XMonad-StackSet.html#t:StackSet">StackSet</a></code>?</p></div></div><div class="top"><p class="src"><a name="v:renameTag" class="def">renameTag</a> :: <a href="file:///usr/share/doc/ghc-doc/html/libraries/base-4.8.2.0/Data-Eq.html#t:Eq">Eq</a> i =&gt; i -&gt; i -&gt; <a href="XMonad-StackSet.html#t:StackSet">StackSet</a> i l a s sd -&gt; <a href="XMonad-StackSet.html#t:StackSet">StackSet</a> i l a s sd <a href="src/XMonad-StackSet.html#renameTag" class="link">Source</a></p><div class="doc"><p>Rename a given tag if present in the <code><a href="XMonad-StackSet.html#t:StackSet">StackSet</a></code>.</p></div></div><div class="top"><p class="src"><a name="v:ensureTags" class="def">ensureTags</a> :: <a href="file:///usr/share/doc/ghc-doc/html/libraries/base-4.8.2.0/Data-Eq.html#t:Eq">Eq</a> i =&gt; l -&gt; [i] -&gt; <a href="XMonad-StackSet.html#t:StackSet">StackSet</a> i l a s sd -&gt; <a href="XMonad-StackSet.html#t:StackSet">StackSet</a> i l a s sd <a href="src/XMonad-StackSet.html#ensureTags" class="link">Source</a></p><div class="doc"><p>Ensure that a given set of workspace tags is present by renaming
 existing workspaces and/or creating new hidden workspaces as
 necessary.</p></div></div><div class="top"><p class="src"><a name="v:member" class="def">member</a> :: <a href="file:///usr/share/doc/ghc-doc/html/libraries/base-4.8.2.0/Data-Eq.html#t:Eq">Eq</a> a =&gt; a -&gt; <a href="XMonad-StackSet.html#t:StackSet">StackSet</a> i l a s sd -&gt; <a href="file:///usr/share/doc/ghc-doc/html/libraries/base-4.8.2.0/Data-Bool.html#t:Bool">Bool</a> <a href="src/XMonad-StackSet.html#member" class="link">Source</a></p><div class="doc"><p><em>O(n)</em>. Is a window in the <code><a href="XMonad-StackSet.html#t:StackSet">StackSet</a></code>?</p></div></div><div class="top"><p class="src"><a name="v:findTag" class="def">findTag</a> :: <a href="file:///usr/share/doc/ghc-doc/html/libraries/base-4.8.2.0/Data-Eq.html#t:Eq">Eq</a> a =&gt; a -&gt; <a href="XMonad-StackSet.html#t:StackSet">StackSet</a> i l a s sd -&gt; <a href="file:///usr/share/doc/ghc-doc/html/libraries/base-4.8.2.0/Data-Maybe.html#t:Maybe">Maybe</a> i <a href="src/XMonad-StackSet.html#findTag" class="link">Source</a></p><div class="doc"><p><em>O(1) on current window, O(n) in general</em>.
 Return <code><a href="file:///usr/share/doc/ghc-doc/html/libraries/base-4.8.2.0/Data-Maybe.html#v:Just">Just</a></code> the workspace tag of the given window, or <code><a href="file:///usr/share/doc/ghc-doc/html/libraries/base-4.8.2.0/Data-Maybe.html#v:Nothing">Nothing</a></code>
 if the window is not in the <code><a href="XMonad-StackSet.html#t:StackSet">StackSet</a></code>.</p></div></div><div class="top"><p class="src"><a name="v:mapWorkspace" class="def">mapWorkspace</a> :: (<a href="XMonad-StackSet.html#t:Workspace">Workspace</a> i l a -&gt; <a href="XMonad-StackSet.html#t:Workspace">Workspace</a> i l a) -&gt; <a href="XMonad-StackSet.html#t:StackSet">StackSet</a> i l a s sd -&gt; <a href="XMonad-StackSet.html#t:StackSet">StackSet</a> i l a s sd <a href="src/XMonad-StackSet.html#mapWorkspace" class="link">Source</a></p><div class="doc"><p>Map a function on all the workspaces in the <code><a href="XMonad-StackSet.html#t:StackSet">StackSet</a></code>.</p></div></div><div class="top"><p class="src"><a name="v:mapLayout" class="def">mapLayout</a> :: (l -&gt; l') -&gt; <a href="XMonad-StackSet.html#t:StackSet">StackSet</a> i l a s sd -&gt; <a href="XMonad-StackSet.html#t:StackSet">StackSet</a> i l' a s sd <a href="src/XMonad-StackSet.html#mapLayout" class="link">Source</a></p><div class="doc"><p>Map a function on all the layouts in the <code><a href="XMonad-StackSet.html#t:StackSet">StackSet</a></code>.</p></div></div><h1 id="g:8">Modifying the stackset</h1><div class="doc empty">&nbsp;</div><div class="top"><p class="src"><a name="v:insertUp" class="def">insertUp</a> :: <a href="file:///usr/share/doc/ghc-doc/html/libraries/base-4.8.2.0/Data-Eq.html#t:Eq">Eq</a> a =&gt; a -&gt; <a href="XMonad-StackSet.html#t:StackSet">StackSet</a> i l a s sd -&gt; <a href="XMonad-StackSet.html#t:StackSet">StackSet</a> i l a s sd <a href="src/XMonad-StackSet.html#insertUp" class="link">Source</a></p><div 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></div></div><div class="top"><p class="src"><a name="v:delete" class="def">delete</a> :: (<a href="file:///usr/share/doc/ghc-doc/html/libraries/base-4.8.2.0/Data-Ord.html#t:Ord">Ord</a> a, <a href="file:///usr/share/doc/ghc-doc/html/libraries/base-4.8.2.0/Data-Eq.html#t:Eq">Eq</a> s) =&gt; a -&gt; <a href="XMonad-StackSet.html#t:StackSet">StackSet</a> i l a s sd -&gt; <a href="XMonad-StackSet.html#t:StackSet">StackSet</a> i l a s sd <a href="src/XMonad-StackSet.html#delete" class="link">Source</a></p><div class="doc"><p><em>O(1) on current window, O(n) in general</em>. Delete window <code>w</code> if it exists.
 There are 4 cases to consider:</p><ul><li>delete on an <code><a href="file:///usr/share/doc/ghc-doc/html/libraries/base-4.8.2.0/Data-Maybe.html#v:Nothing">Nothing</a></code> 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 <code><a href="file:///usr/share/doc/ghc-doc/html/libraries/base-4.8.2.0/Data-Maybe.html#v:Nothing">Nothing</a></code></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></div></div><div class="top"><p class="src"><a name="v:delete-39-" class="def">delete'</a> :: (<a href="file:///usr/share/doc/ghc-doc/html/libraries/base-4.8.2.0/Data-Eq.html#t:Eq">Eq</a> a, <a href="file:///usr/share/doc/ghc-doc/html/libraries/base-4.8.2.0/Data-Eq.html#t:Eq">Eq</a> s) =&gt; a -&gt; <a href="XMonad-StackSet.html#t:StackSet">StackSet</a> i l a s sd -&gt; <a href="XMonad-StackSet.html#t:StackSet">StackSet</a> i l a s sd <a href="src/XMonad-StackSet.html#delete%27" class="link">Source</a></p><div class="doc"><p>Only temporarily remove the window from the stack, thereby not destroying special
 information saved in the <code>Stackset</code></p></div></div><div class="top"><p class="src"><a name="v:filter" class="def">filter</a> :: (a -&gt; <a href="file:///usr/share/doc/ghc-doc/html/libraries/base-4.8.2.0/Data-Bool.html#t:Bool">Bool</a>) -&gt; <a href="XMonad-StackSet.html#t:Stack">Stack</a> a -&gt; <a href="file:///usr/share/doc/ghc-doc/html/libraries/base-4.8.2.0/Data-Maybe.html#t:Maybe">Maybe</a> (<a href="XMonad-StackSet.html#t:Stack">Stack</a> a) <a href="src/XMonad-StackSet.html#filter" class="link">Source</a></p><div class="doc"><p><em>O(n)</em>. 'filter p s' returns the elements of <code>s</code> such that <code>p</code> evaluates to
 <code><a href="file:///usr/share/doc/ghc-doc/html/libraries/base-4.8.2.0/Data-Bool.html#v:True">True</a></code>.  Order is preserved, and focus moves as described for <code><a href="XMonad-StackSet.html#v:delete">delete</a></code>.</p></div></div><h1 id="g:9">Setting the master window</h1><div class="doc empty">&nbsp;</div><div class="top"><p class="src"><a name="v:swapUp" class="def">swapUp</a> :: <a href="XMonad-StackSet.html#t:StackSet">StackSet</a> i l a s sd -&gt; <a href="XMonad-StackSet.html#t:StackSet">StackSet</a> i l a s sd <a href="src/XMonad-StackSet.html#swapUp" class="link">Source</a></p><div 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 <code><a href="file:///usr/share/doc/ghc-doc/html/libraries/base-4.8.2.0/GHC-OldList.html#v:cycle">cycle</a></code>
 on the current stack. The <code>master</code> 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 <code><a href="file:///usr/share/doc/ghc-doc/html/libraries/base-4.8.2.0/GHC-OldList.html#v:cycle">cycle</a></code> on
 the current stack.</p></div></div><div class="top"><p class="src"><a name="v:swapDown" class="def">swapDown</a> :: <a href="XMonad-StackSet.html#t:StackSet">StackSet</a> i l a s sd -&gt; <a href="XMonad-StackSet.html#t:StackSet">StackSet</a> i l a s sd <a href="src/XMonad-StackSet.html#swapDown" class="link">Source</a></p><div 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 <code><a href="file:///usr/share/doc/ghc-doc/html/libraries/base-4.8.2.0/GHC-OldList.html#v:cycle">cycle</a></code>
 on the current stack. The <code>master</code> 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 <code><a href="file:///usr/share/doc/ghc-doc/html/libraries/base-4.8.2.0/GHC-OldList.html#v:cycle">cycle</a></code> on
 the current stack.</p></div></div><div class="top"><p class="src"><a name="v:swapMaster" class="def">swapMaster</a> :: <a href="XMonad-StackSet.html#t:StackSet">StackSet</a> i l a s sd -&gt; <a href="XMonad-StackSet.html#t:StackSet">StackSet</a> i l a s sd <a href="src/XMonad-StackSet.html#swapMaster" class="link">Source</a></p><div class="doc"><p><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.</p></div></div><div class="top"><p class="src"><a name="v:shiftMaster" class="def">shiftMaster</a> :: <a href="XMonad-StackSet.html#t:StackSet">StackSet</a> i l a s sd -&gt; <a href="XMonad-StackSet.html#t:StackSet">StackSet</a> i l a s sd <a href="src/XMonad-StackSet.html#shiftMaster" class="link">Source</a></p><div class="doc"><p><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.</p></div></div><div class="top"><p class="src"><a name="v:modify" class="def">modify</a> :: <a href="file:///usr/share/doc/ghc-doc/html/libraries/base-4.8.2.0/Data-Maybe.html#t:Maybe">Maybe</a> (<a href="XMonad-StackSet.html#t:Stack">Stack</a> a) -&gt; (<a href="XMonad-StackSet.html#t:Stack">Stack</a> a -&gt; <a href="file:///usr/share/doc/ghc-doc/html/libraries/base-4.8.2.0/Data-Maybe.html#t:Maybe">Maybe</a> (<a href="XMonad-StackSet.html#t:Stack">Stack</a> a)) -&gt; <a href="XMonad-StackSet.html#t:StackSet">StackSet</a> i l a s sd -&gt; <a href="XMonad-StackSet.html#t:StackSet">StackSet</a> i l a s sd <a href="src/XMonad-StackSet.html#modify" class="link">Source</a></p><div class="doc"><p>Apply a function, and a default value for <code><a href="file:///usr/share/doc/ghc-doc/html/libraries/base-4.8.2.0/Data-Maybe.html#v:Nothing">Nothing</a></code>, to modify the current stack.</p></div></div><div class="top"><p class="src"><a name="v:modify-39-" class="def">modify'</a> :: (<a href="XMonad-StackSet.html#t:Stack">Stack</a> a -&gt; <a href="XMonad-StackSet.html#t:Stack">Stack</a> a) -&gt; <a href="XMonad-StackSet.html#t:StackSet">StackSet</a> i l a s sd -&gt; <a href="XMonad-StackSet.html#t:StackSet">StackSet</a> i l a s sd <a href="src/XMonad-StackSet.html#modify%27" class="link">Source</a></p><div class="doc"><p>Apply a function to modify the current stack if it isn't empty, and we don't
  want to empty it.</p></div></div><div class="top"><p class="src"><a name="v:float" class="def">float</a> :: <a href="file:///usr/share/doc/ghc-doc/html/libraries/base-4.8.2.0/Data-Ord.html#t:Ord">Ord</a> a =&gt; a -&gt; <a href="XMonad-StackSet.html#t:RationalRect">RationalRect</a> -&gt; <a href="XMonad-StackSet.html#t:StackSet">StackSet</a> i l a s sd -&gt; <a href="XMonad-StackSet.html#t:StackSet">StackSet</a> i l a s sd <a href="src/XMonad-StackSet.html#float" class="link">Source</a></p><div class="doc"><p>Given a window, and its preferred rectangle, set it as floating
 A floating window should already be managed by the <code><a href="XMonad-StackSet.html#t:StackSet">StackSet</a></code>.</p></div></div><div class="top"><p class="src"><a name="v:sink" class="def">sink</a> :: <a href="file:///usr/share/doc/ghc-doc/html/libraries/base-4.8.2.0/Data-Ord.html#t:Ord">Ord</a> a =&gt; a -&gt; <a href="XMonad-StackSet.html#t:StackSet">StackSet</a> i l a s sd -&gt; <a href="XMonad-StackSet.html#t:StackSet">StackSet</a> i l a s sd <a href="src/XMonad-StackSet.html#sink" class="link">Source</a></p><div class="doc"><p>Clear the floating status of a window</p></div></div><h1 id="g:10">Composite operations</h1><div class="doc empty">&nbsp;</div><div class="top"><p class="src"><a name="v:shift" class="def">shift</a> :: (<a href="file:///usr/share/doc/ghc-doc/html/libraries/base-4.8.2.0/Data-Ord.html#t:Ord">Ord</a> a, <a href="file:///usr/share/doc/ghc-doc/html/libraries/base-4.8.2.0/Data-Eq.html#t:Eq">Eq</a> s, <a href="file:///usr/share/doc/ghc-doc/html/libraries/base-4.8.2.0/Data-Eq.html#t:Eq">Eq</a> i) =&gt; i -&gt; <a href="XMonad-StackSet.html#t:StackSet">StackSet</a> i l a s sd -&gt; <a href="XMonad-StackSet.html#t:StackSet">StackSet</a> i l a s sd <a href="src/XMonad-StackSet.html#shift" class="link">Source</a></p><div class="doc"><p><em>O(w)</em>. shift. Move the focused element of the current stack to stack
 <code>n</code>, 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.</p></div></div><div class="top"><p class="src"><a name="v:shiftWin" class="def">shiftWin</a> :: (<a href="file:///usr/share/doc/ghc-doc/html/libraries/base-4.8.2.0/Data-Ord.html#t:Ord">Ord</a> a, <a href="file:///usr/share/doc/ghc-doc/html/libraries/base-4.8.2.0/Data-Eq.html#t:Eq">Eq</a> a, <a href="file:///usr/share/doc/ghc-doc/html/libraries/base-4.8.2.0/Data-Eq.html#t:Eq">Eq</a> s, <a href="file:///usr/share/doc/ghc-doc/html/libraries/base-4.8.2.0/Data-Eq.html#t:Eq">Eq</a> i) =&gt; i -&gt; a -&gt; <a href="XMonad-StackSet.html#t:StackSet">StackSet</a> i l a s sd -&gt; <a href="XMonad-StackSet.html#t:StackSet">StackSet</a> i l a s sd <a href="src/XMonad-StackSet.html#shiftWin" class="link">Source</a></p><div class="doc"><p><em>O(n)</em>. shiftWin. Searches for the specified window <code>w</code> on all workspaces
 of the stackSet and moves it to stack <code>n</code>, 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.</p></div></div><div class="top"><p class="src"><a name="v:abort" class="def">abort</a> :: <a href="file:///usr/share/doc/ghc-doc/html/libraries/base-4.8.2.0/Data-String.html#t:String">String</a> -&gt; a <a href="src/XMonad-StackSet.html#abort" class="link">Source</a></p><div class="doc"><p>this function indicates to catch that an error is expected</p></div></div></div></div><div id="footer"><p>Produced by <a href="http://www.haskell.org/haddock/">Haddock</a> version 2.16.1</p></div></body></html>