首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

如何在XMonad中获取Stackset中窗口的索引?

在XMonad中,可以使用withWindowSet函数来获取当前的Stackset,然后使用findIndex函数来获取指定窗口的索引。

以下是一个示例代码:

代码语言:haskell
复制
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键加上该键时,会弹出一个通知显示当前窗口的索引。

页面内容是否对你有帮助?
有帮助
没帮助

相关·内容

领券