herbstluftwm 如何通过 herbstclient 进行运行时配置?

herbstluftwm 的所有配置都在运行时通过 herbstclient 完成,配置文件本身只是一个在启动时执行的脚本。这意味着配置选项、窗口规则、虚拟桌面(tag)和键绑定都可以在不重启窗口管理器的情况下实时更新。如果你希望调整布局或键位后立刻看到效果、不想反复重启 X 会话,这种机制就是它最直接的价值。

运行时配置的核心机制

herbstluftwm 把窗口管理器的状态暴露成一组可通过命令读写的属性。herbstclient 是与之通信的命令行工具,你发出的每条命令都会立即作用于正在运行的实例。

  • 配置文件不是被“解析”的声明式文档,而是一段启动脚本,里面通常是一连串 herbstclient 调用。
  • 脚本执行完后,窗口管理器继续运行,之后你仍可以用同样的命令修改任何设置。
  • 因为命令是即时生效的,调试键绑定或窗口规则时不需要重启,改完立刻能验证。

具体操作步骤

  1. 确认 herbstclient 可用:它随 herbstluftwm 一起安装。在终端执行 herbstclient 应能看到用法或报错提示,说明命令已就位。
  2. 在运行中的会话里直接发命令:例如要查看当前所有可设置的属性,执行 herbstclient list_commands 或 herbstclient attr,预期结果是返回当前实例支持的完整命令/属性列表。
  3. 修改一项设置并验证:发出一条设置命令后,再用对应的读取命令确认值已改变。由于改动立即生效,你可以直接在屏幕上观察布局或行为的变化。
  4. 把改动写回启动脚本:确认某条命令符合预期后,把它加入你的配置文件(启动脚本),这样下次启动时会自动应用。配置文件的路径和加载方式以官方 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] 反馈。

herbstluftwm.org