[开源] 一个剪贴板实时同步工具 | UniClipboard - V2EX
爱意满满的作品展示区。
mkdir700

[开源] 一个剪贴板实时同步工具 | UniClipboard

  •  
  •   mkdir700 1 day ago 1236 views

    输入图片说明

    为什么要做这个?

    我先讲一讲为什么做这个,对这个部分不感兴趣的小伙伴,可以直接跳到下方的介绍部分。

    在上家公司是做机械臂的,每个人会佩两台电脑,一台是 Ubuntu 台式机,另一台是 Windows 笔记本。我们开发用的 Ubuntu + Teams 办公,部署和其他同事都使用的 Windows 笔记本 + 企业微信,所以经常互相发送截图,接受日志文件等等操作,需要在两台设备间传输。

    如果只是文件传输,很多工具都可以做到了,比如:LocalSend

    但程序猿就是非常懒的,我更期望的是在这台电脑上复制,然后直接在另一台电脑上粘贴。我不想去先打开传输工具,找到文件,上传,然后在另一台设备上下载。

    所以,经过我跌跌撞撞经历了半年的开发,近 3000 次 commit 开发了 UniClipboard

    介绍

    25 秒演示视频: https://www.bilibili.com/video/BV1QGLp64E6q/

    文本、图片、文件,复制粘贴全覆盖

    桌面端是无感同步,复制完直接到对端粘贴,不用点任何按钮。

    P2P 端到端加密传输

    两台设备先用匹配码交换连接信息,之后双方直连通信,不经过第三方服务器。

    遇到 NAT 就先打洞,打不通才走中继兜底。即便走中继,中继也看不到具体内容 传输前已经做过加密。

    也就是说,跨网段、跨公网都能同步,不局限于局域网。

    加密存储

    剪贴板工具都会有持久化存储的功能,但剪贴板内容本身就是非常敏感的,所以在存储这些内容时,我采用了 XChaCha20-Poly1305 加密算法去做加密存储,加解密的口令保存在系统的 Keychain / 凭据管理器里

    五端覆盖

    macOS/Windows/Linux(wayland&x11)/iOS/Android 全覆盖。桌面端是无感同步的,后台运行即可。移动端因为系统限制的原因,需要用户主动式的触发才能访问到剪贴板,比如通过分享入口来分享文字、图片和文件。

    移动端有些不完善的地方:

    1. 目前是只支持局域网;
    2. iOS 原生 APP 正在开发中,当前是用快捷指令替代
    3. 安卓 APP fork 了 SyncClipboard (另一款剪贴板同步工具)的安卓端,做了协议兼容,感谢开源!

    还有个纯 Rust 的 CLI 版本

    桌面端是 Rust + Tauri2 ,虽然安装包 20MB ,看着小小的,但运行时带 WebView ,实际内存占用 200MB 左右。

    我自己后台常驻嫌它太重和为了方便端到端测试,就另外写了一个 CLI 版本,纯 Rust 实现。

    为什么不用 XXX ?

    为什么不用微信输入法 ?

    微信输入法支持文字和图片的云同步,同时支持桌面端和移动端。

    1. 微信不支持 Linux 环境
    2. 隐私内容会上云,我不知道腾讯有没有做加密存储
    3. 有自己想用的输入法软件,比如 Rime

    为什么不用 LocalSend

    LocalSend 确实很强:开源、跨平台、局域网点对点,不走云不要账号,作者从 2022 年开源到现在一直在迭代,GitHub 几万 star ,我自己平时也在用。

    但它的核心是「点对点传文件」 选设备、选文件、对面点确认、等传完。我要的是 Ctrl+C / Ctrl+V

    为什么不用 Barrier/Deskflow

    用,而且非常好用。这两个工具可以将两台电脑共享一套键鼠,但是剪贴板共享只是他们的附属功能,文本和图片可以同步,但文件好像不行。

    所以,我现在就禁用它们的剪贴板共享功能,换作使用 UniClipboard ,这样两台电脑共享一套键鼠,一个剪贴板。

    最后

    项目是 AGPL-3.0 开源的,代码可以审计,也可以自己构建。

    如果你有任何问题或反馈,欢迎下方留言。

    GitHub:https://github.com/uniclipboard/uniclipboard 官网:https://uniclipboard.app

    25 replies    2026-05-20 10:48:54 +08:00
    yukminnie
        1
    yukminnie  
       1 day ago
    关注很久了,之前搜到好几款 syncclipboard ,clipshare ,linkboard ,后来移动端那个叫说点啥的语音输入法也支持了这个同步的协议,但它是通过 WebDAV 同步的,用下来有点小问题。我因为手头只有一台电脑,所以电脑和手机同步是硬需求,最后选择了 linkboard ,主要是因为他搞了一个移动端,可以注册为系统输入法,省了切换和悬浮窗口这些步骤,在临时需要频繁同步的时候,我就切过去。日常使用一个闭源软件叫 flix 的,它是一个类似于 Feem 和 localsend 的局域网传输文件的工具,附带了一个剪贴板同步的功能。咱们这个软件如果不依赖 WebDAV 就可以内外网同步,确实是一个大优势,和其他几个思路不一样。其实我一直想,如果安卓端的开源输入法能接入类似工具的同步的话,就太好了。
    xiaoliuzhenshuai
        2
    xiaoliuzhenshuai  
       1 day ago
    建议在下载页面加个解释,比如:arm64-v8a 现在绝大多数安卓手机64 位 ARM ,性能最好、体积较小,优先选这个
    armeabi-v7a 很老的安卓手机 32 位 ARM ,老设备用,现在新手机一般不需要
    x86_64 安卓模拟器、少数 Intel 架构设备 普通手机基本不用
    universal 所有架构都兼容 包含多个架构,最稳但安装包更大
    mkdir700
        3
    mkdir700  
    OP
       1 day ago
    @xiaoliuzhenshuai 好的,很实用的建议,
    mkdir700
        4
    mkdir700  
    OP
       1 day ago
    @yukminnie 手机输入法集成是最优解(排除安卓 shizuku 这类工具),就像微信输入法那样,因为可以无感的读取剪贴板。对用户习惯破坏也是最大的,因为要让用户强制适应新的输入法,但用户对输入法工具的黏性都挺高的,更喜欢自己顺手的。所以,当前就只做到了主动分享的形式来同步剪贴板。

    你有用什么开源输入法吗,有开放的接口,说不定可以支持下
    JackalZhao
        5
    JackalZhao  
       1 day ago
    我现在用的是联想的「超级互联」,很好用,但他的问题是 windows 端在后台无缘无故占用 cpu
    mkdir700
        6
    mkdir700  
    OP
       1 day ago
    @JackalZhao 刚去搜了下,停服了,尴尬。估计每人维护了。
    mkdir700
        7
    mkdir700  
    OP
       1 day ago
    @mkdir700 哦哦看错了,现在改名叫 Smart Connect ,用这个试试呢
    JackalZhao
        8
    JackalZhao  
       1 day ago
    一个想法,能不能蓝牙共享?

    有的时候,手机连着流量,在电脑旁边,没有开 wifi ,而笔记本连着局域网,这时物理上相近,但网络上直连不到,打开手机等待连接 wifi 要浪费好几秒。
    Varvel
        9
    Varvel  
       1 day ago
    老板,TF 多久发放一次
    mkdir700
        10
    mkdir700  
    OP
       1 day ago
    @Varvel 邀请啦
    mkdir700
        11
    mkdir700  
    OP
       1 day ago
    @JackalZhao 这个属于跨公网同步(如果走网络的话),蓝牙可以考虑试试看。目前正在将桌面端 p2p 方案迁到移动端,这样移动端也可以支持跨公网同步,应该可以覆盖到你这种情况。蓝牙的话,有时间的话可以做一下调研试试,毕竟延迟肯定比跨公网延迟更低。
    JackalZhao
        12
    JackalZhao  
       1 day ago
    蓝牙通信是可行的,Unified Remote Control 多端支持,可以蓝牙控制电脑,甚至能传输屏幕画面。它能验证可行性,只是它没有开源
    AASW2ss
        13
    AASW2ss  
       1 day ago
    这个功能确实很需要。目前大家主要用的还是搜狗吧,下半年也要上剪贴板同步功能了
    JackalZhao
        14
    JackalZhao  
       1 day ago
    我又找到了元老级软件「百变遥控」,2012 年就有了,我刚下载了,还能用,手机能蓝牙连接到电脑远程摇控,还能传输电脑画面,可以用作参考。之前我就想为何它不加个剪贴板同步功能。可惜后来没再更新。其实如果能做蓝牙连接共享的话,跨网络设备通信的问题就很好解决了。
    Varvel
        15
    Varvel  
       1 day ago
    @mkdir700 #10 不是 TF 吗,怎么拉 connect 里去了
    explorerproxy
        16
    explorerproxy  
       1 day ago
    有用 crosspaste 和章鱼快贴,等有空试试这个
    mkdir700
        17
    mkdir700  
    OP
       1 day ago
    @Varvel 第一次操作这个,我添加人到 TF ,好像只能从 connect 里面拉人,所以我先把人拉到 connect ,然后才能拉到 TF ,我不知道是不是这么操作的,我再研究研究
    NASK
        18
    NASK  
       1 day ago
    目前用的 SyncClipboard 挺好用的.有空了试试这个
    mkdir700
        19
    mkdir700  
    OP
       1 day ago
    @NASK 嗯嗯,安卓端就是 fork 的 SyncClipboard ,兼容了这个开源项目的接口,准备在这个基础上进行二开,比如增加 P2P 跨公网同步的功能。 我自己有这个需求,在我们公司,手机不能接入 wifi ,所以有些时候仅靠局域网也不行。
    mkdir700
        20
    mkdir700  
    OP
       1 day ago
    @explorerproxy 嗯嗯好的,我也去看看其他产品,学习学习下,哈哈哈
    lockheart
        21
    lockheart  
       11h 32m ago via iPhone
    testflight 多久才会发?申请了没有收到
    mkdir700
        22
    mkdir700  
    OP
       2h 41m ago
    @lockheart 久等啦,我去搞了 beta 版本的,直接用这个下载使用吧 https://testflight.apple.com/join/nyNQ8dQe
    lockheart
        23
    lockheart  
       37 mins ago
    @mkdir700 能兼容下 26.1 吗?
    Varvel
        24
    Varvel  
       14 mins ago
    @mkdir700 成功加入 TF ,提一个 future ,可以在 PC 端进行文本处理,比如正则匹配后修改和替换。还有追加前缀和后缀等等。
    Varvel
        25
    Varvel  
       3 mins ago
    @Varvel 遇到了 PC 从浏览器地址栏复制网址,手机端同步异常。
    <html>
    <body>
    <!--StartFragment--><a href=" ">[开源] 一个剪贴板实时同步工具 | UniClipboard - V2EX</a ><!--EndFragment-->
    </body>
    </html>
    About     Help     Advertise     Blog     API     FAQ     Solana     5553 Online   Highest 6679       Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 69ms UTC 02:52 PVG 10:52 LAX 19:52 JFK 22:52
    Do have faith in what you're doing.
    ubao msn snddm index pchome yahoo rakuten mypaper meadowduck bidyahoo youbao zxmzxm asda bnvcg cvbfg dfscv mmhjk xxddc yybgb zznbn ccubao uaitu acv GXCV ET GDG YH FG BCVB FJFH CBRE CBC GDG ET54 WRWR RWER WREW WRWER RWER SDG EW SF DSFSF fbbs ubao fhd dfg ewr dg df ewwr ewwr et ruyut utut dfg fgd gdfgt etg dfgt dfgd ert4 gd fgg wr 235 wer3 we vsdf sdf gdf ert xcv sdf rwer hfd dfg cvb rwf afb dfh jgh bmn lgh rty gfds cxv xcv xcs vdas fdf fgd cv sdf tert sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf shasha9178 shasha9178 shasha9178 shasha9178 shasha9178 liflif2 liflif2 liflif2 liflif2 liflif2 liblib3 liblib3 liblib3 liblib3 liblib3 zhazha444 zhazha444 zhazha444 zhazha444 zhazha444 dende5 dende denden denden2 denden21 fenfen9 fenf619 fen619 fenfe9 fe619 sdf sdf sdf sdf sdf zhazh90 zhazh0 zhaa50 zha90 zh590 zho zhoz zhozh zhozho zhozho2 lislis lls95 lili95 lils5 liss9 sdf0ty987 sdft876 sdft9876 sdf09876 sd0t9876 sdf0ty98 sdf0976 sdf0ty986 sdf0ty96 sdf0t76 sdf0876 df0ty98 sf0t876 sd0ty76 sdy76 sdf76 sdf0t76 sdf0ty9 sdf0ty98 sdf0ty987 sdf0ty98 sdf6676 sdf876 sd876 sd876 sdf6 sdf6 sdf9876 sdf0t sdf06 sdf0ty9776 sdf0ty9776 sdf0ty76 sdf8876 sdf0t sd6 sdf06 s688876 sd688 sdf86