跨平台剪贴板同步、历史记录管理工具 / Cross-platform cipboard syncing, history management tool
C#
5,003
1,262 commits
updated Sep 17, 2026
中文 | English
[!WARNING]
剪贴板历史记录功能处于早期阶段,请做好丢失全部信息的准备,重要信息不要仅依赖本工具保存
v3.1.1及以上的客户端、服务器与之前的版本不兼容,同步网络中的客户端、服务器、第三方客户端需同步升级
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",
"MaxSavedHistoryCount": 1000,
"HistoryRetentionMinutes": 10080
}
}
如需启用HTTPS,请取消https和Certificates部分的注释,并设定HTTPS证书路径。最后将http部分注释或删除以关闭不安全的连接。如需同时启用HTTP和HTTPS,请将二者Url设置为不同的端口号
不同类型证书的配置方法可以参考微软官方文档
用户名和密码支持使用环境变量配置,当环境变量SYNCCLIPBOARD_USERNAME、SYNCCLIPBOARD_PASSWORD均不为空时,将优先使用这两个环境变量作为用户名和密码
环境变量ASPNETCORE_hostBuilder__reloadConfigOnChange用于配置是否自动识别appsettings.json变动并重载配置,默认值为false,修改为任何非false值后会启用此功能
[!WARNING]
HTTP使用明文传输,在公共网络部署服务器请启用HTTPS或使用反向代理工具配置HTTPS。无法从证书颁发机构获取证书时,推荐使用开源工具mkcert或其他方式生成自签名证书
# docker
docker run -d \
--name=syncclipboard-server \
-p 5033:5033 \
-e SYNCCLIPBOARD_USERNAME=your_username \
-e SYNCCLIPBOARD_PASSWORD=your_password \
-v /data/syncclipboard-server:/app/data \
--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.yml
docker compose up -d
首次启动容器后,在容器目录/app/data(即主机/data/syncclipboard-server目录)下会自动创建默认的appsettings.json
修改appsettings.json时,涉及文件路径的,请注意容器与主机间的文件映射关系
paru -Sy syncclipboard-server
配置文件路径为/etc/syncclipboard/appsettings.json,修改配置后使用systemctl命令启动即可:
sudo systemctl enable --now syncclipboard.service
桌面客户端(Windows/Linux/macOS)内置了服务器功能,可以使用可视界面配置
可以使用支持WebDAV协议的网盘作为服务器
测试过的服务器:
桌面客户端支持使用 AWS 官方 S3 SDK 直连 S3,也支持使用兼容 S3 API 的对象存储服务。
添加账号时选择S3,配置以下字段:
Server Address:可选,AWS 可留空;使用兼容 S3 的服务时填写对应 endpointRegion:签名区域,例如us-east-1Bucket Name:用于存储SyncClipboard.json与file/对象的 bucketObject Prefix:可选,建议设置独立前缀(如syncclipboard)隔离数据Force Path-Style Addressing:兼容服务建议开启Access Key ID / Secret Access Key:访问密钥桌面客户端(Windows/Linux/macOS)运行在后台时将自动同步剪贴板

