折腾许久, 自己用 Go 写的 macOS App 上架了,对标 Ditto 的全能剪贴板,海量存储+搜索+上锁+分组+编辑+局域网同步(OnlyPaste)
作为一个 macOS 和 Windows 双持的野生程序员,一直有个痛点:在 Windows 上有 Ditto 这种神器,而在 macOS 上,虽然剪贴板工具不少,但总感觉差点意思。要么是功能太简单,存不了几条记录(我想存几十万条那种,当归档记事本用了);要么是没法搜索/功能太少;要么就是缺少“局域网同步”这种功能(不喜欢 icloud 同步)。
既然找不到完美的,那就自己动手造一个吧。
![]()
这是我第一次尝试用 Go 开发 macOS 应用。不得不说,Go 还是很省内存,我的 app 常驻后台也就使用 40MB 左右的内存。打出来的包整体在 10MB 左右,个人觉得也没比原生应用差太多。
使用倒排索引,即使存了几万条剪贴板记录,搜索起来也是秒开(不过至少要搜 3 个字符)。
取名叫 OnlyPaste,最初只是想做一个纯粹的粘贴工具,但写着写着就收不住了,把我想用的功能全加上了:
- 数十万级别的存储
- 局域网同步:这个是我最刚需的功能。在同一局域网下的两台电脑,复制的内容可以直接同步。不用再通过微信文件传输助手倒腾了,数据只在局域网传输。
- 隐私上锁:有些敏感的剪贴板内容(比如密码、Key ),不希望被别人看到。支持单独上锁,还能加密存储。
- 分组与标签:不再是一锅粥。支持按来源应用分组,也可以给重要的记录打上标签/收藏。
- 直接编辑:复制的内容有一点点小瑕疵不用粘贴出来再改,直接在历史记录里编辑好,再次粘贴就是好的。
- 清理:支持按某些策略清理历史不要的剪贴板数据,我有点强迫症,需要这个。
- 低内存占用:后台 40mb 内存使用
- 支持敏感词过滤
- 支持最大字符数排除
- 支持排除指定应用的复制项
等等
开发过程中也踩了不少坑,特别是 macOS 的沙盒机制和 CGO 的交互,头发都掉了一把( macos 上架对权限要求的太严格了,主要是辅助权限那块)。不过看到成品运行在自己的菜单栏里,还是比较有成就感的。
为啥不用 swift 写?实在是不想再学一个语言,我觉得 go 配合 ai 肯定能胜任,实在不行就写 cgo 调 mac api 嘛。。(事实也的确如此,核心功能、内购基本都是通过 cgo 调用来实现的,还比较复杂)
目前 App 已经基本稳定了,基础功能免费,为了回血搞了个 Pro 版(主要是局域网和显示数量,其他功能都共有),定价也比较便宜。免费版对于日常使用也够了。
大家感兴趣的话可以去下载试试,也欢迎各位大佬提提意见,轻喷哈!
app 下载地址:
https://apps.apple.com/us/app/onlypaste/id6758364019
也可以直接搜 OnlyPaste 。下面放免费码,希望各位大佬体验下,给出意见,感激不尽。
关于技术栈补充一下: 后端用了 Wails v3 (Go),前端是 Vue3 + Naive UI 。为了搞定 macOS 的原生剪贴板监听,还专门写了不少 CGO 代码去调 Cocoa 的 API ,还有内购代码也全部是纯 cgo 写的,有点折磨人了……
- 备案:国内要做 app 备案,需要有服务器和域名……就和网站也要备案一样
- 审核:appstore 审核都是人工的,审核员会实际去装,去使用你的 app,有问题会截图发给你(每次都是凌晨 2 点到 5 点发我……)
送内购免费优惠码,人多再接着发,祝大家新年快乐,事事顺心~
7T6L6KPMY6EP
PPT77L7F4H6H
9A6RXFXPEKLF
WKRKKKLFRAFN
KK3RWA7WLLJL
WANLN9JYT4W9
73X9NJJXP7XA
XRFHYNFKRJKP
NPMTJ44AWKWJ
MLWXX36HR4TM
4YTPY9PNKH3P
9PP4MM4PMEYX
6TP9FK9MJRAL
MFPXYAX3476Y
MEL7JNFP7W7A
3JYTRMWFNWWM
JFFHWAYR36AK
WJ4AKXP44RFK
MRRF497HMXXR
6HNF6FKTHY7M
补充下:mac 设置——隐私与安全——辅助功能给 app 开启后,支持点击后触发自动粘贴;未开启时,会写入系统剪贴板,需要自己粘贴
@buried 好的,用的愉快,有 bug 可以 store 里反馈
MEL7JNFP7W7A 已用
4YTPY9PNKH3P 已用,谢谢楼主
6TP9FK9MJRAL 已用,谢谢楼主,新年快乐