Wayland ↔ X11 双向剪贴板同步工具,解决 xwayland-satellite 剪贴板桥接不工作的问题。
在 niri、Hyprland 等 Wayland 合成器下,xwayland-satellite 管理的 X11 应用(如 Electron/Qt X11 模式)无法与 Wayland 原生应用共享剪贴板。clipsync 通过
wl-clipboard+xclip+clipnotify实现双向实时同步。
flowchart LR
subgraph Wayland
A["Wayland App<br/>(Firefox, Kitty...)"]
end
subgraph X11 / XWayland
B["X11 App<br/>(QQ, WeChat...)"]
end
A -- "Ctrl+C" --> WC["Wayland Clipboard<br/>wl_data_device"]
WC -- "wl-paste --watch" --> W2X["clipsync-w2x"]
W2X -- "xclip -sel clip" --> XC["X11 Clipboard<br/>CLIPBOARD selection"]
B -- "Ctrl+C" --> XC
XC -- "clipnotify" --> X2W["clipsync-x2w"]
X2W -- "wl-copy" --> WC
style W2X fill:#4a9,stroke:#333,color:#fff
style X2W fill:#49a,stroke:#333,color:#fff
防止空剪贴板覆盖有效内容(这是 v1.1.0 的关键修复):
flowchart TD
CN["clipnotify 触发"] --> READ["读取 X11 剪贴板"]
READ --> CHECK{"X11 内容为空?"}
CHECK -- "是" --> SKIP["跳过同步<br/>保护 Wayland 内容"]
CHECK -- "否" --> HASH{"与 Wayland 哈希相同?"}
HASH -- "是" --> SKIP2["跳过(已同步)"]
HASH -- "否" --> SYNC["同步到 Wayland"]
yay -S clipsync-gitgit clone https://github.com/123hi123/clipsync.git
cd clipsync
sudo install -Dm755 clipsync clipsync-x2w clipsync-w2x -t /usr/bin/
sudo install -Dm644 clipsync.service /usr/lib/systemd/user/clipsync.service# 启用并立即启动
systemctl --user enable --now clipsync
# 查看同步日志
journalctl --user -u clipsync -f
# 停止
systemctl --user disable --now clipsync./setup.shsetup.sh 会执行以下操作:
| 操作 | 说明 |
|---|---|
| 检查依赖 | xclip, wl-clipboard, clipnotify, xxhash |
| 启用 clipsync | systemctl --user enable --now clipsync |
| 配置 Typora | 写入 ~/.config/typora-flags.conf(Wayland 原生模式 + IME) |
Typora (Electron/Chromium) 在 XWayland 下的 X11 剪贴板注册了 TARGETS 但实际内容为空——这是 Chromium 与 xwayland-satellite 的兼容性问题,clipsync 无法解决。必须让 Typora 以原生 Wayland 模式运行:
--ozone-platform=wayland
--enable-wayland-ime
⚠️ 已知问题:Chromium 的 text-input-v3 在多窗口时可能将输入法内容发送到错误窗口。如遇此问题,尝试添加--disable-features=WaylandTextInputV3。
| 类型 | W→X | X→W |
|---|---|---|
| 纯文本 (UTF8_STRING) | ✅ | ✅ |
| HTML (text/html) | ✅ | — |
| 图片 (PNG/JPEG) | ✅ | ✅ |
| 文件链接 (uri-list) | ✅ | ✅ |
| QQ/微信图片 | ✅ | ✅ |
wl-clipboard— Wayland 剪贴板工具xclip— X11 剪贴板工具clipnotify— X11 剪贴板变化监听xxhash— 高速哈希(用于内容去重)
- clipsync-x2w:新增空值保护 — X11 为空时跳过同步,防止覆盖 Wayland 有效内容
- clipsync-w2x:修复变量名
$EMPTY_MD5→$EMPTY_HASH(原来的空值检查从未生效)
MIT