news 2026/10/4 18:06:17

Paneru内嵌Lua脚本入门:用paneru.setup一行声明整套配置

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
Paneru内嵌Lua脚本入门:用paneru.setup一行声明整套配置

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 会按以下顺序查找脚本文件:

  1. $PANERU_LUA(环境变量)
  2. $HOME/.paneru.lua
  3. $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),仅供参考

版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2026/10/4 18:05:32

Agent 的 Memory 怎么做科研:以中医诊断场景为例

1. 引言 大语言模型(LLM)驱动的 Agent 在复杂任务中展现出卓越能力,但受限于上下文窗口与单轮推理范式,难以在长周期、多轮次的交互中维持稳定一致的记忆。Memory(记忆)机制由此成为 Agent 领域的前沿研究方…

作者头像 李华
网站建设 2026/10/4 17:54:43

【linux内核专栏 03】进程管理与调度

本篇定位:Linux 内核的"宇宙中心"是 task_struct——所有子系统都围绕它。对于有过轻量级实时操作系统,如FreeRTOS TCB 到 port 层经验的工程师,本篇把"Linux 进程"对你 FreeRTOS 任务的增量讲清:task_struct 比 TCB 胖十倍(含 mm/fs/files/sig…

作者头像 李华
网站建设 2026/10/4 17:51:01

家庭聚餐一句不服气,老技工靠口述搭建作坊库存系统

让完全不懂电脑的家人试试AI,结果出乎意料 我舅退休前是车床工,跟机器打了一辈子交道,跟电脑的交情仅限于会在家庭群里发早上好的图片。上周末家庭聚餐,表弟起哄说现在AI能自己生成管理系统,我舅不服:「机器…

作者头像 李华
网站建设 2026/10/4 17:50:49

插件加载失败排查指南:从plugins机制到did not activate实战

搞开发这些年,我几乎每天都在跟“plugins”打交道。很多人在群里甩一张 “failed to load plugins web boot: 2 entries did not activate linxin666/dsh-p” 的截图,紧接着就是一句“这啥意思?”。说实话,插件系统在不同工具里长…

作者头像 李华