Sophie

Sophie

distrib > Fedora > 18 > i386 > by-pkgid > 16551e78563a5b49ff9624ee1c8b8101 > files > 822

ghc-xmonad-contrib-devel-0.11-1.1.fc18.i686.rpm

<!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.Layout.IndependentScreens</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-Layout-IndependentScreens.html");};
//]]>
</script></head><body><div id="package-header"><ul class="links" id="page-menu"><li><a href="src/XMonad-Layout-IndependentScreens.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-contrib-0.11: Third party extensions for xmonad</p></div><div id="content"><div id="module-header"><table class="info"><tr><th>Portability</th><td>unportable</td></tr><tr><th>Stability</th><td>unstable</td></tr><tr><th>Maintainer</th><td>&lt;daniel@wagner-home.com&gt;</td></tr><tr><th>Safe Haskell</th><td>Safe-Infered</td></tr></table><p class="caption">XMonad.Layout.IndependentScreens</p></div><div id="table-of-contents"><p class="caption">Contents</p><ul><li><a href="#g:1">Usage
</a></li><li><a href="#g:2">Converting between virtual and physical workspaces
</a></li></ul></div><div id="description"><p class="caption">Description</p><div class="doc"><p>Utility functions for simulating independent sets of workspaces on
 each screen (like dwm's workspace model), using internal tags to
 distinguish workspaces associated with each screen.
</p></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">type</span> <a href="#t:VirtualWorkspace">VirtualWorkspace</a> = <a href="/usr/share/doc/ghc/html/libraries/xmonad-0.11/XMonad-Core.html#t:WorkspaceId">WorkspaceId</a></li><li class="src short"><span class="keyword">type</span> <a href="#t:PhysicalWorkspace">PhysicalWorkspace</a> = <a href="/usr/share/doc/ghc/html/libraries/xmonad-0.11/XMonad-Core.html#t:WorkspaceId">WorkspaceId</a></li><li class="src short"><a href="#v:workspaces-39-">workspaces'</a> ::  <a href="/usr/share/doc/ghc/html/libraries/xmonad-0.11/XMonad-Core.html#t:XConfig">XConfig</a> l -&gt; [<a href="XMonad-Layout-IndependentScreens.html#t:VirtualWorkspace">VirtualWorkspace</a>]</li><li class="src short"><a href="#v:withScreens">withScreens</a> :: <a href="/usr/share/doc/ghc/html/libraries/xmonad-0.11/XMonad-Core.html#t:ScreenId">ScreenId</a> -&gt; [<a href="XMonad-Layout-IndependentScreens.html#t:VirtualWorkspace">VirtualWorkspace</a>] -&gt; [<a href="XMonad-Layout-IndependentScreens.html#t:PhysicalWorkspace">PhysicalWorkspace</a>]</li><li class="src short"><a href="#v:onCurrentScreen">onCurrentScreen</a> ::  (<a href="XMonad-Layout-IndependentScreens.html#t:VirtualWorkspace">VirtualWorkspace</a> -&gt; <a href="/usr/share/doc/ghc/html/libraries/xmonad-0.11/XMonad-Core.html#t:WindowSet">WindowSet</a> -&gt; a) -&gt; <a href="XMonad-Layout-IndependentScreens.html#t:PhysicalWorkspace">PhysicalWorkspace</a> -&gt; <a href="/usr/share/doc/ghc/html/libraries/xmonad-0.11/XMonad-Core.html#t:WindowSet">WindowSet</a> -&gt; a</li><li class="src short"><a href="#v:marshallPP">marshallPP</a> :: <a href="/usr/share/doc/ghc/html/libraries/xmonad-0.11/XMonad-Core.html#t:ScreenId">ScreenId</a> -&gt; <a href="XMonad-Hooks-DynamicLog.html#t:PP">PP</a> -&gt; <a href="XMonad-Hooks-DynamicLog.html#t:PP">PP</a></li><li class="src short"><a href="#v:countScreens">countScreens</a> :: (<a href="/usr/share/doc/ghc/html/libraries/transformers-0.3.0.0/Control-Monad-IO-Class.html#t:MonadIO">MonadIO</a> m, <a href="/usr/share/doc/ghc/html/libraries/base-4.5.0.0/Prelude.html#t:Integral">Integral</a> i) =&gt; m i</li><li class="src short"><a href="#v:marshall">marshall</a> :: <a href="/usr/share/doc/ghc/html/libraries/xmonad-0.11/XMonad-Core.html#t:ScreenId">ScreenId</a> -&gt; <a href="XMonad-Layout-IndependentScreens.html#t:VirtualWorkspace">VirtualWorkspace</a> -&gt; <a href="XMonad-Layout-IndependentScreens.html#t:PhysicalWorkspace">PhysicalWorkspace</a></li><li class="src short"><a href="#v:unmarshall">unmarshall</a> :: <a href="XMonad-Layout-IndependentScreens.html#t:PhysicalWorkspace">PhysicalWorkspace</a> -&gt; (<a href="/usr/share/doc/ghc/html/libraries/xmonad-0.11/XMonad-Core.html#t:ScreenId">ScreenId</a>, <a href="XMonad-Layout-IndependentScreens.html#t:VirtualWorkspace">VirtualWorkspace</a>)</li><li class="src short"><a href="#v:unmarshallS">unmarshallS</a> :: <a href="XMonad-Layout-IndependentScreens.html#t:PhysicalWorkspace">PhysicalWorkspace</a> -&gt; <a href="/usr/share/doc/ghc/html/libraries/xmonad-0.11/XMonad-Core.html#t:ScreenId">ScreenId</a></li><li class="src short"><a href="#v:unmarshallW">unmarshallW</a> :: <a href="XMonad-Layout-IndependentScreens.html#t:PhysicalWorkspace">PhysicalWorkspace</a> -&gt; <a href="XMonad-Layout-IndependentScreens.html#t:VirtualWorkspace">VirtualWorkspace</a></li><li class="src short"><a href="#v:marshallWindowSpace">marshallWindowSpace</a> :: <a href="/usr/share/doc/ghc/html/libraries/xmonad-0.11/XMonad-Core.html#t:ScreenId">ScreenId</a> -&gt; <a href="/usr/share/doc/ghc/html/libraries/xmonad-0.11/XMonad-Core.html#t:WindowSpace">WindowSpace</a> -&gt; <a href="/usr/share/doc/ghc/html/libraries/xmonad-0.11/XMonad-Core.html#t:WindowSpace">WindowSpace</a></li><li class="src short"><a href="#v:unmarshallWindowSpace">unmarshallWindowSpace</a> :: <a href="/usr/share/doc/ghc/html/libraries/xmonad-0.11/XMonad-Core.html#t:WindowSpace">WindowSpace</a> -&gt; <a href="/usr/share/doc/ghc/html/libraries/xmonad-0.11/XMonad-Core.html#t:WindowSpace">WindowSpace</a></li></ul></div><div id="interface"><h1 id="g:1">Usage
</h1><div class="doc"><p>You can use this module with the following in your <code>~/.xmonad/xmonad.hs</code>:
</p><pre> import XMonad.Layout.IndependentScreens
</pre><p>You can define your workspaces by calling <code>withScreens</code>:
</p><pre> myConfig = defaultConfig { workspaces = withScreens 2 [&quot;web&quot;, &quot;email&quot;, &quot;irc&quot;] }
</pre><p>This will create &quot;physical&quot; workspaces with distinct internal names for
 each (screen, virtual workspace) pair.
</p><p>Then edit any keybindings that use the list of workspaces or refer
 to specific workspace names.  In the default configuration, only
 the keybindings for changing workspace do this:
</p><pre> keyBindings conf = let m = modMask conf in fromList $
     {- lots of other keybindings -}
     [((m .|. modm, k), windows $ f i)
         | (i, k) &lt;- zip (XMonad.workspaces conf) [xK_1 .. xK_9]
         , (f, m) &lt;- [(W.greedyView, 0), (W.shift, shiftMask)]]
</pre><p>This should change to
</p><pre> keyBindings conf = let m = modMask conf in fromList $
     {- lots of other keybindings -}
     [((m .|. modm, k), windows $ onCurrentScreen f i)
         | (i, k) &lt;- zip (workspaces' conf) [xK_1 .. xK_9]
         , (f, m) &lt;- [(W.greedyView, 0), (W.shift, shiftMask)]]
</pre><p>In particular, the analogue of <code>XMonad.workspaces</code> is
 <code>workspaces'</code>, and you can use <code>onCurrentScreen</code> to convert functions
 of virtual workspaces to functions of physical workspaces, which work
 by marshalling the virtual workspace name and the currently focused
 screen into a physical workspace name.
</p></div><div class="top"><p class="src"><span class="keyword">type</span> <a name="t:VirtualWorkspace" class="def">VirtualWorkspace</a> = <a href="/usr/share/doc/ghc/html/libraries/xmonad-0.11/XMonad-Core.html#t:WorkspaceId">WorkspaceId</a><a href="src/XMonad-Layout-IndependentScreens.html#VirtualWorkspace" class="link">Source</a></p></div><div class="top"><p class="src"><span class="keyword">type</span> <a name="t:PhysicalWorkspace" class="def">PhysicalWorkspace</a> = <a href="/usr/share/doc/ghc/html/libraries/xmonad-0.11/XMonad-Core.html#t:WorkspaceId">WorkspaceId</a><a href="src/XMonad-Layout-IndependentScreens.html#PhysicalWorkspace" class="link">Source</a></p></div><div class="top"><p class="src"><a name="v:workspaces-39-" class="def">workspaces'</a> ::  <a href="/usr/share/doc/ghc/html/libraries/xmonad-0.11/XMonad-Core.html#t:XConfig">XConfig</a> l -&gt; [<a href="XMonad-Layout-IndependentScreens.html#t:VirtualWorkspace">VirtualWorkspace</a>]<a href="src/XMonad-Layout-IndependentScreens.html#workspaces%27" class="link">Source</a></p></div><div class="top"><p class="src"><a name="v:withScreens" class="def">withScreens</a><a href="src/XMonad-Layout-IndependentScreens.html#withScreens" class="link">Source</a></p><div class="subs arguments"><p class="caption">Arguments</p><table><tr><td class="src">:: <a href="/usr/share/doc/ghc/html/libraries/xmonad-0.11/XMonad-Core.html#t:ScreenId">ScreenId</a></td><td class="doc"><p>The number of screens to make workspaces for
</p></td></tr><tr><td class="src">-&gt; [<a href="XMonad-Layout-IndependentScreens.html#t:VirtualWorkspace">VirtualWorkspace</a>]</td><td class="doc"><p>The desired virtual workspace names
</p></td></tr><tr><td class="src">-&gt; [<a href="XMonad-Layout-IndependentScreens.html#t:PhysicalWorkspace">PhysicalWorkspace</a>]</td><td class="doc"><p>A list of all internal physical workspace names
</p></td></tr></table></div></div><div class="top"><p class="src"><a name="v:onCurrentScreen" class="def">onCurrentScreen</a> ::  (<a href="XMonad-Layout-IndependentScreens.html#t:VirtualWorkspace">VirtualWorkspace</a> -&gt; <a href="/usr/share/doc/ghc/html/libraries/xmonad-0.11/XMonad-Core.html#t:WindowSet">WindowSet</a> -&gt; a) -&gt; <a href="XMonad-Layout-IndependentScreens.html#t:PhysicalWorkspace">PhysicalWorkspace</a> -&gt; <a href="/usr/share/doc/ghc/html/libraries/xmonad-0.11/XMonad-Core.html#t:WindowSet">WindowSet</a> -&gt; a<a href="src/XMonad-Layout-IndependentScreens.html#onCurrentScreen" class="link">Source</a></p></div><div class="top"><p class="src"><a name="v:marshallPP" class="def">marshallPP</a> :: <a href="/usr/share/doc/ghc/html/libraries/xmonad-0.11/XMonad-Core.html#t:ScreenId">ScreenId</a> -&gt; <a href="XMonad-Hooks-DynamicLog.html#t:PP">PP</a> -&gt; <a href="XMonad-Hooks-DynamicLog.html#t:PP">PP</a><a href="src/XMonad-Layout-IndependentScreens.html#marshallPP" class="link">Source</a></p><div class="doc"><p>This turns a naive pretty-printer into one that is aware of the
 independent screens. That is, you can write your pretty printer to behave
 the way you want on virtual workspaces; this function will convert that
 pretty-printer into one that first filters out physical workspaces on other
 screens, then converts all the physical workspaces on this screen to their
 virtual names.
</p><p>For example, if you have handles <code>hLeft</code> and <code>hRight</code> for bars on the left and right screens, respectively, and <code>pp</code> is a pretty-printer function that takes a handle, you could write
</p><pre> logHook = let log screen handle = dynamicLogWithPP . marshallPP screen . pp $ handle
           in log 0 hLeft &gt;&gt; log 1 hRight
</pre></div></div><div class="top"><p class="src"><a name="v:countScreens" class="def">countScreens</a> :: (<a href="/usr/share/doc/ghc/html/libraries/transformers-0.3.0.0/Control-Monad-IO-Class.html#t:MonadIO">MonadIO</a> m, <a href="/usr/share/doc/ghc/html/libraries/base-4.5.0.0/Prelude.html#t:Integral">Integral</a> i) =&gt; m i<a href="src/XMonad-Layout-IndependentScreens.html#countScreens" class="link">Source</a></p><div class="doc"><p>In case you don't know statically how many screens there will be, you can call this in main before starting xmonad.  For example, part of my config reads
</p><pre> main = do
   nScreens &lt;- countScreens
   xmonad $ defaultConfig {
     ...
     workspaces = withScreens nScreens (workspaces defaultConfig),
     ...
     }
</pre></div></div><h1 id="g:2">Converting between virtual and physical workspaces
</h1><div class="doc"><p>You shouldn't need to use the functions below very much. They are used
 internally. However, in some cases, they may be useful, and so are exported
 just in case. In general, the &quot;marshall&quot; functions convert the convenient
 form (like &quot;web&quot;) you would like to use in your configuration file to the
 inconvenient form (like &quot;2_web&quot;) that xmonad uses internally. Similarly,
 the &quot;unmarshall&quot; functions convert in the other direction.
</p></div><div class="top"><p class="src"><a name="v:marshall" class="def">marshall</a> :: <a href="/usr/share/doc/ghc/html/libraries/xmonad-0.11/XMonad-Core.html#t:ScreenId">ScreenId</a> -&gt; <a href="XMonad-Layout-IndependentScreens.html#t:VirtualWorkspace">VirtualWorkspace</a> -&gt; <a href="XMonad-Layout-IndependentScreens.html#t:PhysicalWorkspace">PhysicalWorkspace</a><a href="src/XMonad-Layout-IndependentScreens.html#marshall" class="link">Source</a></p></div><div class="top"><p class="src"><a name="v:unmarshall" class="def">unmarshall</a> :: <a href="XMonad-Layout-IndependentScreens.html#t:PhysicalWorkspace">PhysicalWorkspace</a> -&gt; (<a href="/usr/share/doc/ghc/html/libraries/xmonad-0.11/XMonad-Core.html#t:ScreenId">ScreenId</a>, <a href="XMonad-Layout-IndependentScreens.html#t:VirtualWorkspace">VirtualWorkspace</a>)<a href="src/XMonad-Layout-IndependentScreens.html#unmarshall" class="link">Source</a></p></div><div class="top"><p class="src"><a name="v:unmarshallS" class="def">unmarshallS</a> :: <a href="XMonad-Layout-IndependentScreens.html#t:PhysicalWorkspace">PhysicalWorkspace</a> -&gt; <a href="/usr/share/doc/ghc/html/libraries/xmonad-0.11/XMonad-Core.html#t:ScreenId">ScreenId</a><a href="src/XMonad-Layout-IndependentScreens.html#unmarshallS" class="link">Source</a></p></div><div class="top"><p class="src"><a name="v:unmarshallW" class="def">unmarshallW</a> :: <a href="XMonad-Layout-IndependentScreens.html#t:PhysicalWorkspace">PhysicalWorkspace</a> -&gt; <a href="XMonad-Layout-IndependentScreens.html#t:VirtualWorkspace">VirtualWorkspace</a><a href="src/XMonad-Layout-IndependentScreens.html#unmarshallW" class="link">Source</a></p></div><div class="top"><p class="src"><a name="v:marshallWindowSpace" class="def">marshallWindowSpace</a> :: <a href="/usr/share/doc/ghc/html/libraries/xmonad-0.11/XMonad-Core.html#t:ScreenId">ScreenId</a> -&gt; <a href="/usr/share/doc/ghc/html/libraries/xmonad-0.11/XMonad-Core.html#t:WindowSpace">WindowSpace</a> -&gt; <a href="/usr/share/doc/ghc/html/libraries/xmonad-0.11/XMonad-Core.html#t:WindowSpace">WindowSpace</a><a href="src/XMonad-Layout-IndependentScreens.html#marshallWindowSpace" class="link">Source</a></p><div class="doc"><p>Convert the tag of the <code><a href="/usr/share/doc/ghc/html/libraries/xmonad-0.11/XMonad-Core.html#t:WindowSpace">WindowSpace</a></code> from a <code><a href="XMonad-Layout-IndependentScreens.html#t:VirtualWorkspace">VirtualWorkspace</a></code> to a <code><a href="XMonad-Layout-IndependentScreens.html#t:PhysicalWorkspace">PhysicalWorkspace</a></code>.
</p></div></div><div class="top"><p class="src"><a name="v:unmarshallWindowSpace" class="def">unmarshallWindowSpace</a> :: <a href="/usr/share/doc/ghc/html/libraries/xmonad-0.11/XMonad-Core.html#t:WindowSpace">WindowSpace</a> -&gt; <a href="/usr/share/doc/ghc/html/libraries/xmonad-0.11/XMonad-Core.html#t:WindowSpace">WindowSpace</a><a href="src/XMonad-Layout-IndependentScreens.html#unmarshallWindowSpace" class="link">Source</a></p><div class="doc"><p>Convert the tag of the <code><a href="/usr/share/doc/ghc/html/libraries/xmonad-0.11/XMonad-Core.html#t:WindowSpace">WindowSpace</a></code> from a <code><a href="XMonad-Layout-IndependentScreens.html#t:PhysicalWorkspace">PhysicalWorkspace</a></code> to a <code><a href="XMonad-Layout-IndependentScreens.html#t:VirtualWorkspace">VirtualWorkspace</a></code>.
</p></div></div></div></div><div id="footer"><p>Produced by <a href="http://www.haskell.org/haddock/">Haddock</a> version 2.10.0</p></div></body></html>