在Release页面下载名字以SyncClipboard_win_开头的exe安装包,双击运行安装程序后即可使用
在Release页面下载名字以SyncClipboard_win_开头的zip文件,解压后运行SyncClipboard.exe
在Release页面下载名字以SyncClipboard_macos_开头的安装包,双击后拖动SyncClipboard图标到Applications文件夹
由于开发者无法验证,“SyncClipboard”无法打开:
在macOS的设置->隐私与安全性页面,点击仍要打开“SyncClipboard”已损坏,无法打开:在终端中执行sudo xattr -d com.apple.quarantine /Applications/SyncClipboard.app在Release页面下载名字以SyncClipboard_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 -version或wl-paste -version命令确认是否已安装deb、rpm安装包时,升级安装失败时,请先删除旧版再安装新版AppImage包时,请确认AppImage文件具有可执行权限[!NOTE]
需要彻底删除SyncClipboard时请手动删除配置文件和临时文件目录:
%AppData%\SyncClipboard\(Windows),~/Library/Application Support/SyncClipboard/(macOS),~/.config/SyncClipboard/(Linux)
关闭已经运行的SyncClipboard,运行新的实例
运行指定命令,{command-name}为命令名称,设置快捷键后,在配置文件中可以查看对应的命令名称,即使清除快捷键配置,命令行参数仍然有效
当存在已经运行的SyncClipboard时,不会启动新的实例,而是调用已经运行的SyncClipboard执行命令。当不存在已经运行的SyncClipboard时,将在启动完成后立刻执行命令
支持多个--command-{command-name}参数,多个命令同时执行
[!NOTE]
macOS使用命令行参数时,请使用可执行程序的完整路径/Applications/SyncClipboard.app/Contents/MacOS/SyncClipboard.Desktop.MacOS
[!WARNING]
导入快捷快捷指令时,可能无法修改服务器信息(#306),可以先不修改服务器信息直接导入,导入后再编辑快捷指令中的服务器信息
这是一个使用 Flutter 构建的 Material 3 风格的、适配了SyncClipboard API的安卓客户端应用,支持从控制中心快捷上传或下载。
功能详情、使用步骤、系统要求等信息请查看该项目的 README
此项目通过AutoJs6基于悬浮窗的后台剪贴板获取方式,实现了Android 10+系统上的后台剪贴板同步能力
这是一个为 Fcitx5-android 开发的插件,借助输入法特权实现与 SyncClipboard 服务的无感剪贴板同步,无需手动获取;同时支持同步大文本、图片、文件等,文件无感下载并智能复制 uri 到剪贴板。
具体使用方法、操作事项等请参见该项目 README.md
一个lsposed模块,实现完全无感自动同步
适配 HarmonyOS Next 的客户端。从 Releases 页面下载 .hap 文件,通过 auto-installer 或 hdc install 命令进行 sideload 安装(受鸿蒙系统限制,暂不支持直接安装)。
全平台依赖三条必要配置(配置的拼写可能会有所不同,含义相同)。
https://domain.com/dav/folder1/working%20folder,特殊符号需要使用url转义字符代替,不要使用这个文件夹存储其他文件。不使用桌面客户端(Windows/Linux/macOS)时需在工作目录中再创建file文件夹以同步文件,桌面客户端会在设置服务器时自动创建file文件夹。url尽量不要以斜线分隔符/结尾,在部分客户端中会出现问题。在独立服务器运行环境下设定环境变量ASPNETCORE_ENVIRONMENT为Development后运行服务器,或桌面客户端打开服务器并打开设置里的诊断模式后,
访问http://ip:端口/swagger/index.html可以打开API描述页面
API路径不以/api/起始的为WebDAV兼容API,实现客户端时,调用此类API可以同时支持基于WebDAV服务器与SyncClipboard官方服务器的剪贴板同步功能,其中的关键API的说明如下
GET /SyncClipboard.json
GET /file/dataName # optional
PUT /file/dataName # optional
PUT /SyncClipboard.json
{
"type": "Text", // or Image/File/Group, required
"hash": "string", // optional, empty string is treated as null
"text": "string", // required
"hasData": true, // or false, required
"dataName": "string", // if hasData is true, required
"size": 0 // optional
}
text储存剪贴板预览字符串,或完整的Text类型剪贴板内容hasData标识是否使用一个额外文件存储完整的剪贴板信息
hasData恒为true.txt文件存储完整字符串,如果这样做,text字段仅储存完整字符串的起始部分内容hash值为剪贴板内容的唯一标识,计算方法请参考docs/Hash.md
hash信息hash值存在时,接收方应验证hash信息与剪贴板内容的一致性,在不一致时执行错误处理流程hash为空时,或处于无法计算hash的环境,可以使用type/text的组合简单判断剪贴板内容的相等性size标识复制文件的总字节大小,或Text类型剪贴板完整字符串的长度,仅用于展示使用 S3 兼容对象存储作为同步后端时的协议与数据格式规范请参阅 S3 Adapter Design。
NativeNotification
Magick.NET
.NET Community Toolkit
H.NotifyIcon
WinUIEx
moq
Avalonia
FluentAvalonia
AsyncImageLoader.Avalonia
Vanara
Tmds.DBus
SharpHook
Quartz.NET
MiSans
如果 SyncClipboard 对你有所帮助,并希望打赏支持,请参阅此处
C#
96.4%
Inno Setup
1.4%
跨平台剪贴板同步、历史记录管理工具 / Cross-platform cipboard syncing, history management tool
C#
5,003
1,262 commits
updated Sep 17, 2026
中文 | English
[!WARNING]
剪贴板历史记录功能处于早期阶段,请做好丢失全部信息的准备,重要信息不要仅依赖本工具保存
v3.1.1及以上的客户端、服务器与之前的版本不兼容,同步网络中的客户端、服务器、第三方客户端需同步升级
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",
"MaxSavedHistoryCount": 1000,
"HistoryRetentionMinutes": 10080
}
}
如需启用HTTPS,请取消https和Certificates部分的注释,并设定HTTPS证书路径。最后将http部分注释或删除以关闭不安全的连接。如需同时启用HTTP和HTTPS,请将二者Url设置为不同的端口号
不同类型证书的配置方法可以参考微软官方文档
用户名和密码支持使用环境变量配置,当环境变量SYNCCLIPBOARD_USERNAME、SYNCCLIPBOARD_PASSWORD均不为空时,将优先使用这两个环境变量作为用户名和密码
环境变量ASPNETCORE_hostBuilder__reloadConfigOnChange用于配置是否自动识别appsettings.json变动并重载配置,默认值为false,修改为任何非false值后会启用此功能
[!WARNING]
HTTP使用明文传输,在公共网络部署服务器请启用HTTPS或使用反向代理工具配置HTTPS。无法从证书颁发机构获取证书时,推荐使用开源工具mkcert或其他方式生成自签名证书
# docker
docker run -d \
--name=syncclipboard-server \
-p 5033:5033 \
-e SYNCCLIPBOARD_USERNAME=your_username \
-e SYNCCLIPBOARD_PASSWORD=your_password \
-v /data/syncclipboard-server:/app/data \
--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.yml
docker compose up -d
首次启动容器后,在容器目录/app/data(即主机/data/syncclipboard-server目录)下会自动创建默认的appsettings.json
修改appsettings.json时,涉及文件路径的,请注意容器与主机间的文件映射关系
paru -Sy syncclipboard-server
配置文件路径为/etc/syncclipboard/appsettings.json,修改配置后使用systemctl命令启动即可:
sudo systemctl enable --now syncclipboard.service
桌面客户端(Windows/Linux/macOS)内置了服务器功能,可以使用可视界面配置
可以使用支持WebDAV协议的网盘作为服务器
测试过的服务器:
桌面客户端支持使用 AWS 官方 S3 SDK 直连 S3,也支持使用兼容 S3 API 的对象存储服务。
添加账号时选择S3,配置以下字段:
Server Address:可选,AWS 可留空;使用兼容 S3 的服务时填写对应 endpointRegion:签名区域,例如us-east-1Bucket Name:用于存储SyncClipboard.json与file/对象的 bucketObject Prefix:可选,建议设置独立前缀(如syncclipboard)隔离数据Force Path-Style Addressing:兼容服务建议开启Access Key ID / Secret Access Key:访问密钥桌面客户端(Windows/Linux/macOS)运行在后台时将自动同步剪贴板

