diff options
Diffstat (limited to 'XMonad/Hooks')
-rw-r--r-- | XMonad/Hooks/RestoreMinimized.hs | 49 |
1 files changed, 49 insertions, 0 deletions
diff --git a/XMonad/Hooks/RestoreMinimized.hs b/XMonad/Hooks/RestoreMinimized.hs new file mode 100644 index 0000000..77b3c97 --- /dev/null +++ b/XMonad/Hooks/RestoreMinimized.hs @@ -0,0 +1,49 @@ +---------------------------------------------------------------------------- +-- | +-- Module : XMonad.Hooks.RestoreMinimized +-- Copyright : (c) Jan Vornberger 2009 +-- License : BSD3-style (see LICENSE) +-- +-- Maintainer : jan.vornberger@informatik.uni-oldenburg.de +-- Stability : unstable +-- Portability : not portable +-- +-- Lets you restore minimized windows (see XMonad.Layout.Minimize) +-- by selecting them on a taskbar (listens for _NET_ACTIVE_WINDOW +-- and WM_CHANGE_STATE). +-- +----------------------------------------------------------------------------- + +module XMonad.Hooks.RestoreMinimized + ( -- * Usage + -- $usage + RestoreMinimized (..) + , restoreMinimizedEventHook + ) where + +import Data.Monoid +import Control.Monad(when) + +import XMonad +import XMonad.Layout.Minimize + +-- $usage +-- You can use this module with the following in your @~\/.xmonad\/xmonad.hs@: +-- +-- > import XMonad.Hooks.RestoreMinimized +-- > +-- > myHandleEventHook = restoreMinimizedEventHook +-- > +-- > main = xmonad defaultConfig { handleEventHook = myHandleEventHook } + +data RestoreMinimized = RestoreMinimized deriving ( Show, Read ) + +restoreMinimizedEventHook :: Event -> X All +restoreMinimizedEventHook (ClientMessageEvent {ev_window = w, + ev_message_type = mt}) = do + a_aw <- getAtom "_NET_ACTIVE_WINDOW" + a_cs <- getAtom "WM_CHANGE_STATE" + when (mt == a_aw || mt == a_cs) $ do + sendMessage (RestoreMinimizedWin w) + return (All True) +restoreMinimizedEventHook _ = return (All True) |