move XMonad.Actions.SinkAll functionality to more general XMonad.Actions.WithAll, and re-export sinkAll from X.A.SinkAll for backwards compatibility

This commit is contained in:
Brent Yorgey
2009-01-27 22:23:55 +00:00
parent 3022e3c937
commit d1e2991ccf
3 changed files with 62 additions and 38 deletions

View File

@@ -5,48 +5,17 @@
-- Stability : unstable -- Stability : unstable
-- Portability : unportable -- Portability : unportable
-- --
-- Provides a simple binding that pushes all floating windows on the current -- Provides a simple binding that pushes all floating windows on the
-- workspace back into tiling. -- current workspace back into tiling. Note that the functionality of
-- this module has been folded into the more general
-- "XMonad.Actions.WithAll"; this module simply re-exports the
-- 'sinkAll' function for backwards compatibility.
----------------------------------------------------------------------------- -----------------------------------------------------------------------------
module XMonad.Actions.SinkAll ( module XMonad.Actions.SinkAll (
-- * Usage -- * Usage
-- $usage -- $usage
sinkAll, withAll,
withAll', killAll) where
import Data.Foldable hiding (foldr) sinkAll) where
import XMonad import XMonad.Actions.WithAll (sinkAll)
import XMonad.Core
import XMonad.Operations
import XMonad.StackSet
-- $usage
--
-- You can use this module with the following in your @~\/.xmonad\/xmonad.hs@:
--
-- > import XMonad.Actions.SinkAll
--
-- then add a keybinding; for example:
--
-- , ((modMask x .|. shiftMask, xK_t), sinkAll)
--
-- For detailed instructions on editing your key bindings, see
-- "XMonad.Doc.Extending#Editing_key_bindings".
-- | Un-float all floating windows on the current workspace.
sinkAll :: X ()
sinkAll = withAll' sink
-- | Apply a function to all windows on current workspace.
withAll' :: (Window -> WindowSet -> WindowSet) -> X ()
withAll' f = windows $ \ws -> let all' = integrate' . stack . workspace . current $ ws
in foldr f ws all'
withAll :: (Window -> X ()) -> X()
withAll f = withWindowSet $ \ws -> let all' = integrate' . stack . workspace . current $ ws
in forM_ all' f
killAll :: X()
killAll = withAll killWindow

54
XMonad/Actions/WithAll.hs Normal file
View File

@@ -0,0 +1,54 @@
-----------------------------------------------------------------------------
-- |
-- Module : XMonad.Actions.WithAll
-- License : BSD3-style (see LICENSE)
-- Stability : unstable
-- Portability : unportable
--
-- Provides functions for performing a given action on all windows of
-- the current workspace.
-----------------------------------------------------------------------------
module XMonad.Actions.WithAll (
-- * Usage
-- $usage
sinkAll, withAll,
withAll', killAll) where
import Data.Foldable hiding (foldr)
import XMonad
import XMonad.Core
import XMonad.Operations
import XMonad.StackSet
-- $usage
--
-- You can use this module with the following in your @~\/.xmonad\/xmonad.hs@:
--
-- > import XMonad.Actions.WithAll
--
-- then add a keybinding; for example:
--
-- , ((modMask x .|. shiftMask, xK_t), sinkAll)
--
-- For detailed instructions on editing your key bindings, see
-- "XMonad.Doc.Extending#Editing_key_bindings".
-- | Un-float all floating windows on the current workspace.
sinkAll :: X ()
sinkAll = withAll' sink
-- | Apply a function to all windows on the current workspace.
withAll' :: (Window -> WindowSet -> WindowSet) -> X ()
withAll' f = windows $ \ws -> let all' = integrate' . stack . workspace . current $ ws
in foldr f ws all'
-- | Execute an 'X' action for each window on the current workspace.
withAll :: (Window -> X ()) -> X()
withAll f = withWindowSet $ \ws -> let all' = integrate' . stack . workspace . current $ ws
in forM_ all' f
-- | Kill all the windows on the current workspace.
killAll :: X()
killAll = withAll killWindow

View File

@@ -105,6 +105,7 @@ library
XMonad.Actions.WindowNavigation XMonad.Actions.WindowNavigation
XMonad.Actions.WindowGo XMonad.Actions.WindowGo
XMonad.Actions.WindowBringer XMonad.Actions.WindowBringer
XMonad.Actions.WithAll
XMonad.Config.Arossato XMonad.Config.Arossato
XMonad.Config.Azerty XMonad.Config.Azerty
XMonad.Config.Desktop XMonad.Config.Desktop