在Release页面下载名字以SyncClipboard_win_开头的exe安装包,双击运行安装程序后即可使用
在Release页面下载名字以SyncClipboard_win_开头的zip文件,解压后运行SyncClipboard.exe
在Release页面下载名字以SyncClipboard_macos_开头的安装包,双击后拖动SyncClipboard图标到Applications文件夹
由于开发者无法验证,“SyncClipboard”无法打开:
在macOS的设置->隐私与安全性页面,点击仍要打开“SyncClipboard”已损坏,无法打开:在终端中执行sudo xattr -d com.apple.quarantine /Applications/SyncClipboard.app在Release页面下载名字以SyncClipboard_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 -version或wl-paste -version命令确认是否已安装deb、rpm安装包时,升级安装失败时,请先删除旧版再安装新版AppImage包时,请确认AppImage文件具有可执行权限[!NOTE]
需要彻底删除SyncClipboard时请手动删除配置文件和临时文件目录:
%AppData%\SyncClipboard\(Windows),~/Library/Application Support/SyncClipboard/(macOS),~/.config/SyncClipboard/(Linux)
关闭已经运行的SyncClipboard,运行新的实例
运行指定命令,{command-name}为命令名称,设置快捷键后,在配置文件中可以查看对应的命令名称,即使清除快捷键配置,命令行参数仍然有效
当存在已经运行的SyncClipboard时,不会启动新的实例,而是调用已经运行的SyncClipboard执行命令。当不存在已经运行的SyncClipboard时,将在启动完成后立刻执行命令
支持多个--command-{command-name}参数,多个命令同时执行
[!NOTE]
macOS使用命令行参数时,请使用可执行程序的完整路径/Applications/SyncClipboard.app/Contents/MacOS/SyncClipboard.Desktop.MacOS
[!WARNING]
导入快捷快捷指令时,可能无法修改服务器信息(#306),可以先不修改服务器信息直接导入,导入后再编辑快捷指令中的服务器信息
这是一个使用 Flutter 构建的 Material 3 风格的、适配了SyncClipboard API的安卓客户端应用,支持从控制中心快捷上传或下载。
功能详情、使用步骤、系统要求等信息请查看该项目的 README
此项目通过AutoJs6基于悬浮窗的后台剪贴板获取方式,实现了Android 10+系统上的后台剪贴板同步能力
这是一个为 Fcitx5-android 开发的插件,借助输入法特权实现与 SyncClipboard 服务的无感剪贴板同步,无需手动获取;同时支持同步大文本、图片、文件等,文件无感下载并智能复制 uri 到剪贴板。
具体使用方法、操作事项等请参见该项目 README.md
一个lsposed模块,实现完全无感自动同步
适配 HarmonyOS Next 的客户端。从 Releases 页面下载 .hap 文件,通过 auto-installer 或 hdc install 命令进行 sideload 安装(受鸿蒙系统限制,暂不支持直接安装)。
全平台依赖三条必要配置(配置的拼写可能会有所不同,含义相同)。
https://domain.com/dav/folder1/working%20folder,特殊符号需要使用url转义字符代替,不要使用这个文件夹存储其他文件。不使用桌面客户端(Windows/Linux/macOS)时需在工作目录中再创建file文件夹以同步文件,桌面客户端会在设置服务器时自动创建file文件夹。url尽量不要以斜线分隔符/结尾,在部分客户端中会出现问题。在独立服务器运行环境下设定环境变量ASPNETCORE_ENVIRONMENT为Development后运行服务器,或桌面客户端打开服务器并打开设置里的诊断模式后,
访问http://ip:端口/swagger/index.html可以打开API描述页面
API路径不以/api/起始的为WebDAV兼容API,实现客户端时,调用此类API可以同时支持基于WebDAV服务器与SyncClipboard官方服务器的剪贴板同步功能,其中的关键API的说明如下
GET /SyncClipboard.json
GET /file/dataName # optional
PUT /file/dataName # optional
PUT /SyncClipboard.json
{
"type": "Text", // or Image/File/Group, required
"hash": "string", // optional, empty string is treated as null
"text": "string", // required
"hasData": true, // or false, required
"dataName": "string", // if hasData is true, required
"size": 0 // optional
}
text储存剪贴板预览字符串,或完整的Text类型剪贴板内容hasData标识是否使用一个额外文件存储完整的剪贴板信息
hasData恒为true.txt文件存储完整字符串,如果这样做,text字段仅储存完整字符串的起始部分内容hash值为剪贴板内容的唯一标识,计算方法请参考docs/Hash.md
hash信息hash值存在时,接收方应验证hash信息与剪贴板内容的一致性,在不一致时执行错误处理流程hash为空时,或处于无法计算hash的环境,可以使用type/text的组合简单判断剪贴板内容的相等性size标识复制文件的总字节大小,或Text类型剪贴板完整字符串的长度,仅用于展示使用 S3 兼容对象存储作为同步后端时的协议与数据格式规范请参阅 S3 Adapter Design。
NativeNotification
Magick.NET
.NET Community Toolkit
H.NotifyIcon
WinUIEx
moq
Avalonia
FluentAvalonia
AsyncImageLoader.Avalonia
Vanara
Tmds.DBus
SharpHook
Quartz.NET
MiSans
如果 SyncClipboard 对你有所帮助,并希望打赏支持,请参阅此处
C#
96.4%
Inno Setup
1.4%