niri mcp
Niri窗口管理器的模型上下文协议(MCP)服务器。
工具
查询工具
niri_outputs-列出连接的输出(监视器)niri_workspaces-列出工作区niri_windows-列出窗口niri_layers-列出图层niri_keyboard_layouts-列出键盘布局niri_focused_output-显示当前关注的输出niri_focused_window-显示当前聚焦的窗口niri_overview_state-显示当前概览状态
Config.d管理工具
list_niri_configs-列出niri config.d文件及其状态toggle_niri_config-启用/禁用niri config.d文件
list_niri_config
列出中的所有配置文件 ~/.config/niri/config.d/ 与他们的州(包括或排除)。
参数:
filter(可选,字符串):用于匹配文件名的正则表达式模式
退货: 配置文件数组 name, path, state,以及 size.
例子:
// List all configs
await client.callTool("list_niri_configs", {})
// List only work profile configs
await client.callTool("list_niri_configs", { filter: "work-.*" })toggle_niri_config
通过添加/删除配置文件来启用或禁用配置文件 .disabled 后缀。
参数:
idRegex(可选,字符串):正则表达式模式,用于匹配批处理操作的文件名。默认为所有配置。action(可选,字符串):要执行的操作-"on"(启用),"off"(禁用),或"toggle"(翻转状态)。默认为"toggle".
退货: 对象与 affected 阵列和 skipped 阵列。
例子:
// Enable work configs
await client.callTool("toggle_niri_config", { idRegex: "work-.*", action: "on" })
// Disable play configs
await client.callTool("toggle_niri_config", { idRegex: "play-.*", action: "off" })
// Toggle all experimental features
await client.callTool("toggle_niri_config", { idRegex: "experimental-.*", action: "toggle" })
// Toggle all configs
await client.callTool("toggle_niri_config", { action: "toggle" })配置状态
配置文件状态由以下因素决定 .disabled 后缀:
included-文件处于活动状态(否.disabled后缀)excluded-文件已禁用(已.disabled后缀)
注: 对config.d文件的更改需要重新启动niri或重新加载配置才能生效。这是一个niri限制,并不特定于niri-mcp。
工作流示例
配置文件切换:
// Switch to work profile
await client.callTool("toggle_niri_config", { idRegex: "work-.*", action: "on" })
await client.callTool("toggle_niri_config", { idRegex: "play-.*", action: "off" })
await client.callTool("toggle_niri_config", { idRegex: "personal-.*", action: "off" })
// Then trigger niri config reload or restart niri功能切换:
// Enable experimental feature
await client.callTool("toggle_niri_config", { idRegex: "experimental-.*", action: "on" })
// Check current state
const result = await client.callTool("list_niri_configs", {})
console.log(result.configs)故障排除:
- niri未运行: 配置工具可以工作,但更改只有在niri启动后才会生效
- 权限被拒绝: 检查您的用户是否有读/写权限
~/.config/niri/config.d/ - 正则表达式不匹配: 确保正则表达式语法正确并匹配文件名(不是完整路径)
- 找不到文件: 确保config.d目录存在于
~/.config/niri/config.d/
