支持 selfhosted 的跨平台剪贴板同步方案 - SyncClipboard

对于使用多个平台设备的用户来说,一定会有临时共享剪贴板的需求,比较容易想到的办法是通过各种支持多平台的 IM 软件(微信、Telegram)发送文本给自己,然后再到目标设备手动复制到剪贴板,但是这种办法依然很繁琐。具体步骤如下:

源设备复制 -> 切换到源设备 IM -> 原设备粘贴 -> 源设备点击发送 -> 切换到目标设备 IM -> 目标设备再复制 -> 目标设备粘贴

可以看出来,至少需要 7 步才能完成共享文本操作,这还不包括打开 IM 后查找 发送给自己  的过程。

为了解决这个问题,我使用过一段时间的快贴,体验还可以,可以满足需求,但是免费账户也有限制,每天同步的文本不超过 1MB,超过了需要付费才能用。所以我找到了一款开源的替代品 SyncClipboard。比较棒的是支持 Docker 部署,如果你有 NAS 或者公网服务器,那这个用起来就非常方便。SyncClipboard 同步剪贴板的原理也很简单,就是客户端通过不断的轮询去请求服务器,剪贴板有没有更新。

服务端

如果有 NAS 或者公网服务器,装好 Docker 环境,直接一行命令就装好了:

docker run -d \
  --name=syncclipboard-server \
  -p 5033:5033 \
  --restart unless-stopped \
  jericx/syncclipboard-server:latest

默认端口是 5033,用户名和密码都是 admin,如果需要修改默认用户名和密码可以到 这里 查看具体方法。使用公网服务器部署,还可以自己添加 SSL 反代,增加安全性。

如果没有服务器,也可以直接使用支持 Webdav 的网盘来作为服务器,比如坚果云,但是坚果云又有请求次数限制,像剪贴板这种即时性比较强的应用,轮询间隔当然是越短越好,如果请求次数间隔时间太长,又会导致使用体验大大降低。

桌面端

桌面端提供 macOSWindows  和 Linux 版本,下面以 macOS 为例,介绍如何使用。

如果是 ARM 芯片的 mac,安装完 ARM 版本的客户端,需要先到终端执行如下命令,否则会遇到安装包损坏的提示。

sudo xattr -d com.apple.quarantine /Applications/SyncClipboard.app

打开软件后,把服务器的配置填进去:

mac 端似乎没有开机登录的选项,可以在系统的登录项中手动添加。

如果你只有一台电脑和手机同步,那也可以直接用这台电脑作为服务器。

Android

安卓提供了两种办法,分别是  HTTP Request Shortcuts 和  Autox.js,都是基于 JS 脚本来实现剪贴板的功能。我试过后,感觉 Autox.js 这个方法更方便一点。

到这里下载 AutoX 安卓客户端,安装之后,导入 js 配置,并修改配置中的 url(也就是你的服务器连接地址),username(用户名) 和 token(密码)。 Autox.js
中也可以直接编辑 js 脚本:

修改完之后,把 Autox.js 这个 app 的后台运行权限打开,确保不会被系统杀掉。为 js 配置脚本添加一个定时任务,让 Autox.js 启动时就自动运行。

在管理页面,确保脚本是在运行中的。

至此,就可以试试具体效果了, mac 端复制,手机端就已经提示复制到剪贴板了。

使用 SyncClipboard 后的流程只需要两步:

源设备复制 -> 目标设备粘贴

如果是安卓手机端复制,需要同步到 mac 剪贴板,受限于安卓系统的限制,需要下面条件之一:

如需定制 NAS,可以扫码添加我的微信沟通。提供从硬件到软件的技术支持!