在XMonad中,可以使用withWindowSet
函数来获取当前的Stackset,然后使用findIndex
函数来获取指定窗口的索引。
以下是一个示例代码:
import XMonad
import XMonad.StackSet as W
-- 获取指定窗口的索引
getWindowIndex :: Window -> X (Maybe Int)
getWindowIndex win = withWindowSet $ \ws -> do
let stack = W.stack $ W.workspace $ W.current ws
return $ stack >>= W.findTag win >>= W.findIndex
main :: IO ()
main = xmonad def
{ ...
-- 在某个键绑定中使用getWindowIndex函数
, keys = \c -> myKeys c `M.union` keys def c
}
myKeys :: XConfig Layout -> M.Map (KeyMask, KeySym) (X ())
myKeys conf@(XConfig {modMask = modm}) = M.fromList
[ ...
-- 使用Mod键加上某个键来获取当前窗口的索引
, ((modm, xK_i), withFocused $ \win -> do
index <- getWindowIndex win
case index of
Just i -> spawn $ "notify-send 'Window Index: " ++ show i ++ "'"
Nothing -> return ()
)
]
在上面的代码中,我们定义了一个名为getWindowIndex
的函数,它接受一个窗口句柄作为参数,并返回该窗口在Stackset中的索引。在myKeys
函数中,我们将getWindowIndex
函数绑定到了一个键位上,当按下Mod键加上该键时,会弹出一个通知显示当前窗口的索引。
领取专属 10元无门槛券
手把手带您无忧上云