You're Invited:Meet the Socket Team at BlackHat and DEF CON in Las Vegas, Aug 4-6.RSVP
Socket
Book a DemoInstallSign in
Socket

github.com/Jeric-X/SyncClipboard

Package Overview
Dependencies
Alerts
File Explorer
Socket logo

Install Socket

Detect and block malicious and high-risk dependencies

Install

github.com/Jeric-X/SyncClipboard

v3.0.3+incompatible
Source
Go
Version published
Created
Source

SyncClipboard

build

中文 | English

目录

功能

  • 剪贴板同步,支持文字、图片和文件。服务器/客户端架构,可以使用客户端内置服务器、独立部署服务器,也可以使用支持WebDAV的网盘作为服务器
  • 优化图片类型的剪贴板,功能有:
    • 从任意位置复制图片时,可以直接向文件系统粘贴图片文件,反之亦然
    • 从浏览器复制图片后,后台下载原图到本地,解决无法从浏览器拷贝动态图的问题(大多网站有认证,适用范围有限,支持bilibili动态图片)
    • 从文件系统复制较新格式类型的图片文件时(webp/heic等),在剪贴板内储存gif或jpg格式,用于直接向支持图片的文本框粘贴图片

服务器

独立服务器

SyncClipboard.Server支持跨平台运行,依赖ASP.NET Core 8.0,安装ASP.NET Core 运行时后,通过以下命令运行

dotnet /path/to/SyncClipboard.Server.dll --contentRoot ./

工作目录与dll所在目录一致,需要写入权限。如需修改工作目录,拷贝一份appsettings.json到新工作目录并修改--contentRoot后的路径

服务器配置

服务器通过appsettings.json文件配置,形式如下:

{
  "Logging": {
    "LogLevel": {
      "Default": "Information",
      "Microsoft.AspNetCore": "Warning"
    }
  },
  "AllowedHosts": "*",
  "Kestrel": {
    "Endpoints": {
      "http": {
        "Url": "http://*:5033"
      },
      //"https": {
      //  "Url": "https://*:5033"
      //}
    },
    //"Certificates": {
    //  "Default": {
    //    "Path": "/path/to/pem",
    //    "KeyPath": "/path/to/pem_key"
    //  }
    //}
  },
  "AppSettings": {
    "UserName": "your_username",
    "Password": "your_password"
  }
}

如需启用HTTPS,请取消httpsCertificates部分的注释,并设定HTTPS证书路径。最后将http部分注释或删除以关闭不安全的连接。如需同时启用HTTP和HTTPS,请将二者Url设置为不同的端口号
不同类型证书的配置方法可以参考微软官方文档

用户名和密码支持使用环境变量配置,当环境变量SYNCCLIPBOARD_USERNAMESYNCCLIPBOARD_PASSWORD均不为空时,将优先使用这两个环境变量作为用户名和密码

环境变量ASPNETCORE_hostBuilder__reloadConfigOnChange用于配置是否自动识别appsettings.json变动并重载配置,默认值为false,修改为任何非false值后会启用此功能

[!WARNING]
HTTP使用明文传输,在公共网络部署服务器请启用HTTPS或使用反向代理工具配置HTTPS。无法从证书颁发机构获取证书时,推荐使用开源工具mkcert或其他方式生成自签名证书

Docker

# docker
docker run -d \
  --name=syncclipboard-server \
  -p 5033:5033 \
  -e SYNCCLIPBOARD_USERNAME=your_username \
  -e SYNCCLIPBOARD_PASSWORD=your_password \
  --restart unless-stopped \
  jericx/syncclipboard-server:latest

# docker compose
curl -sL https://github.com/Jeric-X/SyncClipboard/raw/master/src/SyncClipboard.Server/docker-compose.yml
docker compose up -d

如需配置HTTPS,请自行映射appsettings.json和证书文件,appsettings.json的容器内路径为/app/appsettings.json

Arch Linux

可以直接从 AUR 安装(由 @devome 维护):

paru -Sy syncclipboard-server

配置文件路径为/etc/syncclipboard/appsettings.json,修改配置后使用systemctl命令启动即可:

sudo systemctl enable --now syncclipboard.service

客户端内置服务器

桌面客户端(Windows/Linux/macOS)内置了服务器功能,可以使用可视界面配置

WebDAV服务器

可以使用支持WebDAV协议的网盘作为服务器
测试过的服务器:

客户端

桌面客户端(Windows/Linux/macOS)运行在后台时将自动同步剪贴板

展开/折叠截图

Windows

免安装板

Release页面下载名字以SyncClipboard_win_开头的zip文件,解压后运行SyncClipboard.exe

故常排除

  • 支持的最低系统版本为Windows10 2004
  • 在Windows 10中运行SyncClipboard时界面图标大范围出错,请下载安装微软Segoe Fluent Icons图标字体

macOS

手动安装

Release页面下载名字以SyncClipboard_macos_开头的安装包,双击后拖动SyncClipboard图标到Applications文件夹

故常排除

  • 系统提示由于开发者无法验证,“SyncClipboard”无法打开: 在macOS的设置->隐私与安全性页面,点击仍要打开
  • 系统提示“SyncClipboard”已损坏,无法打开:在终端中执行sudo xattr -d com.apple.quarantine /Applications/SyncClipboard.app
  • 快捷键依赖辅助功能权限,软件在需要时会弹窗提示授权

Linux

手动安装

Release页面下载名字以SyncClipboard_linux_开头的安装包

Arch Linux

Arch Linux 用户可以直接从AUR安装(由 @devome 维护):

paru -Sy syncclipboard-desktop

