aboutsummaryrefslogtreecommitdiffstats
path: root/XMonad/Hooks/UrgencyHook.hs
diff options
context:
space:
mode:
authorDevin Mullins <me@twifkak.com>2007-11-11 00:27:06 +0100
committerDevin Mullins <me@twifkak.com>2007-11-11 00:27:06 +0100
commit16203eb215341f93af44757412f27e7ec862494f (patch)
tree8ae3614c90719a637ceeca26ec9447089f5ea80b /XMonad/Hooks/UrgencyHook.hs
parent139d184d287dc11a8788483d345407d8403a2fc2 (diff)
downloadXMonadContrib-16203eb215341f93af44757412f27e7ec862494f.tar.gz
XMonadContrib-16203eb215341f93af44757412f27e7ec862494f.tar.xz
XMonadContrib-16203eb215341f93af44757412f27e7ec862494f.zip
add dzenUrgencyHook back
TODO: fix all the doco darcs-hash:20071110232706-78224-44f4f2a6c3cdefa2313cd684ce3a526bd78babf1.gz
Diffstat (limited to 'XMonad/Hooks/UrgencyHook.hs')
-rw-r--r--XMonad/Hooks/UrgencyHook.hs31
1 files changed, 27 insertions, 4 deletions
diff --git a/XMonad/Hooks/UrgencyHook.hs b/XMonad/Hooks/UrgencyHook.hs
index 8d54c48..147906a 100644
--- a/XMonad/Hooks/UrgencyHook.hs
+++ b/XMonad/Hooks/UrgencyHook.hs
@@ -21,14 +21,17 @@ module XMonad.Hooks.UrgencyHook (
-- $usage
withUrgencyHook,
focusUrgent,
- readUrgents,
- withUrgents
+ readUrgents, withUrgents,
+ dzenUrgencyHook, seconds
) where
+import XMonad
import XMonad.Operations (windows)
import qualified XMonad.StackSet as W
-import XMonad
+
import XMonad.Layout.LayoutModifier
+import XMonad.Util.Dzen (dzenWithArgs, seconds)
+import XMonad.Util.NamedWindows (getName)
import Control.Monad (when)
import Control.Monad.Reader (asks)
@@ -138,4 +141,24 @@ withUrgencyHook :: (UrgencyHook h Window, LayoutClass l Window) =>
withUrgencyHook theHook = ModifiedLayout $ WithUrgencyHook theHook
class (Read h, Show h) => UrgencyHook h a where
- urgencyHook :: h -> a -> X ()
+ urgencyHook :: h -> a -> X ()
+
+data DzenUrgencyHook = DzenUrgencyHook { duration :: Int, args :: [String] }
+ deriving (Read, Show)
+
+instance UrgencyHook DzenUrgencyHook Window where
+ urgencyHook DzenUrgencyHook { duration = d, args = a } w = do
+ visibles <- gets mapped
+ name <- getName w
+ ws <- gets windowset
+ whenJust (W.findTag w ws) (flash name visibles)
+ where flash name visibles index =
+ when (not $ S.member w visibles) $
+ dzenWithArgs (show name ++ " requests your attention on workspace " ++ index) a d
+
+-- | Flashes when a window requests your attention and you can't see it. For use with
+-- XMonad.Hooks.UrgencyHook. Usage:
+-- > urgencyHook = dzenUrgencyHook (5 `seconds`)
+-- > urgencyHook = dzenUrgencyHookWithArgs ["-bg", "darkgreen"] (5 `seconds`)
+dzenUrgencyHook :: DzenUrgencyHook
+dzenUrgencyHook = DzenUrgencyHook { duration = (5 `seconds`), args = [] }