首页
学习
活动
专区
工具
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键加上该键时,会弹出一个通知显示当前窗口的索引。

请注意,这只是一个简单的示例代码,你可以根据自己的需求进行修改和扩展。另外,XMonad是一个基于Haskell的窗口管理器,它提供了丰富的扩展和自定义功能,可以根据个人喜好进行配置和使用。

关于XMonad的更多信息和详细配置,请参考腾讯云的产品介绍链接地址:XMonad产品介绍

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

相关·内容

  • PowerDesigner 的常用方法(转)

    选择Database—>Edit Current DBMS 选择Scripts-》Objects-》Reference-》ConstName 可以发现右侧的Value为: FK_%.U8:CHILD%_%.U9:REFR%_%.U8:PARENT% 可见,该命名方法是:'FK_'+8位子表名+9位Reference名+8位父表名,你可以根据这中模式自定义为: FK_%.U7:CHILD%_RELATIONS_%.U7:PARENT%, 可以使FK名称变为FK_TABLE_2_RELATIONS_TABLE_1 掌握这种方法后就可以按照自己的想法修改了 生成建库脚本SQL文件中的表头注释很讨厌,可以在 Databse -> Generate Database (Ctrl+G)窗口中,选择Options卡片,去掉Usage的Title钩选项即可。 添加外键 Model -> References新建一条外键后,双击进入外键属性,在“Joins”卡片中可以选择子表的外键字段

    03

    Appium+python自动化(二十五)- 那些让人抓耳挠腮、揪头发和掉头发的事 - 获取控件ID(超详解)

    在前边的第二十二篇文章里,已经分享了通过获取控件的坐标点来获取点击事件的所需要的点击位置,那么还有没有其他方法来获取控件点击事件所需要的点击位置呢?答案是:Yes!因为在不同的大小屏幕的手机上获取控件的坐标点,不是一样的,而是有变化的,因此在不同的手机机型上,我们可能都需要重新获取坐标点,这么操作起来,如果操作控件特别的多,那么获取控件的坐标点就会显得特别的繁琐。因此我们可以通过获取控件的ID来避免获取控件坐标点的这种弊端。   通过控件ID实现自动化脚本的运行,就性能而言,会比控件坐标的实现差一些;但是对于不同分辨率的设备都通用,不需要动态变换坐标。控件ID的获取主要是通过HierarchyViewer。下面就HierarchyViewer从打开方式和使用两方面进行讲解。

    03

    技术 | 数据仓库分层存储技术揭秘

    据IDC发布的《数据时代2025》报告显示,全球每年产生的数据将从2018年的33ZB增长到2025年的175ZB,平均每天约产生491EB数据。随着数据量的不断增长,数据存储成本成为企业IT预算的重要组成部分。例如1PB数据存储一年,全部放在高性能存储介质和全部放在低成本存储介质两者成本差距在一个量级以上。由于关键业务需高性能访问,因此不能简单的把所有数据存放在低速设备,企业需根据数据的访问频度,使用不同种类的存储介质获得最小化成本和最大化效率。因此,把数据存储在不同层级,并能够自动在层级间迁移数据的分层存储技术成为企业海量数据存储的首选。

    02

    CMCD 处理实时真实数据

    CMCD(Common Media Client Data,通用媒体客户端数据)是连接用户播放器和内容分发的桥梁。CDN 每秒钟可以看见上百万个二进制信息的传递,在用户端,用户看见的是一个回放窗口里面存有最近几分钟的缓存数据可用于回放,我们想将这两种场景融合在一起,这是 CMCD 的关键点。CMCD 诞生于 Mile-High Video,我们在两年前的 Mile-High Video 会议上提议在用户请求中加入会话 ID,Dolby David 建议我们投入更多的精力将其变成一种标准。因此我们在会议结束后建立了一种原始的简单的标准,我们定义了一组结构化的键值对,将对双方都有益的媒体相关的信息从播放器传递到 CDN,通过以下三种形式:1)一组常规的头(A set of custom headers)。2)一个索引自变量(A query arg)。3)一个 JSON 对象。之所以称为常规是因为同样的数据结构可以被所有的播放器和所有的 CSDN 使用。

    02

    Windows窗口对象的附加数据

    Windows编程中,每一个窗口对象(HWND)都是一个窗口类(WNDCLASSEX)的实例。每个窗口类实例出来的窗口对象都按同样的方式进行处理,共享相同的回调函数,我们也可以使用窗口子类化技术对某个窗口对象做特定的处理。有时候在一些MDI程序中希望每个窗口对象能保留一些不同于其他窗口的特定数据,这样就可以实现窗口对象有相同的行为但有不同的特性。要使窗口对象有不同的附加特性,只要将那些附加特性与窗口句柄关联起来就可以了,也就是将每个窗口不同的附加数据与窗口句柄建立一种映射关系,这样通过这种映射关系就可以从句柄中获取相关联的附加的数据,然后对其进行操作。Windows系统中提供了如下的四种方法:

    02
    领券