安装后从菜单中启动即可。如果在命令行中使用命令syncclipboard-desktop启动报错,请将环境变量LANG设置为en_US.UTF-8,以LANG=en_US.UTF-8 syncclipboard-desktop来启动。

故常排除

  • 剪贴板同步不及时、无法同步、上传乱码:建议在系统内安装xclip(X11)或wl-clipboard(Wayland),SyncClipboard会使用这些工具辅助获取剪贴板以增强稳定性。使用xclip -versionwl-paste -version命令确认是否已安装
  • 使用debrpm安装包时,升级安装失败时,请先删除旧版再安装新版
  • 快捷键在Wayland可能无法使用
  • 无法自动识别语言,默认为英语,启动后可以在SyncClipboard的设置中修改

[!NOTE]
需要彻底删除SyncClipboard时请手动删除配置文件和临时文件目录:
%AppData%\SyncClipboard\(Windows),~/Library/Application Support/SyncClipboard/(macOS),~/.config/SyncClipboard/(Linux)

桌面客户端命令行参数

--shutdown-previous

关闭已经运行的SyncClipboard,运行新的实例

--command-{command-name}

运行指定命令,{command-name}为命令名称,设置快捷键后,在配置文件中可以查看对应的命令名称,即使清除快捷键配置,命令行参数仍然有效
当存在已经运行的SyncClipboard时,不会启动新的实例,而是调用已经运行的SyncClipboard执行命令。当不存在已经运行的SyncClipboard时,将在启动完成后立刻执行命令
支持多个--command-{command-name}参数,多个命令同时执行

[!NOTE]
macOS使用命令行参数时,请使用可执行程序的完整路径/Applications/SyncClipboard.app/Contents/MacOS/SyncClipboard.Desktop.MacOS

IOS

使用快捷指令

  • 手动同步,导入这个快捷指令,手动触发上传或下载
  • 自动同步,导入这个快捷指令,运行后设备会自动在后台同步剪贴板内容,此快捷指令将执行无限时长,需要手动关闭,你还可以手动修改同步后是否发送系统通知、查询的间隔秒数
  • 自动上传短信验证码,参考这个帖子中的视频教程 https://github.com/Jeric-X/SyncClipboard/discussions/60

Android

使用HTTP Request Shortcuts

导入这个配置文件,修改变量中的UserNameUserTokenurlurl不要以斜线分隔符/结尾。HTTP Request Shortcuts支持从下拉菜单、桌面组件、桌面图标、分享菜单中使用

导入配置文件后修改配置图示

使用Autox.js

  • 自动同步,使用这个js文件。由于安卓系统限制,在安卓10及以上的系统应用无法在后台读取剪贴板,但可以使用基于Root权限的工具(Magisk/Xposed)解除应用后台读取剪贴版的权限,如Riru-ClipboardWhitelistClipboard Whitelist。由于在安卓13及以上的系统应用必须由用户手动授权才被允许访问系统日志(剪贴板),也可以使用Xposed自动为应用授权访问系统日志的权限,如DisableLogRequest/禁用日志访问请求
  • 自动上传验证码,使用这个js文件,这个脚本运行在后台时将读取所有通知消息,在识别到验证码类信息时将证码上传到服务器

导入js文件、修改每个文件头部的用户配置后,手动点击运行,或者为每个js文件设置触发方式,例如:开机时触发

使用SmsForwarder

使用Tasker

Tasker是一款安卓系统上非常强大的自动化工具软件,你可以根据SyncClipboard的API创建适合自己的配置文件,如果你认为你的配置文件非常通用并希望分享出来,欢迎联系我置于此处

客户端配置说明

全平台依赖三条必要配置(配置的拼写可能会有所不同,含义相同)。

  • user
  • password
  • url,格式为http(s)://ip(或者域名):port。使用WebDav服务器时,url需要具体到一个已存在的文件夹作为工作目录,例如https://domain.com/dav/folder1/working%20folder,特殊符号需要使用url转义字符代替,不要使用这个文件夹存储其他文件。不使用桌面客户端(Windows/Linux/macOS)时需在工作目录中再创建file文件夹以同步文件,桌面客户端会在设置服务器时自动创建file文件夹。url尽量不要以斜线分隔符/结尾,在部分客户端中会出现问题。

API

API基于WebDAV,在独立服务器运行环境下设定环境变量ASPNETCORE_ENVIRONMENT为Development后运行服务器,或桌面客户端打开服务器并打开设置里的诊断模式后, 访问http://ip:端口/swagger/index.html可以打开API页面,以下是部分关键API

获取/上传剪贴板(文字)

GET /SyncClipboard.json
PUT /SyncClipboard.json

获取/上传剪贴板(图片/文件)

GET  /SyncClipboard.json
HEAD /file/filename         // optional
GET  /file/filename

PUT /file/filename
PUT /SyncClipboard.json

SyncClipboard.json

{
    "Type" : "Text"
    "Clipboard" : "Content",
    "File":""
}

{
    "Type": "Image", // or "File", "Group"
    "Clipboard": "hash, optional",
    "File": "filename"
}

项目依赖

Magick.NET
.NET Community Toolkit
H.NotifyIcon
WinUIEx
moq
Avalonia
FluentAvalonia.BreadcrumbBar
FluentAvalonia
Vanara
Tmds.DBus
SharpHook
DotNetZip.Semverd
Quartz.NET

FAQs

Package last updated on 18 Jul 2025

Did you know?

Socket

Socket for GitHub automatically highlights issues in each pull request and monitors the health of all your open source dependencies. Discover the contents of your packages and block harmful activity before you install or update your dependencies.

Install

Related posts