X.H.UrgencyHook: Generalize filterUrgencyHook to Query Bool

This commit is contained in:
Tomas Janousek
2021-02-15 17:53:30 +00:00
parent d49f7a49a2
commit 1b327a059a

View File

@@ -58,7 +58,7 @@ module XMonad.Hooks.UrgencyHook (
NoUrgencyHook(..), NoUrgencyHook(..),
BorderUrgencyHook(..), BorderUrgencyHook(..),
FocusHook(..), FocusHook(..),
filterUrgencyHook, filterUrgencyHook, filterUrgencyHook',
minutes, seconds, minutes, seconds,
-- * Stuff for developers: -- * Stuff for developers:
readUrgents, withUrgents, clearUrgents', readUrgents, withUrgents, clearUrgents',
@@ -72,6 +72,7 @@ module XMonad.Hooks.UrgencyHook (
import XMonad import XMonad
import qualified XMonad.StackSet as W import qualified XMonad.StackSet as W
import XMonad.Hooks.ManageHelpers (windowTag)
import XMonad.Util.Dzen (dzenWithArgs, seconds) import XMonad.Util.Dzen (dzenWithArgs, seconds)
import qualified XMonad.Util.ExtensibleState as XS import qualified XMonad.Util.ExtensibleState as XS
import XMonad.Util.NamedWindows (getName) import XMonad.Util.NamedWindows (getName)
@@ -537,9 +538,9 @@ instance UrgencyHook StdoutUrgencyHook where
-- --
-- > main = xmonad (withUrgencyHook (filterUrgencyHook ["NSP", "SP"]) def) -- > main = xmonad (withUrgencyHook (filterUrgencyHook ["NSP", "SP"]) def)
filterUrgencyHook :: [WorkspaceId] -> Window -> X () filterUrgencyHook :: [WorkspaceId] -> Window -> X ()
filterUrgencyHook skips w = do filterUrgencyHook skips = filterUrgencyHook' $ maybe False (`elem` skips) <$> windowTag
ws <- gets windowset
case W.findTag w ws of -- | 'filterUrgencyHook' that takes a generic 'Query' to select which windows
Just tag | tag `elem` skips -> do -- should never be marked urgent.
clearUrgents' [w] filterUrgencyHook' :: Query Bool -> Window -> X ()
_ -> return () filterUrgencyHook' q w = whenX (runQuery q w) (clearUrgents' [w])