diff options
Diffstat (limited to '')
-rw-r--r-- | XMonad/Hooks/RestoreMinimized.hs | 49 | ||||
-rw-r--r-- | xmonad-contrib.cabal | 1 |
2 files changed, 50 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) diff --git a/xmonad-contrib.cabal b/xmonad-contrib.cabal index 94ff590..a45ff72 100644 --- a/xmonad-contrib.cabal +++ b/xmonad-contrib.cabal @@ -124,6 +124,7 @@ library XMonad.Hooks.ManageDocks XMonad.Hooks.ManageHelpers XMonad.Hooks.Place + XMonad.Hooks.RestoreMinimized XMonad.Hooks.Script XMonad.Hooks.SetWMName XMonad.Hooks.ServerMode |