clipcat:一个被低估的 Rust 剪贴板管理器
项目概览
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 特别适合以下用户:
- Linux 开发者 —— 特别是使用 i3wm、sway 等平铺窗口管理器的用户
- 多设备工作流 —— 通过 gRPC 可以远程访问剪贴板历史
- 注重隐私的用户 —— 数据完全存储在本地,不会上传到云端
- 喜欢命令行的用户 —— 完整的 CLI 支持,可以集成到各种脚本中
同类对比
| 项目 | Stars | 语言 | 特点 |
|---|---|---|---|
| Maccy | 18.8k | Swift | macOS 专用,UI 精美 |
| CopyQ | 11.3k | C++ | 功能丰富,支持脚本 |
| cliphist | 1.4k | Go | Wayland 专用,配合 wl-clipboard |
| clipcat | 548 | Rust | C/S 架构,跨平台,gRPC 支持 |
相比之下,clipcat 的优势在于架构的灵活性和 Rust 带来的性能/安全保证。劣势是社区相对较小,文档还有提升空间。
总结
clipcat 是一个设计精良的剪贴板管理器,Rust 的选型、C/S 架构的设计、以及跨平台的支持都体现了作者的用心。548 个 stars 对于这样一个实用工具来说确实被低估了。
如果你正在寻找一个 Linux 下的剪贴板管理方案,或者对 Rust 系统编程感兴趣,clipcat 值得一试。
项目信息
- 仓库:https://github.com/xrelkd/clipcat
- 许可证:GPL-3.0
- 最后更新:2026年3月6日
- 主要维护者:xrelkd
安装参考
# 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/