mirror of
https://github.com/xmonad/xmonad-contrib.git
synced 2025-05-19 03:20:21 -07:00
X.A.WindowGo: Add arg for custom focus fn to raiseNextMaybe
This commit is contained in:
parent
ae7fd21e29
commit
49fecdf4eb
@ -21,6 +21,7 @@ module XMonad.Actions.WindowGo (
|
||||
runOrRaiseNext,
|
||||
raiseMaybe,
|
||||
raiseNextMaybe,
|
||||
raiseNextMaybeCustomFocus,
|
||||
|
||||
raiseBrowser,
|
||||
raiseEditor,
|
||||
@ -38,7 +39,7 @@ module XMonad.Actions.WindowGo (
|
||||
import Control.Monad
|
||||
import Data.Char (toLower)
|
||||
import Data.Monoid
|
||||
import XMonad (Query(), X(), ManageHook, withWindowSet, runQuery, liftIO, ask)
|
||||
import XMonad (Query(), X(), ManageHook, WindowSet, withWindowSet, runQuery, liftIO, ask)
|
||||
import Graphics.X11 (Window)
|
||||
import XMonad.ManageHook
|
||||
import XMonad.Operations (windows)
|
||||
@ -141,12 +142,15 @@ raiseNext = raiseNextMaybe $ return ()
|
||||
-}
|
||||
|
||||
raiseNextMaybe :: X () -> Query Bool -> X ()
|
||||
raiseNextMaybe f qry = flip (ifWindows qry) f $ \ws -> do
|
||||
raiseNextMaybe = raiseNextMaybeCustomFocus W.focusWindow
|
||||
|
||||
raiseNextMaybeCustomFocus :: (Window -> (WindowSet -> WindowSet)) -> X() -> Query Bool -> X()
|
||||
raiseNextMaybeCustomFocus focusFn f qry = flip (ifWindows qry) f $ \ws -> do
|
||||
foc <- withWindowSet $ return . W.peek
|
||||
case foc of
|
||||
Just w | w `elem` ws -> let (_:y:_) = dropWhile (/=w) $ cycle ws -- cannot fail to match
|
||||
in windows $ W.focusWindow y
|
||||
_ -> windows . W.focusWindow . head $ ws
|
||||
in windows $ focusFn y
|
||||
_ -> windows . focusFn . head $ ws
|
||||
|
||||
-- | Given a function which gets us a String, we try to raise a window with that classname,
|
||||
-- or we then interpret that String as a executable name.
|
||||
|
Loading…
x
Reference in New Issue
Block a user