Skip to content

123hi123/clipsync

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

1 Commit
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

Clipsync

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
Loading

空值保护机制

防止空剪贴板覆盖有效内容(这是 v1.1.0 的关键修复):

flowchart TD
    CN["clipnotify 触发"] --> READ["读取 X11 剪贴板"]
    READ --> CHECK{"X11 内容为空?"}
    CHECK -- "是" --> SKIP["跳过同步<br/>保护 Wayland 内容"]
    CHECK -- "否" --> HASH{"与 Wayland 哈希相同?"}
    HASH -- "是" --> SKIP2["跳过(已同步)"]
    HASH -- "否" --> SYNC["同步到 Wayland"]
Loading

安装

AUR(推荐)

yay -S clipsync-git

手动安装

git 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

一键设置(含 Typora Wayland 修复)

./setup.sh

setup.sh 会执行以下操作:

操作 说明
检查依赖 xclip, wl-clipboard, clipnotify, xxhash
启用 clipsync systemctl --user enable --now clipsync
配置 Typora 写入 ~/.config/typora-flags.conf(Wayland 原生模式 + IME)

为什么 Typora 需要特殊配置?

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/微信图片

依赖

v1.2.0 修复内容(相比 v1.1.0)

  1. clipsync-x2w:新增空值保护 — X11 为空时跳过同步,防止覆盖 Wayland 有效内容
  2. clipsync-w2x:修复变量名 $EMPTY_MD5$EMPTY_HASH(原来的空值检查从未生效)

License

MIT

About

Wayland ↔ X11 clipboard sync for xwayland-satellite compositors (niri, Hyprland)

Resources

License

Stars

4 stars

Watchers

0 watching

Forks

Releases

No releases published

Packages

 
 
 

Contributors

Languages