用 800 行 Clojure 包一层 GTK4:glimmer 的响应式原生 UI
来源: yogthos.net — 2026-08-29
概述
作者用 Jolt(一种编译为原生代码的 Clojure 方言)与 glimmer-gtk,把原生 GTK4 工具包包装成响应式、类 Reagent 的开发体验。核心思想与 Reagent 类似:把 UI 状态当作数据结构,组件订阅其中的路径,状态变化即渲染到真实控件上,无需 VDOM。整个 glimmer-gtk 后端不到 800 行 Clojure,通过 Jolt 的 FFI 直接绑定 GTK 的 C 函数,并用 GObject 的枚举昵称机制免去维护 GTK_* 常量表。相比 Electron(自带浏览器)、Flutter(自带渲染引擎)、Tauri(webview),它真正驱动平台原生控件,且无 JVM/JS 运行时、编译出精简二进制,保留 REPL 式交互开发反馈。
核心要点
- 用 glimmer 把 GTK4 包装成类 Reagent 的响应式 UI,免 VDOM
- 整个 glimmer-gtk 后端不到 800 行 Clojure,经 Jolt FFI 直接绑 C 函数
- 利用 GObject 枚举昵称动态解析,无需维护 GTK_* 常量表
- 对比 Electron/Flutter/Tauri,它是原生控件、无重型运行时
- 编译为原生二进制,保留交互式开发反馈
金句
用 Jolt,我们终于可以两全其美——用原生控件而不必打包整个浏览器引擎来渲染 UI。
👍 0
👎 0
返回 Lobsters 首页