xmonad-contrib-0.10: Third party extensions for xmonad

MaintainerBen Boeckel <mathstuf@gmail.com>




Hook and keybindings for toggling hook behavior.



This module provides actions (that can be set as keybindings) to be able to cause hooks to be occur on a conditional basis.

You can use it by including the following in your ~/.xmonad/xmonad.hs:

 import XMonad.Hooks.ToggleHook

and adding 'toggleHook name hook' to your ManageHook where name is the name of the hook and hook is the hook to execute based on the state.

 myManageHook = toggleHook "float" doFloat <+> manageHook defaultConfig

Additionally, toggleHook' is provided to toggle between two hooks (rather than on/off).

 myManageHook = toggleHook' "oldfocus" (const id) W.focusWindow <+> manageHook defaultConfig

The hookNext and toggleHookNext functions can be used in key bindings to set whether the hook is applied or not.

 , ((modm, xK_e), toggleHookNext "float")

hookAllNew and toggleHookAllNew are similar but float all spawned windows until disabled again.

 , ((modm, xK_r), toggleHookAllNew "float")

The hook

toggleHook :: String -> ManageHook -> ManageHookSource

This ManageHook will selectively apply a hook as set by hookNext and hookAllNew.


hookNext :: String -> Bool -> X ()Source

hookNext name True arranges for the next spawned window to have the hook name applied, hookNext name False cancels it.

hookAllNew :: String -> Bool -> X ()Source

hookAllNew name True arranges for new windows to have the hook name applied, hookAllNew name False cancels it


willHook :: String -> X BoolSource

Query what will happen at the next ManageHook call for the hook name.

willHookNext :: String -> X BoolSource

Whether the next window will trigger the hook name.

willHookAllNew :: String -> X BoolSource

Whether new windows will trigger the hook name.

DynamicLog utilities

The following functions are used to display the current state of hookNext and hookAllNew in your XMonad.Hooks.DynamicLog.dynamicLogWithPP. willHookNextPP and willHookAllNewPP should be added to the XMonad.Hooks.DynamicLog.ppExtras field of your XMonad.Hooks.DynamicLog.PP.

Use runLogHook to refresh the output of your logHook, so that the effects of a hookNext/... will be visible immediately:

 , ((modm, xK_e), toggleHookNext "float" >> runLogHook)

The String -> String parameters to willHookNextPP and willHookAllNewPP will be applied to their output, you can use them to set the text color, etc., or you can just pass them id.