GithubHelp home page GithubHelp logo

huafangyun / syncclipboard Goto Github PK

View Code? Open in Web Editor NEW

This project forked from jeric-x/syncclipboard

0.0 0.0 0.0 3.8 MB

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

License: MIT License

Shell 0.55% JavaScript 4.25% C# 94.69% Batchfile 0.31% Dockerfile 0.21%

syncclipboard's Introduction

SyncClipboard

build

中文 | English

目录

功能

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

服务器

独立服务器

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

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

工作目录与dll所在目录一致,会产生临时文件,在appsettings.json中可以修改绑定的ip和端口,以及客户端认证需要的用户名和密码
如需修改工作目录,拷贝一份appsettings.json到新工作目录并修改--contentRoot后的路径

注意:

  • 默认用户名是admin,密码是admin,端口号是5033
  • 客户端处填写http://ip:端口号http不可省略
  • http使用明文传输(包括本软件用于认证使用的基于Basic Auth的账号密码),在公网部署考虑使用反向代理工具配置SSL
  • 内置服务器并不是WebDAV实现

Docker

你也可以使用Docker轻松部署服务器

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

如需修改用户名和密码,请参考jericx/syncclipboard-server

客户端内置服务器

桌面客户端(Windows/Linux/macOS)内置了服务器,可以使用可视界面配置,注意事项同上

WebDAV服务器

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

注意:

  • 坚果云有每月流量限制和短时间内请求次数限制,建议自行设置桌面端的轮询服务器间隔最大上传文件大小

客户端

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

展开/折叠截图

Windows

下载地址:Release页面中的SyncClipboard.zip,解压缩后运行SyncClipboard.exe

依赖:

Linux, macOS

下载地址:SyncClipboard.Desktop,根据系统选择你需要的安装包

注意:

  • 名称中带有no-self-contained:依赖.NET 6.0桌面运行时ASP.NET Core 6.0运行时
  • 名称中带有self-contained:通常可以直接运行
  • 删除软件时,配置文件目录不会被删除,配置文件储存在~/.config/SyncClipboard/(Linux),~/Library/Application Support/SyncClipboard/(macOS),需要彻底删除软件时请手动删除整个目录
  • 使用debrpm安装包时,每次更新版本需要先删除旧版,再安装新版,不支持直接更新
  • macOS:“SyncClipboard”已损坏,无法打开,在终端中执行sudo xattr -d com.apple.quarantine /Applications/SyncClipboard.app

IOS

  • 手动同步,导入这个快捷指令,手动触发上传或下载
  • 自动同步,导入这个快捷指令,运行后设备会自动在后台同步剪切板内容,此快捷指令将执行无限时长,需要手动关闭,你还可以手动修改同步后是否发送系统通知、查询的间隔秒数

使用JSBox

导入这个js文件,修改usertokenpath字段。作为键盘扩展处理文字时使用,不支持文件

Android

导入这个配置文件,修改变量中的UserNameUserTokenurlHTTP Request Shortcuts支持从下拉菜单、桌面组件、桌面图标、分享菜单中使用

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

使用Autox.js

导入这个js文件,修改脚本中的前几行,并在Autox.js中设置脚本的触发方式,例如:开机时触发

// START  User Config  
const url = 'http://192.168.5.194:5033'               // no slash(/) at the end of url
const username = 'admin'
const token = 'admin'
const intervalTime = 3 * 1000                         // 3 seconds
const showToastNotification = true
// END    User Config  

Autox.js脚本运行在后台时可以自动下载远程剪切板文字到本地,但自动上传依赖下列条件之一

客户端配置说明

全平台依赖三条必要配置(配置的拼写可能会有所不同,含义相同)。windows端可以自定义修改更多配置

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

API

以下是SyncClipboard用到的且SyncClipboard.Server实现了的接口

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

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"
    "Clipboard": "md5 hash, optional",
    "File": "filename"
}

其他查询/创建/删除

PROPFIND    /
PROPFIND    /file
MKCOL       /file
DELETE      /file

项目依赖

Magick.NET
.NET Community Toolkit
H.NotifyIcon
WinUIEx
moq
Avalonia
FluentAvalonia.BreadcrumbBar
FluentAvalonia

syncclipboard's People

Contributors

jeric-x avatar atlantis-gura avatar

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.