From 5aa7d3635e59324109199e3fa319e268f2bcd2ba Mon Sep 17 00:00:00 2001 From: Jan Vornberger Date: Mon, 28 Sep 2009 23:15:49 +0000 Subject: [PATCH] EventHook to restore minimized windows from taskbar (re-recorded from Bluetile repo) --- XMonad/Hooks/RestoreMinimized.hs | 49 ++++++++++++++++++++++++++++++++ xmonad-contrib.cabal | 1 + 2 files changed, 50 insertions(+) create mode 100644 XMonad/Hooks/RestoreMinimized.hs diff --git a/XMonad/Hooks/RestoreMinimized.hs b/XMonad/Hooks/RestoreMinimized.hs new file mode 100644 index 00000000..77b3c97a --- /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 94ff5900..a45ff72e 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