惯性聚合 高效追踪和阅读你感兴趣的博客、新闻、科技资讯
阅读原文 在惯性聚合中打开

推荐订阅源

B
Blog RSS Feed
Martin Fowler
Martin Fowler
爱范儿
爱范儿
IT之家
IT之家
Last Week in AI
Last Week in AI
A
About on SuperTechFans
Google DeepMind News
Google DeepMind News
阮一峰的网络日志
阮一峰的网络日志
V
V2EX
aimingoo的专栏
aimingoo的专栏
G
Google Developers Blog
J
Java Code Geeks
Microsoft Azure Blog
Microsoft Azure Blog
美团技术团队
The Cloudflare Blog
MyScale Blog
MyScale Blog
T
The Blog of Author Tim Ferriss
Hugging Face - Blog
Hugging Face - Blog
奇客Solidot–传递最新科技情报
奇客Solidot–传递最新科技情报
云风的 BLOG
云风的 BLOG
Y
Y Combinator Blog
The GitHub Blog
The GitHub Blog
腾讯CDC
Microsoft Security Blog
Microsoft Security Blog

依云's Blog

Wayfire支持不缩放Xwayland啦 - 依云's Blog 使用wayvnc远程访问无头Wayfire会话 - 依云's Blog pacfiles: 高速的 pacman -F 替代品 用 Android 手机当电脑的话筒 - 依云's Blog 使用 ffmpeg 对音频文件进行响度归一化 - 依云's Blog 使用 nftables 屏蔽大量 IP - 依云's Blog YubiKey 初体验 - 依云's Blog fcitx5 码表同步方案 - 依云's Blog 我正在使用的火狐扩展(2024年版) - 依云's Blog 使用 PipeWire 实现自动应用均衡器 如果你发现你的 OOM Killer 在乱杀进程 使用 atuin 管理 shell 命令历史 btrfs 元数据满了怎么办 btrfs 翻车记 在 nspawn 里运行 docker Linux 上的字体配置与故障排除 新的 PaddleOCR 部署方案 使用 EasyEffects 调整 Bose 音箱的体验 让离线软件真正离线 我所讨厌的网页行为 tmux 状态栏优化 Google Chrome 中的字体设置 从 getmail6 到 offlineimap 微信消息通知的困扰 Qt 的字体渲染问题 Wayfire 迁移进展(四):不那么 high 的 DPI Wayfire 迁移进展(二):Xwayland HiDPI 以及 waybar Wayfire 迁移进展 不同情况下的图形效果 Wayland 初体验
X Window 中的剪贴板
依云 · 2013-11-24 · via 依云's Blog

这原本是我在知乎上的一个回答,现在略作修改,放在博客上。


很多 Linux 用户知道,除了通用的Ctrl-C/Ctrl-V剪贴板外,Linux 桌面上还有另一套剪贴板可以用。

首先澄清一下,这个功能不属于 Linux,而是属于它(目前)所广泛使用的显示服务程序——X WindowX Window 的历史比 LinuxVim 都要古老呢。现在所使用的版本 X11 也是 1987 年就已经发布了的。

X Window 目前被广泛使用的用于 X Window 客户端(使用 X Window 的程序)间交换数据的剪贴板有两个:primary selectionclipboard

Primary selection,通常,内容被选择时会被放到这里,按鼠标中键时被获取并粘贴。

例外一火狐浏览器中只有用户主动选择的内容才会被放到 primary selection,由网页代码导致的选择不会修改用户的 primary selection。
例外二Vim / GVim 的「可视」选择默认并不放到 primary selection。有选项可以设置成这样。
例外三:一些网站(如 GitHub)用的 Ace 在线编辑器,在用户「选择」时并不创建真正的选择区,它只在用户按Ctrl-C等键时做一些处理,因此在 Ace 编辑器中选中复制、中键粘贴无效。
例外四Wine 不支持 primary selection。

Clipboard,这就是大家熟悉的剪贴板了,图形界面程序中Ctrl-C复制,Ctrl-V粘贴。终端里因为快捷键会冲突,所以这些图形界面常用的快捷键使用的时候都要按住 Shift 键。

关 于 X Window 剪贴板要注意的地方:以上剪贴板的内容都不是保存在 X 服务器上的,而是客户端程序说,「我请求提供这个剪贴板的数据」(X 服务器通常会允许这样的请求)。另外的程序要粘贴时就会通过 X 服务器向这个程序请求:「请把 XX 剪贴板的数据给我。」所以,X Window 剪贴板上的内容会在拥有它的程序退出后自动被清除。所以一般人会需要用剪贴板管理器来更持久一些地保存剪贴板数据。

关于 X 协议细节可能有些不对,不过大体上是这个样子的啦。

还有没什么程序用到的 secondary selection,以及 Vim 偶尔会用到的 cut buffers(共8个,Vim 和 xterm 会用第一个)。Cut buffers 似乎是由 X 服务器保存数据的。Vim 在挂起时为了避免请求剪贴板数据的程序长时间等待会把自己的选择区内容写到 CUT_BUFFER0。

火狐似乎设置了很短的剪贴板请求超时时间,因此,从远程程序请求剪贴板数据时,可能因为网络延迟导致火狐没有及时得到数据而放弃。