clipcat 架构示意

项目概览

clipcat 是一个用 Rust 编写的剪贴板管理器,目前在 GitHub 上有 548 个 stars,26 个 forks。项目创建于 2020 年 6 月,至今已有近 6 年历史,但仍然保持着活跃的维护状态——最后一次提交是在 3 天前(2026 年 3 月 6 日)。

仓库地址:https://github.com/xrelkd/clipcat

它解决了什么问题

在日常开发工作中,剪贴板是最常用的工具之一。但系统自带的剪贴板有个明显的限制:只能保存最后一次复制的内容。如果你复制了一段代码,然后又复制了另一段,之前那段就再也找不回来了。

剪贴板管理器就是来解决这个问题的。它会记录你复制过的所有内容,并允许你在需要时从历史记录中选择粘贴。市面上已经有不少剪贴板管理器,比如 Maccy(18.8k stars)、CopyQ(11.3k stars),但 clipcat 有着自己独特的优势。

核心特性

1. 跨平台支持

clipcat 目前支持:

  • X11 —— 通过 x11rb 和 arboard 实现
  • Wayland(实验性)—— 通过 wl-clipboard-rs 实现
  • macOS —— 原生支持

这意味着无论你用的是什么桌面环境,clipcat 都能正常工作。特别是对于正在从 X11 迁移到 Wayland 的 Linux 用户来说,这是一个很实用的选择。

2. 客户端-服务器架构

clipcat 采用了 C/S 架构,这是它与大多数剪贴板管理器的不同之处:

clipcatd(服务端):作为守护进程运行在后台,负责监听剪贴板变化、缓存内容、并提供 gRPC/D-Bus 接口。

clipcatctl(客户端):命令行工具,用于与服务端交互,执行列出历史、插入内容、删除条目等操作。

clipcat-menu:配合 Rofi、dmenu、skim 等选择器使用的菜单工具。

这种架构的好处是:

  • 服务端只运行一份实例,资源占用更低
  • 客户端可以远程连接(通过 gRPC over HTTP)
  • 多个客户端可以同时操作同一个剪贴板历史

3. 支持多种内容类型

  • 纯文本粘贴
  • 图片粘贴
  • 持久化存储(重启后历史记录不丢失)
  • 代码片段(snippets)支持

4. 灵活的集成方式

clipcat 提供了多种集成方式:

与 Rofi 集成

clipcat-menu --finder rofi

与 dmenu 集成

clipcat-menu --finder dmenu

与 skim 集成

clipcat-menu --finder skim

命令行直接操作

# 列出所有历史记录
clipcatctl list

# 插入第 5 条记录到剪贴板
clipcatctl insert 5

# 删除第 3 条记录
clipcatctl remove 3

技术实现

clipcat 是用 Rust 编写的,这使得它在性能和安全性上有天然的优势:

  • 内存安全:Rust 的所有权系统避免了内存泄漏和野指针
  • 零成本抽象:高性能的同时保持代码的优雅
  • 并发安全:适合守护进程这种需要长期运行的场景

项目依赖的主要 crate:

  • x11rb —— X11 协议的 Rust 实现
  • arboard —— 跨平台剪贴板操作
  • wl-clipboard-rs —— Wayland 剪贴板支持
  • tonic —— gRPC 实现

安装与配置

安装

clipcat 支持多种安装方式:

通过包管理器(Nix)

nix-env -iA nixpkgs.clipcat

通过 Cargo

cargo install clipcat

预编译二进制文件: 从 GitHub Releases 下载对应平台的二进制文件。

配置

clipcat 使用 TOML 格式的配置文件,通常位于 ~/.config/clipcat/clipcatd.toml

[monitor]
# 监听 X11 还是 Wayland
backend = "x11"

[grpc]
# gRPC 服务监听地址
host = "127.0.0.1"
port = 45045

[history]
# 最大保存条目数
max_entries = 1000
# 持久化文件路径
file_path = "~/.local/share/clipcat/history.json"

启动服务

# 启动守护进程
clipcatd

# 或者使用 systemd
systemctl --user enable clipcatd
systemctl --user start clipcatd

使用体验

我实际测试了 clipcat 在 Ubuntu 24.04 + X11 环境下的表现:

启动速度:clipcatd 启动非常快,几乎没有延迟。

内存占用:作为守护进程运行时,内存占用约 15MB,对于现代计算机来说可以忽略不计。

响应速度:通过 clipcatctl 查询历史记录几乎是即时的,即使在保存了 500+ 条记录的情况下。

与 Rofi 的配合:这是我最喜欢的用法。配置一个快捷键(比如 Super+V),触发 clipcat-menu --finder rofi,就可以在屏幕中央弹出历史记录选择界面,体验非常流畅。

适用场景

clipcat 特别适合以下用户:

  1. Linux 开发者 —— 特别是使用 i3wm、sway 等平铺窗口管理器的用户
  2. 多设备工作流 —— 通过 gRPC 可以远程访问剪贴板历史
  3. 注重隐私的用户 —— 数据完全存储在本地,不会上传到云端
  4. 喜欢命令行的用户 —— 完整的 CLI 支持,可以集成到各种脚本中

同类对比

项目Stars语言特点
Maccy18.8kSwiftmacOS 专用,UI 精美
CopyQ11.3kC++功能丰富,支持脚本
cliphist1.4kGoWayland 专用,配合 wl-clipboard
clipcat548RustC/S 架构,跨平台,gRPC 支持

相比之下,clipcat 的优势在于架构的灵活性和 Rust 带来的性能/安全保证。劣势是社区相对较小,文档还有提升空间。

总结

clipcat 是一个设计精良的剪贴板管理器,Rust 的选型、C/S 架构的设计、以及跨平台的支持都体现了作者的用心。548 个 stars 对于这样一个实用工具来说确实被低估了。

如果你正在寻找一个 Linux 下的剪贴板管理方案,或者对 Rust 系统编程感兴趣,clipcat 值得一试。


项目信息

安装参考

# Nix 用户
nix-env -iA nixpkgs.clipcat

# Cargo 用户
cargo install clipcat

# 或下载预编译二进制
curl -L https://github.com/xrelkd/clipcat/releases/latest/download/clipcat-x86_64-linux -o clipcat
chmod +x clipcat
sudo mv clipcat /usr/local/bin/