Paneru内嵌Lua脚本入门:用paneru.setup一行声明整套配置
【免费下载链接】paneruA sliding, tiling window manager for MacOS.项目地址: https://gitcode.com/gh_mirrors/pan/paneru
如果你正在寻找一款适合 macOS 的滑动平铺窗口管理器,Paneru 值得一试。与传统平铺工具不同,Paneru 把窗口排布在一条可向右无限延伸的窗口带上,打开新窗口永远不会打乱你已有的布局。更棒的是,它内嵌了一个Lua 脚本运行时——你只需写一个init.lua,用一行paneru.setup{...}就能声明整套配置,连 TOML 文件都不用再碰。
为什么用内嵌 Lua 脚本配置 Paneru
Paneru 默认使用 TOML(paneru.toml)作为配置文件。而内嵌的 Lua 脚本提供了一个等价却更强大的替代方案:
- 一份文件管到底:一个
init.lua即可替代整个 TOML,选项、边距、快捷键、窗口规则全部集中在这里。 - 可编程:除了声明配置,还能挂事件钩子、绑定 Lua 回调、查询窗口状态。
- 保存即生效:编辑保存后自动热重载,无需重启。
注意:Lua 脚本和 TOML 是二选一的关系。只要存在
init.lua,Paneru 就不会再读取、创建或监视paneru.toml——两套配置不能同时生效。
第一步:找到并创建你的 Lua 脚本
Paneru 会按以下顺序查找脚本文件:
$PANERU_LUA(环境变量)$HOME/.paneru.lua$XDG_CONFIG_HOME/paneru/init.lua
大多数用户会选择第三个位置,创建并编辑一个init.lua即可开始。
用 paneru.setup 一行声明整套配置
paneru.setup{...}接收一张 Lua 表,其中的字段与 TOML 的各个小节一一对应:options、padding、swipe、decorations、restore、windows,以及顶层的default_workspaces。
下面是一个最小可用的示例,声明焦点跟随鼠标、窗口边距和几个常用快捷键:
paneru.setup { default_workspaces = 3, options = { focus_follows_mouse = true, mouse_follows_focus = true, sliver_width = 5, }, padding = { top = 10, bottom = 10, left = 8, right = 8 }, bindings = { ["window focus west"] = "cmd - h", ["window focus east"] = "cmd - l", ["window resize"] = "alt - r", ["quit"] = "ctrl + alt - q", }, }保存文件,Paneru 就会立即应用这套配置。
两种等价的绑键写法
paneru.bind(快捷键, 处理器)—— 处理器可以是命令字符串,也可以是一个Lua 函数(函数形式能拿到状态快照,且只有paneru.bind支持函数)。- 在
setup表里写bindings子表 —— 以命令为键、快捷键为值,本质是paneru.bind的语法糖。
读取当前配置:paneru.config
想看看某个选项当前是什么值?paneru.config已经替你准备好了:
- 它预先填充了内置默认值,哪怕你还没调用
paneru.setup,也能读到paneru.config.options.sliver_width等字段。 - 调用
paneru.setup{...}后,你的配置表会合并在默认值之上。 - 它是只读快照:直接改
paneru.config的字段不会生效,除非你把改过的表再传回paneru.setup(paneru.config)。
paneru.bind("alt - i", function() local widths = paneru.config.options.preset_column_widths paneru.flash("当前 sliver 宽度:" .. tostring(paneru.config.options.sliver_width)) end)保存即热重载
和 TOML 一样,init.lua编辑保存后会自动热重载整个配置,包括菜单栏和按键穿透的更新。改个快捷键、调个边距,保存一下就能立刻看到效果,不必退出重进。
常用配置小节速查
| 小节 | 作用 |
|---|---|
options | 焦点跟随、动画速度、预设窗口宽度等全局选项 |
padding | 窗口四周的内边距 |
swipe | 触控板滑动手势的灵敏度 |
decorations | 活动/非活动窗口的边框颜色与宽度 |
restore | 启动时会话恢复 |
windows | 按应用/标题匹配的窗口规则 |
default_workspaces | 每个显示器的默认虚拟工作区数量 |
更多字段细节可参考 CONFIGURATION.md 的完整配置指南。
下一步:从声明配置到事件驱动
paneru.setup只是 Paneru Lua 脚本的起点。掌握它之后,你可以继续进阶:
- 用
paneru.on("window_focused", ...)监听窗口事件,实现自动布局; - 用
ws:focus()/ws:swap()等纯函数式窗口集操作,编写 xmonad 风格的布局脚本; - 用
paneru.state.set(...)把数据保存下来,让状态跨越脚本重载与守护进程重启。
完整 API 与更多示例,请阅读 SCRIPTING.md 的 Lua 脚本指南;实现细节可参考 src/lua/api.rs 与 src/lua/runtime.rs。
【免费下载链接】paneruA sliding, tiling window manager for MacOS.项目地址: https://gitcode.com/gh_mirrors/pan/paneru
创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考