You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何在XMonad中循环切换指定的工作区列表?

解决方案:直接指定CycleWS的目标工作区列表

核心思路

用filterWSs替代ignoringWSs,直接筛选出你想要循环的工作区,无需排除无关项。filterWSs接受一个判断工作区是否符合条件的函数,我们可以通过匹配指定的工作区标签来实现精准筛选。

代码示例

方式1:直接指定工作区列表

先定义目标工作区标签集合,再绑定按键:

-- 定义需要循环的目标工作区标签
targetWSs = [ "{Programming}.$Terminals.1>"
            , "{Programming}.$Terminals.2>"
            , "{Programming}.$Terminals.3>"
            -- 按需添加其他工作区标签
            ]

-- 按键绑定部分
, ("M-3", addName "Switch to Next Target Workspace" 
           $ moveTo Next $ hiddenWS :&: filterWSs (\ws -> workspaceTag ws `elem` targetWSs))

方式2:通过规则匹配简化代码

如果你的目标工作区标签有统一规律(比如都以{Programming}.$Terminals.开头),可以用前缀匹配减少重复代码:

import Data.List (isPrefixOf)

-- 定义匹配规则:筛选以指定前缀开头的工作区
isTerminalWS ws = "{Programming}.$Terminals." `isPrefixOf` workspaceTag ws

-- 按键绑定
, ("M-3", addName "Switch to Next Terminal Workspace" 
           $ moveTo Next $ hiddenWS :&: filterWSs isTerminalWS)

提问方式优化建议

  • 补充完整的工作区命名规则(比如是否有统一的前缀、层级格式),方便给出更精准的简化方案
  • 提供完整的CycleWS相关代码片段(比如当前ignoringWSs的完整列表、绑定代码的上下文)
  • 明确说明现有方案"粗糙"的具体痛点(比如维护排除列表繁琐、容易漏改标签)

内容的提问来源于stack exchange,提问作者Reggy Elizer

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.14 07:50:30