8000 GitHub - ramblerSY/SyncClipboard: 跨平台剪贴板同步方案 / Cross-Platform Cipboard Syncing Solution
[go: up one dir, main page]
More Web Proxy on the site http://driver.im/
Skip to content

ramblerSY/SyncClipboard

 
 

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

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

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

Android

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

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

使用Autox.js

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

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

使用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

About

跨平台剪贴板同步方案 / Cross-Platform Cipboard Syncing Solution

Resources

License

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published

Languages

  • C# 95.8%
  • JavaScript 3.0%
  • Other 1.2%
0