xmonad-contrib- Community-maintained extensions for xmonad
CopyrightBen Boeckel <mathstuf@gmail.com>
LicenseBSD-style (see LICENSE)
MaintainerBen Boeckel <mathstuf@gmail.com>
Safe HaskellSafe-Inferred



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.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 def

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

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

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 -> ManageHook Source #

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 Bool Source #

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

willHookNext :: String -> X Bool Source #

Whether the next window will trigger the hook name.

willHookAllNew :: String -> X Bool Source #

Whether new windows will trigger the hook name.

Status bar utilities

The following functions are used to display the current state of hookNext and hookAllNew in your XMonad.Hooks.StatusBar. willHookNextPP and willHookAllNewPP should be added to the ppExtras field of your XMonad.Hooks.StatusBar.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.