egoist/godraw
效率与系统工具一款用 Go 编写的原生白板,不依赖 WebView 或 JavaScript,可读写 tldraw 文件。
项目介绍
godraw 是一款参考 tldraw 的本地原生白板,基于 Go 和 MyGo 的原生 UI 实现,不使用 WebView,也不依赖 JavaScript。它能直接读写 tldraw 的 .tldr 文件,因此可以和 tldraw 配合使用,而不是只能替代它。项目是独立重写,与 tldraw, Inc. 没有关联。
功能覆盖比较完整的绘图流程:选择、手形、绘制、橡皮擦、箭头、文本、便签、图片、直线、荧光笔、激光笔、画框及 20 种几何形状;多选与框选;移动、缩放、旋转、翻转、复制、编组/取消编组、锁定、对齐、吸附和网格。每幅画有独立窗口,并支持自动保存、崩溃恢复、最近打开以及跟随外部文件修改。导出可选 PNG 或 SVG,范围可以是选区或整页。完整工具和编辑能力见 README。
适合需要桌面原生白板、并且要打开或保存 tldraw 兼容文件的人,尤其是希望用 Go 应用替代浏览器编辑器的用户。
快速使用
前提是已安装 Go 工具链。在仓库目录执行:
go run . # 新建一个绘图
go run . drawing.tldr # 打开已有文件
如果想看三页示例(带动态连线的海报、包含 1,700 条笔触的流场和样式表):
go run . examples/showcase.tldr
示例可用 go run ./examples/showcase 重新生成,详见展示说明。要打包 macOS 应用和 .dmg,使用 go tool mygo build;运行测试使用 go test ./...(运行命令)。
tldraw 兼容性
文件按 @tldraw/tlschema 5.6.0 的版本写入,tldraw 打开时会自行迁移。godraw 不建模但会保留并写回的内容包括:未知类型的图形、记录的 meta、未编辑过的富文本。嵌入、书签和视频等未知图形会显示为带标签的方框(兼容性说明)。
已知差异:
- 富文本按纯文本显示;编辑后会保存为普通段落。
- 剪贴板使用 godraw 自己的格式,图形无法直接粘贴到 tldraw;两个应用之间应通过
.tldr文件转移画作。 - 手绘笔触和箭头走线使用 godraw 自己的算法,效果与 tldraw 相似但不完全一致。
- SVG 导出只写字体名称,不嵌入字体。
未支持的功能
图片裁剪、便签克隆手柄、视频播放和多人协作尚未实现。README 没有声明许可证,因此复用和再分发的条款未在该文件中说明。
HotRepo 点评
godraw 在 2026-11-02 进入 HotRepo 新项目榜,记录到 112 Star、8 Fork,增长窗口为当天 09:47 至 17:45 UTC。暂无 GitHub 日榜名次记录,且只有这一条快照,因此只能确认当天的数量,不足以判断趋势。更值得关注的技术信息是原生实现的范围:用 Go 完成 tldraw 兼容的 .tldr 读写和绘图界面,对未知记录做保留处理,并把文档层与 UI 分开测试(目录结构)。
本文由 AI 根据项目 README 生成,更新于 ,以项目官方文档为准。