# 启动服务器,监听所有网络接口
copi server
# 或者在开发时
cargo run -- server
# 或者指定特定端口
copi server --addr 0.0.0.0:8888# 连接到机器 A (假设机器 A 的 IP 是 192.168.1.100)
copi client --server 192.168.1.100:9527现在,当你在机器 A 或机器 B 上复制任何文本或图片时,它会自动同步到另一台机器的剪贴板。
你可以将多个客户端连接到同一个服务器:
copi servercopi client --server 192.168.1.100:9527copi client --server 192.168.1.100:9527所有三台机器的剪贴板将保持同步。
如果默认端口已被占用:
copi server --addr 0.0.0.0:7777copi client --server 192.168.1.100:7777 --listen 0.0.0.0:7778如果你想在无图形界面的云服务器(如 VPS、Docker 容器等)上运行服务器作为中继节点:
# 使用 relay-only 模式,服务器不会尝试访问剪贴板
copi server --addr 0.0.0.0:9527 --relay-onlycopi client --server 1.2.3.4:9527copi client --server 1.2.3.4:9527在这种设置下,云服务器仅作为中继,转发客户端之间的剪贴板数据,不会尝试访问自己的剪贴板(这在无头服务器上会导致错误)。两台客户端机器的剪贴板可以通过云服务器保持同步。
# 终端 1: 启动服务器
cargo run -- server
# 终端 2: 启动客户端 (连接到本地服务器)
cargo run -- client --server 127.0.0.1:9527
# 终端 3: 测试复制
echo "Hello from macOS" | pbcopyWayland 环境:
# 终端 1: 启动服务器
cargo run -- server
# 终端 2: 启动客户端
cargo run -- client --server 127.0.0.1:9527
# 终端 3: 测试复制 (使用 wl-clipboard)
echo "Hello from Wayland" | wl-copy
# 查看剪贴板内容
wl-pasteX11 环境:
# 终端 1: 启动服务器
cargo run -- server
# 终端 2: 启动客户端
cargo run -- client --server 127.0.0.1:9527
# 终端 3: 测试复制 (需要 xclip)
echo "Hello from X11" | xclip -selection clipboard
# 查看剪贴板内容
xclip -selection clipboard -ocargo build --release创建 ~/Library/LaunchAgents/com.copi.plist:
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
<plist version="1.0">
<dict>
<key>Label</key>
<string>com.copi</string>
<key>ProgramArguments</key>
<array>
<string>/path/to/copi</string>
<string>server</string>
</array>
<key>RunAtLoad</key>
<true/>
<key>KeepAlive</key>
<true/>
</dict>
</plist>加载服务:
launchctl load ~/Library/LaunchAgents/com.copi.plist创建 /etc/systemd/system/copi.service:
[Unit]
Description=Copi Clipboard Sync Service
After=graphical-session.target
[Service]
Type=simple
ExecStart=/path/to/copi server
Restart=always
[Install]
WantedBy=default.target如果在无图形界面的服务器上,使用 relay-only 模式:
[Unit]
Description=Copi Clipboard Sync Service
After=graphical-session.target
[Service]
Type=simple
ExecStart=/path/to/copi server --relay-only
Restart=always
[Install]
WantedBy=default.target启动服务:
sudo systemctl enable copi
sudo systemctl start copi- 检查服务器是否正在运行
- 检查防火墙设置是否允许相应端口
- 确认使用正确的 IP 地址和端口
- 确认剪贴板内容是文本格式(当前版本仅支持文本)
- 检查两端的日志输出
- 确认网络连接稳定
对于 Wayland:
- 确保安装了
wl-clipboard:# Ubuntu/Debian sudo apt install wl-clipboard # Fedora sudo dnf install wl-clipboard # Arch Linux sudo pacman -S wl-clipboard
- 检查环境变量:
echo $WAYLAND_DISPLAY应该有输出(如wayland-0) - 程序启动时会显示 "Detected Wayland, using wl-clipboard backend"
对于 X11:
- 确保安装了必要的系统依赖(参见 README.md)
- 检查环境变量:
echo $DISPLAY应该有输出(如:0)
已知修复的问题:
- ✅ Wayland 上剪贴板同步现在已支持
- ✅ 修复了只能接收一次数据的问题(之前是锁竞争导致的)
- ✅ 支持图片剪贴板同步(PNG 格式)
- 在 Finder 中找一张图片,按 Cmd+C 复制
- 或者在网页上右键图片,选择"复制图片"
- 程序会显示:
Local clipboard changed, sending to server: image (1920x1080) - 在另一台机器上打开任意支持粘贴图片的程序(如图片编辑器),按 Ctrl+V/Cmd+V 粘贴
使用 GNOME Screenshot:
# 截图到剪贴板
gnome-screenshot -c
# 或使用其他截图工具如 Spectacle (KDE)
spectacle -r -c从文件复制图片(需要支持的文件管理器):
- 在文件管理器中右键图片 → 复制
- 或使用命令行:
cat image.png | wl-copy --type image/png