xmonad-contrib-0.11.2: Third party extensions for xmonad

Portabilityunportable
Stabilityunstable
MaintainerBen Boeckel <mathstuf@gmail.com>
Safe HaskellNone

XMonad.Hooks.ToggleHook

Contents

Description

Hook and keybindings for toggling hook behavior.

Synopsis

Usage

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.

Actions

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

Queries

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 dynamicLogWithPP. willHookNextPP and willHookAllNewPP should be added to the ppExtras field of your 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.