| xmonad-contrib-0.8.1: Third party extensions for xmonad | Source code | Contents | Index

XMonad.Hooks.DynamicHooks

Portability | unportable
Stability | unstable
Maintainer | Braden.Shepherdson@gmail.com

Contents

Usage

Description
One-shot and permanent ManageHooks that can be updated at runtime.
Synopsis

initDynamicHooks :: IO (IORef DynamicHooks)
dynamicMasterHook :: IORef DynamicHooks -> ManageHook
addDynamicHook :: IORef DynamicHooks -> ManageHook -> X ()
updateDynamicHook :: IORef DynamicHooks -> (ManageHook -> ManageHook) -> X ()
oneShotHook :: IORef DynamicHooks -> Query Bool -> ManageHook -> X ()

Usage

Provides two new kinds of ManageHooks that can be defined at runtime.

- One-shot ManageHooks that are deleted after they execute.
- Permanent ManageHooks (unless you want to destroy them)

Note that you will lose all dynamically defined `ManageHook`s when you `mod+q`! If you want them to last, you should create them as normal in your `xmonad.hs`.

First, you must execute `initDynamicHooks` from main in your `xmonad.hs`:

     dynHooksRef <- initDynamicHooks

and then pass this value to the other functions in this module.

You also need to add the base `ManageHook`:

     xmonad { manageHook = myManageHook <+> dynamicMasterHook dynHooksRef }

You must include this `dynHooksRef` value when using the functions in this module:

     xmonad { keys = myKeys `Data.Map.union` Data.Map.fromList
                       [((modMask conf, xK_i), oneShotHook dynHooksRef
                        "FFlaunchHook" (className =? "firefox") (doShift "3")
                        >> spawn "firefox")
                       ,((modMask conf, xK_u), addDynamicHook dynHooksRef
                         (className =? "example" --> doFloat))
                       ,((modMask conf, xK_y), updatePermanentHook dynHooksRef
                         (const idHook))) ]  -- resets the permanent hook.

initDynamicHooks :: IO (IORef DynamicHooks) | Source

Creates the `IORef` that stores the dynamically created `ManageHook`s.

dynamicMasterHook :: IORef DynamicHooks -> ManageHook | Source

Master `ManageHook` that must be in your `xmonad.hs` `ManageHook`.

addDynamicHook :: IORef DynamicHooks -> ManageHook -> X () | Source

Appends the given `ManageHook` to the permanent dynamic `ManageHook`.

updateDynamicHook :: IORef DynamicHooks -> (ManageHook -> ManageHook) -> X () | Source

Modifies the permanent `ManageHook` with an arbitrary function.

oneShotHook :: IORef DynamicHooks -> Query Bool -> ManageHook -> X () | Source

Creates a one-shot `ManageHook`. Note that you have to specify the two parts of the `ManageHook` separately. Where you would usually write:

     className =? "example" --> doFloat

you must call `oneShotHook` as

     oneShotHook dynHooksRef (className =? "example) doFloat

Produced by Haddock version 2.4.2