herbstluftwm 如何通过 herbstclient 进行运行时配置?
herbstluftwm 的所有配置都在运行时通过 herbstclient 完成,配置文件本身只是一个在启动时执行的脚本。这意味着配置选项、窗口规则、虚拟桌面(tag)和键绑定都可以在不重启窗口管理器的情况下实时更新。如果你希望调整布局或键位后立刻看到效果、不想反复重启 X 会话,这种机制就是它最直接的价值。
运行时配置的核心机制
herbstluftwm 把窗口管理器的状态暴露成一组可通过命令读写的属性。herbstclient 是与之通信的命令行工具,你发出的每条命令都会立即作用于正在运行的实例。
- 配置文件不是被“解析”的声明式文档,而是一段启动脚本,里面通常是一连串
herbstclient调用。 - 脚本执行完后,窗口管理器继续运行,之后你仍可以用同样的命令修改任何设置。
- 因为命令是即时生效的,调试键绑定或窗口规则时不需要重启,改完立刻能验证。
具体操作步骤
- 确认 herbstclient 可用:它随 herbstluftwm 一起安装。在终端执行
herbstclient应能看到用法或报错提示,说明命令已就位。 - 在运行中的会话里直接发命令:例如要查看当前所有可设置的属性,执行
herbstclient list_commands或herbstclient attr,预期结果是返回当前实例支持的完整命令/属性列表。 - 修改一项设置并验证:发出一条设置命令后,再用对应的读取命令确认值已改变。由于改动立即生效,你可以直接在屏幕上观察布局或行为的变化。
- 把改动写回启动脚本:确认某条命令符合预期后,把它加入你的配置文件(启动脚本),这样下次启动时会自动应用。配置文件的路径和加载方式以官方 tutorial 与 manpage 为准。
哪些内容可以实时更新
根据官方说明,以下内容都能在运行时修改,无需重启:
| 类别 | 说明 |
|---|---|
| 配置选项 | 窗口管理器的各项属性 |
| 窗口规则 | 新窗口如何被放置、匹配到哪个 tag 等 |
| 虚拟桌面(tag) | tag 的创建、切换与内容调整 |
| 键绑定 | 键盘快捷键的增删改 |
常见卡点
- 把配置文件当成静态配置:它只是启动脚本,脚本跑完不代表配置被“锁定”。想改就继续用
herbstclient。 - 改了没生效:先确认命令是否发到了正确的运行实例,再用读取类命令核对当前值,而不是只看脚本内容。
- 持久化遗漏:运行时改动只存在于当前会话,重启后会丢失。需要长期保留的设置必须写进启动脚本。
进一步了解
官方站点提供 tutorial 作为入门起点,doc/ 目录下有 herbstluftwm 和 herbstclient 的 manpage,也可在线查看。遇到问题可以到 IRC 频道 #herbstluftwm(irc.libera.chat)、Reddit 的 r/herbstluftwm,或 GitHub issue tracker 提问;bug 也可通过 GitHub issue 或邮件列表 [email protected] 反馈。