本项目是一个本地剪贴板检查工具,包含两个入口:
- CLI:命令行读写剪贴板,入口在
./cmd/clipi - GUI:Wails 桌面应用,工程根在
./gui,前端在./gui/frontend
核心剪贴板逻辑位于 ./internal,CLI 和 GUI 复用同一套 Go 实现。
- 读取指定 pasteboard 的全部条目与类型信息
- 以 JSON 快照形式导出剪贴板内容
- 按快照结构写回剪贴板
- GUI 中查看原始文本、Hex 和部分类型的预览
当前 macOS 为主要实现平台:
- macOS:已实现,依赖 cgo / Objective-C bridge
- Windows:接口已预留,当前未实现
- 其他系统:返回 unsupported
.
├── cmd/clipi # CLI 入口
├── gui/ # Wails 桌面应用
│ ├── app.go # Go <-> 前端绑定
│ └── frontend/ # React + Vite 前端
└── internal/
├── clipboard/ # 读写剪贴板的应用层
├── models/ # 共享数据模型
└── platform/ # 平台抽象与 macOS 实现
- macOS:需要 Xcode Command Line Tools,用于 cgo / Objective-C 编译
CGO_ENABLED=1 go run ./cmd/clipi healthCGO_ENABLED=1 go build -ldflags='-s -w' -o bin/clipi ./cmd/clipi
./bin/clipi health读取剪贴板:
./bin/clipi read --pasteboard general导出快照:
./bin/clipi export -o snapshot.json --pasteboard general覆盖写回剪贴板:
./bin/clipi write --json '{"pasteboard":"general","items":[{"types":[{"type":"public.utf8-plain-text","data":"aGVsbG8="}]}]}'CLI 使用说明:
./bin/clipi help- Go
- Node.js
- Wails v2 命令行工具
wails
cd gui
wails dev
wails dev -browsercd gui
wails build前端工程位于 gui/frontend,Wails 会通过 gui/wails.json 中的 frontend:* 脚本安装和构建前端资源。
- GUI 会从后端全量读取剪贴板内容到前端
- 文本类内容在 Raw / 文本 Preview 视图中,超过
256 KB时会提示:仅显示前 256 KB(数据完整) - 这个限制只影响显示,不影响底层已读取到前端的数据完整性
- Hex、图片、HTML、PDF、RTF 等视图保持各自现有的展示方式
- Go 数据模型定义在
internal/models - Wails 暴露的桌面接口定义在
gui/app.go - 前端主要业务逻辑集中在
gui/frontend/src/features/clipboard - macOS 原生剪贴板桥接实现位于
internal/platform/macos