窗口与作用域
Diatom/用户手册/窗口与作用域

窗口命名与命令作用域

相同手势可以在不同软件中执行不同动作。最容易理解的方式是先指定进程名,再根据需要为多个软件建立分组。

只在某个程序中使用

假设记录显示目标进程名为 notepad:

ini
[notepad_r+r]
type=f
code='''
SendText("你好")
'''

保存、重启后,在该窗口执行实际的 _r+r 手势。这里的进程名来自记录,不能简单根据程序显示名称猜测。

last_r+r 是兜底命令。较具体的窗口规则通常先于它匹配,因此同一个通用动作在某个软件中没有生效,可能是被软件专属命令接管。

给多个软件同一个名字

在 conf\default\naming.toml 的 [exe] 段加入或合并:

ini
[exe]
notepad=["edit4"]
notepad3=["edit4"]

edit4 中末尾的 4 指命名层级,实际命令前缀为 edit:

ini
[edit_r+r]
type=f
code='''
SendText("编辑器共用动作")
'''

不要在同一文件重复新建 [exe] 段来拼接配置,直接编辑已有段。数组使用 JSON 写法,字符串用双引号。

可以按什么命名

常见段为 [exe]、[class]、[exe+class]、[title]、[path]。多个字段组合时,键的 + 是该命名文件的语法,实际匹配前缀由程序形成。

命名还支持按标题等信息做条件分组:

ini
[exe]
notepad=[["work2","title","@","工作"]]

@ 表示包含;< 表示开头;> 表示结尾;~ 表示正则。work2 生成名为 work 的第二层候选。

层级的实用理解

普通路径中,up、第一层命名先检查,随后是复合窗口信息、第二层命名和 mid,再检查标题、程序路径、进程名、第三层、类名、tail、第四层,最后到 last。

命名层级 0 是特殊路径,会改变普通兜底候选的使用,不建议第一次配置就使用。多个候选都能命中时,也不要依赖配置行顺序代替层级。

排查时先找最终命令名,再看窗口命名候选。比反复改动作代码更容易定位问题。

用户手册

正在读取手册…