<!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.Hooks.DynamicHooks</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-Hooks-DynamicHooks.html");}; //]]> </script></head><body><div id="package-header"><ul class="links" id="page-menu"><li><a href="src/XMonad-Hooks-DynamicHooks.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.9.2: 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>Braden.Shepherdson@gmail.com</td></tr></table><p class="caption">XMonad.Hooks.DynamicHooks</p></div><div id="table-of-contents"><p class="caption">Contents</p><ul><li><a href="#g:1">Usage </a></li></ul></div><div id="description"><p class="caption">Description</p><div class="doc"><p>One-shot and permanent ManageHooks that can be updated at runtime. </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"><a href="#v:initDynamicHooks">initDynamicHooks</a> :: <a href="/usr/share/doc/ghc/html/libraries/base-4.3.1.0/System-IO.html#t:IO">IO</a> (<a href="/usr/share/doc/ghc/html/libraries/base-4.3.1.0/Data-IORef.html#t:IORef">IORef</a> DynamicHooks)</li><li class="src short"><a href="#v:dynamicMasterHook">dynamicMasterHook</a> :: <a href="/usr/share/doc/ghc/html/libraries/base-4.3.1.0/Data-IORef.html#t:IORef">IORef</a> DynamicHooks -> ManageHook</li><li class="src short"><a href="#v:addDynamicHook">addDynamicHook</a> :: <a href="/usr/share/doc/ghc/html/libraries/base-4.3.1.0/Data-IORef.html#t:IORef">IORef</a> DynamicHooks -> ManageHook -> X <a href="/usr/share/doc/ghc/html/libraries/ghc-prim-0.2.0.0/GHC-Unit.html#t:-40--41-">()</a></li><li class="src short"><a href="#v:updateDynamicHook">updateDynamicHook</a> :: <a href="/usr/share/doc/ghc/html/libraries/base-4.3.1.0/Data-IORef.html#t:IORef">IORef</a> DynamicHooks -> (ManageHook -> ManageHook) -> X <a href="/usr/share/doc/ghc/html/libraries/ghc-prim-0.2.0.0/GHC-Unit.html#t:-40--41-">()</a></li><li class="src short"><a href="#v:oneShotHook">oneShotHook</a> :: <a href="/usr/share/doc/ghc/html/libraries/base-4.3.1.0/Data-IORef.html#t:IORef">IORef</a> DynamicHooks -> Query <a href="/usr/share/doc/ghc/html/libraries/base-4.3.1.0/Data-Bool.html#t:Bool">Bool</a> -> ManageHook -> X <a href="/usr/share/doc/ghc/html/libraries/ghc-prim-0.2.0.0/GHC-Unit.html#t:-40--41-">()</a></li></ul></div><div id="interface"><h1 id="g:1">Usage </h1><div class="doc"><p>Provides two new kinds of <code>ManageHooks</code> that can be defined at runtime. </p><ul><li> One-shot <code>ManageHooks</code> that are deleted after they execute. </li><li> Permanent <code>ManageHooks</code> (unless you want to destroy them) </li></ul><p>Note that you will lose all dynamically defined <code>ManageHook</code>s when you <code>mod+q</code>! If you want them to last, you should create them as normal in your <code>xmonad.hs</code>. </p><p>First, you must execute <code><a href="XMonad-Hooks-DynamicHooks.html#v:initDynamicHooks">initDynamicHooks</a></code> from <code>main</code> in your <code>xmonad.hs</code>: </p><pre> dynHooksRef <- initDynamicHooks </pre><p>and then pass this value to the other functions in this module. </p><p>You also need to add the base <code>ManageHook</code>: </p><pre> xmonad { manageHook = myManageHook <+> dynamicMasterHook dynHooksRef } </pre><p>You must include this <code>dynHooksRef</code> value when using the functions in this module: </p><pre> xmonad { keys = myKeys `Data.Map.union` Data.Map.fromList [((modm, xK_i), oneShotHook dynHooksRef "FFlaunchHook" (className =? "firefox") (doShift "3") >> spawn "firefox") ,((modm, xK_u), addDynamicHook dynHooksRef (className =? "example" --> doFloat)) ,((modm, xK_y), updatePermanentHook dynHooksRef (const idHook))) ] -- resets the permanent hook. </pre></div><div class="top"><p class="src"><a name="v:initDynamicHooks" class="def">initDynamicHooks</a> :: <a href="/usr/share/doc/ghc/html/libraries/base-4.3.1.0/System-IO.html#t:IO">IO</a> (<a href="/usr/share/doc/ghc/html/libraries/base-4.3.1.0/Data-IORef.html#t:IORef">IORef</a> DynamicHooks)<a href="src/XMonad-Hooks-DynamicHooks.html#initDynamicHooks" class="link">Source</a></p><div class="doc"><p>Creates the <code><a href="/usr/share/doc/ghc/html/libraries/base-4.3.1.0/Data-IORef.html#t:IORef">IORef</a></code> that stores the dynamically created <code>ManageHook</code>s. </p></div></div><div class="top"><p class="src"><a name="v:dynamicMasterHook" class="def">dynamicMasterHook</a> :: <a href="/usr/share/doc/ghc/html/libraries/base-4.3.1.0/Data-IORef.html#t:IORef">IORef</a> DynamicHooks -> ManageHook<a href="src/XMonad-Hooks-DynamicHooks.html#dynamicMasterHook" class="link">Source</a></p><div class="doc"><p>Master <code>ManageHook</code> that must be in your <code>xmonad.hs</code> <code>ManageHook</code>. </p></div></div><div class="top"><p class="src"><a name="v:addDynamicHook" class="def">addDynamicHook</a> :: <a href="/usr/share/doc/ghc/html/libraries/base-4.3.1.0/Data-IORef.html#t:IORef">IORef</a> DynamicHooks -> ManageHook -> X <a href="/usr/share/doc/ghc/html/libraries/ghc-prim-0.2.0.0/GHC-Unit.html#t:-40--41-">()</a><a href="src/XMonad-Hooks-DynamicHooks.html#addDynamicHook" class="link">Source</a></p><div class="doc"><p>Appends the given <code>ManageHook</code> to the permanent dynamic <code>ManageHook</code>. </p></div></div><div class="top"><p class="src"><a name="v:updateDynamicHook" class="def">updateDynamicHook</a> :: <a href="/usr/share/doc/ghc/html/libraries/base-4.3.1.0/Data-IORef.html#t:IORef">IORef</a> DynamicHooks -> (ManageHook -> ManageHook) -> X <a href="/usr/share/doc/ghc/html/libraries/ghc-prim-0.2.0.0/GHC-Unit.html#t:-40--41-">()</a><a href="src/XMonad-Hooks-DynamicHooks.html#updateDynamicHook" class="link">Source</a></p><div class="doc"><p>Modifies the permanent <code>ManageHook</code> with an arbitrary function. </p></div></div><div class="top"><p class="src"><a name="v:oneShotHook" class="def">oneShotHook</a> :: <a href="/usr/share/doc/ghc/html/libraries/base-4.3.1.0/Data-IORef.html#t:IORef">IORef</a> DynamicHooks -> Query <a href="/usr/share/doc/ghc/html/libraries/base-4.3.1.0/Data-Bool.html#t:Bool">Bool</a> -> ManageHook -> X <a href="/usr/share/doc/ghc/html/libraries/ghc-prim-0.2.0.0/GHC-Unit.html#t:-40--41-">()</a><a href="src/XMonad-Hooks-DynamicHooks.html#oneShotHook" class="link">Source</a></p><div class="doc"><p>Creates a one-shot <code>ManageHook</code>. Note that you have to specify the two parts of the <code>ManageHook</code> separately. Where you would usually write: </p><pre> className =? "example" --> doFloat </pre><p>you must call <code><a href="XMonad-Hooks-DynamicHooks.html#v:oneShotHook">oneShotHook</a></code> as </p><pre> oneShotHook dynHooksRef (className =? "example) doFloat </pre></div></div></div></div><div id="footer"><p>Produced by <a href="http://www.haskell.org/haddock/">Haddock</a> version 2.9.2</p></div></body></html>