Merge pull request #327 from ssbothwell/feature/withFocused-function

Adds withUnfocused function to XMonad.Operations
This commit is contained in:
Tomáš Janoušek
2021-09-14 11:09:42 +01:00
committed by GitHub
2 changed files with 12 additions and 1 deletions

View File

@@ -70,6 +70,9 @@
of processing messages in `broadcastMessage`. Previously,
`runOnWorkspaces` processed the hidden workspaces first.
* Added `withUnfocused` function to `XMonad.Operations`, allowing for
`X` operations to be applied to unfocused windows.
## 0.15 (September 30, 2018)
* Reimplement `sendMessage` to deal properly with windowset changes made

View File

@@ -18,10 +18,11 @@ module XMonad.Operations (
manage, unmanage, killWindow, kill, isClient,
setInitialProperties, setWMState, setWindowBorderWithFallback,
hide, reveal, tileWindow,
setTopFocus, focus, withFocused,
setTopFocus, focus,
-- * Manage Windows
windows, refresh, rescreen, modifyWindowSet, windowBracket, windowBracket_, clearEvents, getCleanedScreenInfo,
withFocused, withUnfocused,
-- * Keyboard and Mouse
cleanMask, extraModifiers,
@@ -481,6 +482,13 @@ screenWorkspace sc = withWindowSet $ return . W.lookupWorkspace sc
withFocused :: (Window -> X ()) -> X ()
withFocused f = withWindowSet $ \w -> whenJust (W.peek w) f
-- | Apply an 'X' operation to all unfocused windows on the current workspace, if there are any.
withUnfocused :: (Window -> X ()) -> X ()
withUnfocused f = withWindowSet $ \ws ->
whenJust (W.peek ws) $ \w ->
let unfocusedWindows = filter (/= w) $ W.index ws
in mapM_ f unfocusedWindows
-- | Is the window is under management by xmonad?
isClient :: Window -> X Bool
isClient w = withWindowSet $ return . W.member w