aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--XMonad/Config/Bluetile.hs4
-rw-r--r--XMonad/Doc/Extending.hs10
-rw-r--r--XMonad/Hooks/Minimize.hs53
-rw-r--r--XMonad/Hooks/RestoreMinimized.hs6
-rw-r--r--XMonad/Layout/Minimize.hs4
-rw-r--r--xmonad-contrib.cabal1
6 files changed, 68 insertions, 10 deletions
diff --git a/XMonad/Config/Bluetile.hs b/XMonad/Config/Bluetile.hs
index b57c713..10b0f45 100644
--- a/XMonad/Config/Bluetile.hs
+++ b/XMonad/Config/Bluetile.hs
@@ -50,7 +50,7 @@ import XMonad.Hooks.EwmhDesktops
import XMonad.Hooks.ManageDocks
import XMonad.Hooks.ManageHelpers
import XMonad.Hooks.PositionStoreHooks
-import XMonad.Hooks.RestoreMinimized
+import XMonad.Hooks.Minimize
import XMonad.Hooks.ServerMode
import XMonad.Hooks.WorkspaceByPos
@@ -205,7 +205,7 @@ bluetileConfig =
logHook = currentWorkspaceOnTop >> ewmhDesktopsLogHook,
handleEventHook = ewmhDesktopsEventHook
`mappend` fullscreenEventHook
- `mappend` restoreMinimizedEventHook
+ `mappend` minimizeEventHook
`mappend` serverModeEventHook' bluetileCommands
`mappend` positionStoreEventHook,
workspaces = bluetileWorkspaces,
diff --git a/XMonad/Doc/Extending.hs b/XMonad/Doc/Extending.hs
index 749b72e..cb915e8 100644
--- a/XMonad/Doc/Extending.hs
+++ b/XMonad/Doc/Extending.hs
@@ -382,13 +382,17 @@ Here is a list of the modules found in @XMonad.Hooks@:
* "XMonad.Hooks.ManageHelpers": provide helper functions to be used
in @manageHook@.
+* "XMonad.Hooks.Minimize":
+ Handles window manager hints to minimize and restore windows. Use
+ this with XMonad.Layout.Minimize.
+
* "XMonad.Hooks.Place":
Automatic placement of floating windows.
* "XMonad.Hooks.RestoreMinimized":
- Lets you restore minimized windows (see "XMonad.Layout.Minimize")
- by selecting them on a taskbar (listens for _NET_ACTIVE_WINDOW
- and WM_CHANGE_STATE).
+ (Deprecated: Use XMonad.Hooks.Minimize) Lets you restore minimized
+ windows (see "XMonad.Layout.Minimize") by selecting them on a
+ taskbar (listens for _NET_ACTIVE_WINDOW and WM_CHANGE_STATE).
* "XMonad.Hooks.Script":
Provides a simple interface for running a ~\/.xmonad\/hooks script with the
diff --git a/XMonad/Hooks/Minimize.hs b/XMonad/Hooks/Minimize.hs
new file mode 100644
index 0000000..e293e6d
--- /dev/null
+++ b/XMonad/Hooks/Minimize.hs
@@ -0,0 +1,53 @@
+----------------------------------------------------------------------------
+-- |
+-- Module : XMonad.Hooks.Minimize
+-- Copyright : (c) Justin Bogner 2010
+-- License : BSD3-style (see LICENSE)
+--
+-- Maintainer : Justin Bogner <mail@justinbogner.com>
+-- Stability : unstable
+-- Portability : not portable
+--
+-- Handles window manager hints to minimize and restore windows. Use
+-- this with XMonad.Layout.Minimize.
+--
+-----------------------------------------------------------------------------
+
+module XMonad.Hooks.Minimize
+ ( -- * Usage
+ -- $usage
+ minimizeEventHook
+ ) 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.Minimize
+-- > import XMonad.Layout.Minimize
+-- >
+-- > myHandleEventHook = minimizeEventHook
+-- > myLayout = minimize (Tall 1 (3/100) (1/2)) ||| Full ||| etc..
+-- > main = xmonad defaultConfig { layoutHook = myLayout
+-- > , handleEventHook = myHandleEventHook }
+
+minimizeEventHook :: Event -> X All
+minimizeEventHook (ClientMessageEvent {ev_window = w,
+ ev_message_type = mt,
+ ev_data = dt}) = do
+ a_aw <- getAtom "_NET_ACTIVE_WINDOW"
+ a_cs <- getAtom "WM_CHANGE_STATE"
+
+ when (mt == a_aw) $ sendMessage (RestoreMinimizedWin w)
+ when (mt == a_cs) $ do
+ let message = fromIntegral . head $ dt
+ when (message == normalState) $ sendMessage (RestoreMinimizedWin w)
+ when (message == iconicState) $ sendMessage (MinimizeWin w)
+
+ return (All True)
+minimizeEventHook _ = return (All True)
diff --git a/XMonad/Hooks/RestoreMinimized.hs b/XMonad/Hooks/RestoreMinimized.hs
index 42cf8fb..3759ce5 100644
--- a/XMonad/Hooks/RestoreMinimized.hs
+++ b/XMonad/Hooks/RestoreMinimized.hs
@@ -8,9 +8,9 @@
-- 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).
+-- (Deprecated: Use XMonad.Hooks.Minimize) Lets you restore minimized
+-- windows (see "XMonad.Layout.Minimize") by selecting them on a
+-- taskbar (listens for _NET_ACTIVE_WINDOW and WM_CHANGE_STATE).
--
-----------------------------------------------------------------------------
diff --git a/XMonad/Layout/Minimize.hs b/XMonad/Layout/Minimize.hs
index 8bd8b1e..aced551 100644
--- a/XMonad/Layout/Minimize.hs
+++ b/XMonad/Layout/Minimize.hs
@@ -62,8 +62,8 @@ import Foreign.C.Types (CLong)
-- the keyboard. Include 'BW.boringWindows' in your layout hook and see the
-- documentation of "XMonad.Layout.BoringWindows" on how to modify your keybindings.
--
--- Also see "XMonad.Hooks.RestoreMinimized" if you want to be able to restore
--- minimized windows from your taskbar.
+-- Also see "XMonad.Hooks.Minimize" if you want to be able to minimize
+-- and restore windows from your taskbar.
data Minimize a = Minimize [Window] (M.Map Window W.RationalRect) deriving ( Read, Show )
minimize :: LayoutClass l Window => l Window -> ModifiedLayout Minimize l Window
diff --git a/xmonad-contrib.cabal b/xmonad-contrib.cabal
index 59a252a..387c5c9 100644
--- a/xmonad-contrib.cabal
+++ b/xmonad-contrib.cabal
@@ -145,6 +145,7 @@ library
XMonad.Hooks.InsertPosition
XMonad.Hooks.ManageDocks
XMonad.Hooks.ManageHelpers
+ XMonad.Hooks.Minimize
XMonad.Hooks.Place
XMonad.Hooks.PositionStoreHooks
XMonad.Hooks.RestoreMinimized