komorebi 清除命名工作区应用关联规则:clear-named-workspace-rules 命令详解

发布时间:2026/9/21 15:36:00
komorebi 清除命名工作区应用关联规则:clear-named-workspace-rules 命令详解 komorebi 清除命名工作区应用关联规则clear-named-workspace-rules 命令详解【免费下载链接】komorebiA tiling window manager for Windows 项目地址: https://gitcode.com/gh_mirrors/ko/komorebi导读在 komorebi 平铺窗口管理器中应用关联规则application association rules决定了某个应用启动后会被自动发送到哪个工作区。clear-named-workspace-rules是一条按工作区名称批量清除这些规则的 CLI 命令用于在无需记忆显示器/工作区索引的情况下快速重置某个命名工作区的全部关联规则。阅读本文后你将掌握该命令的完整语法、底层执行链路从komorebic解析到内核规则表变更、与索引版/全局版清除命令的差异以及它在规则调试与配置热更新中的实战用法。命令总览该命令用于移除某个命名工作区的全部应用关联规则其完整帮助信息定义在 clear-named-workspace-rules.mdRemove all application association rules for a named workspace Usage: komorebic.exe clear-named-workspace-rules WORKSPACE Arguments: WORKSPACE Name of a workspace Options: -h, --help Print help项目说明命令名称clear-named-workspace-rules可执行文件komorebic.exe必填参数WORKSPACE命名工作区的名称可选参数-h, --help打印帮助信息功能移除指定命名工作区的全部应用关联规则与按索引操作的clear-workspace-rules不同本命令只需提供工作区名称由 komorebi 守护进程负责把名称解析为对应的「显示器索引 工作区索引」组合。参数解析唯一参数 WORKSPACE在komorebic的命令行解析层该子命令被定义为一个只含单个字符串字段的结构体见 komorebic/src/main.rs#[derive(Parser)] struct ClearNamedWorkspaceRules { /// Name of a workspace workspace: String, }要点如下WORKSPACE是一个普通字符串直接取自命令行无需引号除非名称本身包含空格。名称必须是已经存在的命名工作区该命令不会自动创建工作区创建工作区请使用ensure-named-workspaces/new-workspace参见 new-workspace.md。名称解析采用精确字符串匹配详见下文「名称解析原理」因此传入的名称必须与工作区配置中的名称完全一致包括大小写与空格。komorebic解析完成后会将参数打包进SocketMessage::ClearNamedWorkspaceRules(String)并通过命名管道socket发送给 komorebi 守护进程见 komorebic/src/main.rsSubCommand::ClearNamedWorkspaceRules(args) { send_message(SocketMessage::ClearNamedWorkspaceRules(args.workspace))?; }对应的SocketMessage变体定义在 komorebi/src/core/mod.rs。底层执行链路名称 → 索引 → 规则清除第一步按名称查找工作区守护进程收到消息后会先调用monitor_workspace_index_by_name将工作区名称解析为(monitor_idx, workspace_idx)二元组。该函数遍历所有显示器及其工作区逐一比较workspace.name字段见 komorebi/src/window_manager.rspub fn monitor_workspace_index_by_name(mut self, name: str) - Option(usize, usize) { for (monitor_idx, monitor) in self.monitors().iter().enumerate() { for (workspace_idx, workspace) in monitor.workspaces().iter().enumerate() { if let Some(workspace_name) workspace.name workspace_name name { return Option::from((monitor_idx, workspace_idx)); } } } None }从源码可以确认两点精确匹配workspace_name name是严格相等比较不区分大小写归一化、不做模糊匹配。名称唯一性一旦在任意显示器上找到第一个同名工作区即返回如果当前配置中存在重名工作区只会命中先被遍历到的那一个。找不到时的行为函数返回None命令静默结束、不做任何清除操作也不会报错——这是使用本命令时需要注意的「无操作」场景。第二步按索引清除规则名称解析成功后命令直接操作全局规则表WORKSPACE_MATCHING_RULES用retain保留所有「不属于该工作区」的规则从而实现对该工作区规则的批量移除见 komorebi/src/process_command.rsSocketMessage::ClearNamedWorkspaceRules(ref workspace) { if let Some((monitor_idx, workspace_idx)) self.monitor_workspace_index_by_name(workspace) { let mut workspace_rules WORKSPACE_MATCHING_RULES.lock(); workspace_rules.retain(|r| { r.monitor_index ! monitor_idx r.workspace_index ! workspace_idx }); } }其中WORKSPACE_MATCHING_RULES是进程内由互斥锁保护的全局静态规则集合存放的是WorkspaceMatchingRule结构包含monitor_index、workspace_index、matching_rule、initial_only等字段。retain是 Rust 标准库的原地过滤方法凡是不匹配目标工作区索引的规则都会被保留匹配的全部移除。因此该命令的效果是删除指定工作区的全部关联规则包括exe、class、title、path四种匹配类型的规则不影响其他工作区的规则不影响全局规则表之外的其他配置如管理/忽略规则、浮动规则。规则如何影响窗口被清除的规则一旦从WORKSPACE_MATCHING_RULES中移除后续enforce_workspace_rules在为新窗口分配工作区时便不再把该应用送往此工作区。规则匹配与窗口迁移的核心逻辑位于 komorebi/src/window_manager.rs它遍历所有显示器/工作区/可见窗口用当前规则表中的匹配规则MatchingRule::Simple等与窗口的exe、title、class、path属性做比对并借助already_moved_window_handles避免同一窗口被重复移动。这正是「清除规则 → 应用不再被强制归位」的实现基础。与其他清除命令的分工komorebi 提供了三条不同粒度的工作区规则清除命令按需选用命令定位方式清除范围参考文档clear-named-workspace-rules WORKSPACE工作区名称指定命名工作区的全部规则clear-named-workspace-rules.mdclear-workspace-rules MONITOR WORKSPACE显示器索引 工作区索引指定索引工作区的全部规则clear-workspace-rules.mdclear-all-workspace-rules无参数全部工作区的全部规则clear-all-workspace-rules.md三者底层共享同一套WORKSPACE_MATCHING_RULES操作路径索引版直接使用传入的monitor_idx/workspace_idx做retain过滤见 process_command.rs名称版先做名称解析全清版直接workspace_rules.clear()见 process_command.rs。对应的添加命令为按索引的workspace-rule见 workspace-rule.md与按名称的named-workspace-rule见 named-workspace-rule.md。实战应用场景场景一规则调试与回滚当某个应用的自动归位行为异常时可用本命令快速清空其目标工作区的全部规则再逐条用named-workspace-rule重新添加以定位问题komorebic.exe clear-named-workspace-rules code komorebic.exe named-workspace-rule exe Code.exe code场景二与规则强制应用配合清除规则后配合enforce-workspace-rules见 enforce-workspace-rules.md可让已打开的窗口按新的规则表重新分配实现「清空旧规则 → 强制重新布局」的完整重置流程。场景三脚本化配置切换在多显示器、多工作区布局中按名称清除比按索引更稳健——即使显示器顺序变化导致索引漂移名称仍能准确定位目标工作区适合写入whkdrc快捷键或 AHK 脚本参考 whkdrc.md 与 autohotkey.md。注意事项与限制命令不会清除规则之外的任何配置如需清理全部类型规则请使用clear-all-workspace-rules或参阅clear-session-float-rules见 clear-session-float-rules.md处理会话浮动规则。工作区名称不存在时命令静默无操作不会输出错误信息可在执行前用state/query查询当前工作区名称见 state.md加以确认。名称匹配区分大小写需与配置中的名称完全一致。该命令修改的是运行时状态如需持久化规则请将关联规则写入静态配置见 static-config-schema.md 与 application-specific-configuration-schema.md并配合reload-configuration生效见 reload-configuration.md。小结clear-named-workspace-rules是 komorebi 工作区规则体系中按名称粒度的清除入口komorebic解析字符串参数并通过 socket 下发SocketMessage::ClearNamedWorkspaceRules守护进程先经monitor_workspace_index_by_name完成名称到索引的解析再对全局规则表WORKSPACE_MATCHING_RULES执行retain过滤最终由enforce_workspace_rules驱动窗口重新归位。理解这条链路即可在规则调试、配置切换与多显示器场景中精准、安全地管理命名工作区的应用关联。【免费下载链接】komorebiA tiling window manager for Windows 项目地址: https://gitcode.com/gh_mirrors/ko/komorebi创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考

关于本文作者

来自尧图内容编辑团队

尧图内容编辑团队 内容团队

尧图内容编辑团队

本文由尧图网络内容编辑团队执笔。团队由资深项目经理、前端工程师与设计师组成,所有内容均来自亲手交付的真实项目,先讲清问题、再给出可落地的解法。尧图深耕北京网站建设十年,服务过京华建材集团、智造科技等各行业客户,把一线经验沉淀为可复用的行业观察。

  • 十年建站经验,覆盖建材、制造、服务、文创等
  • 项目经理把关选题与事实准确性
  • 工程师与设计师联合撰写专业细节
  • 统一编辑规范,保证文风与排版一致
  • 每月复盘转化数据,迭代选题方向

延伸阅读

相关资讯与近期热门内容

深度阅读推荐

建站决策前值得细读的三篇

网站改版的5个关键决策
2024-08-12

网站改版的5个关键决策

什么时候该改版、改到什么程度、如何避免流量掉光,京华建材集团改版复盘给出答案。

获取专属建站方案

看完文章,把您的行业与预算告诉我们,免费获取一份量身定制的官网建设方案与报价。

立即免费咨询