#clipboard #wayland #instance #x11 #across #run #synchronize

app clipboard-sync

在同一台机器上同步多个X11和wayland实例的剪贴板

2个不稳定版本

0.2.0 2023年8月3日
0.1.0 2022年11月15日

#375 in Unix API

MIT/Apache

39KB
802

Clipboard Sync

在同一台机器上同步多个X11和wayland实例的剪贴板。

使用案例

  • 提高Wayland兼容性:您已经在系统中启用了对wayland的支持,但您的计算机无法在X11和wayland窗口之间同步剪贴板。clipboard-sync可以解决这个问题。 更多详情
  • VNC:您运行了一个VNC服务器,并希望同一用户的所有主机和客户端登录共享相同的剪贴板。
  • 多显示器:您在多个ttys中运行了两个或更多桌面环境或窗口管理器,使用ctrl-alt-F*在桌面之间切换。
  • 嵌套Wayland:您在一个窗口中运行了wayland合成器。示例
    • 您主要使用KDE,但在窗口中运行sway以将所有消息应用合并到一个单独的平铺/选项卡窗口中。
    • 您使用GNOME并为GNOME开发扩展,因此您运行一个嵌套的GNOME环境进行测试。

安装

使用系统的包管理器安装clipboard-sync。如果您的系统不受支持,请在相应的问题上投票,或者如果不存在则创建一个。

Arch Linux

clipboard-sync 在Arch用户仓库中可用。

Ubuntu & Debian

从官方仓库安装

sudo wget -P /etc/apt/sources.list.d/ https://raw.githubusercontent.com/dnut/deb/master/dnut.list
sudo apt update && sudo apt install clipboard-sync

高级安装

如果您的系统不受支持,您还有两种其他选择

  • 通用Linux
    • 自动干净地安装或卸载整个包。
    • 需要额外的步骤来获取源代码。
  • Cargo
    • 仅安装可执行文件,需要手动运行。
    • 如果需要,需要额外的步骤手动编辑和安装systemd服务。
    • 如果您使用cargo-update,它可以使更新可执行文件更容易。

通用Linux

从源码构建,然后安装系统范围内或仅对当前用户

sudo make install  # system
make user-install  # user

可以轻松卸载

sudo make uninstall  # system
make user-uninstall  # user

Cargo

clipboard-sync已发布到crates.io,因此可以像普通二进制crate一样安装。

  1. 安装rust: https://rust-lang.net.cn/tools/install
  2. 安装clipboard-sync
cargo install clipboard-sync
  1. 如果您希望它在后台运行,可以使用tmux,或者您可以手动下载systemd服务文件并将其复制到systemd文件夹。您可以使用此命令将其下载到正确路径,之后可能需要手动编辑文件以指向正确的二进制位置
wget -P "$HOME/.config/systemd/" https://raw.githubusercontent.com/dnut/clipboard-sync/master/clipboard-sync.service

可以轻松卸载

cargo uninstall clipboard-sync
rm -r "$HOME/.config/systemd/clipboard-sync.service"

Ubuntu & Debian (高级)

除了从官方仓库安装外,您还可以从源码构建并安装deb包。按照说明从源码构建,然后创建deb文件并安装

make deb && sudo apt install ./dist/deb/clipboard-sync_*.deb

从源码构建

  1. 确保您有构建依赖项:rust make gcc libc libxcb
  • 使用rustup安装rust: https://rust-lang.net.cn/tools/install
  • 其余部分
    • arch linux: sudo pacman -Syu make gcc libxcb
    • debian/ubuntu: sudo apt install make gcc libxcb1-dev libxcb-render0-dev libxcb-shape0-dev libxcb-xfixes0-dev
  1. 发布页面下载源码并解压。或者,选择以下命令之一下载源码
wget -O- https://github.com/dnut/clipboard-sync/archive/refs/tags/0.2.0.tar.gz | tar xvz
curl -L https://github.com/dnut/clipboard-sync/archive/refs/tags/0.2.0.tar.gz | tar xvz
git clone https://github.com/dnut/clipboard-sync.git --branch stable
  1. 编译程序
cd clipboard-sync*
make

可执行文件在这里

./target/release/clipboard-sync

用法

典型的设置并忘记的方法是启用服务

systemctl --user enable --now clipboard-sync

如果您不希望它持续运行,仅在需要时运行,请不要使用systemd。根据需要直接调用二进制文件

clipboard-sync

您还可以使用tmux而不是systemd将clipboard-sync守护化。这些命令的~/.bashrc别名可能很有用。

tmux new-session -ds clipboard-sync clipboard-sync  # start in background
tmux attach -t clipboard-sync                       # view status
ctrl-b, d                                           # while viewing status, send back to background
ctrl-c                                              # while viewing status, terminate the process

依赖项

~10–24MB
~309K SLoC