从深层次上讲,如何将内容复制到剪贴板?是否有文件存储我复制的文本或图像?
我发现剪贴板的内存位置这个问题从未得到解答。我还发现了很多关于 xclip 的引用。我目前没有安装 xclip,但我的剪贴板工作正常——例如,我可以从 Firefox 复制某些内容并将其粘贴到终端中,没有任何问题。所以,显然一定有事情发生在与 xclip 不同的层面上。那是什么?它是如何工作的?
答案1
X 处理剪贴板,您可以在此处阅读相关内容。 https://specifications.freedesktop.org/clipboards-spec/clipboards-latest.txt
X11 剪贴板(称为选择)在 ICCCM 中定义。 https://www.x.org/releases/X11R7.6/doc/xorg-docs/specs/ICCCM/icccm.html
引用上面的链接。
可以有任意数量的选择,每个选择都由一个原子命名。但是,为了符合客户端之间的约定,客户端只需处理以下三个选择:
基本的
次要
剪贴板
这些选择都存储在内存中,不会写入磁盘。
值得一读的是X 选择、剪切缓冲区和 Kill Ring。 https://www.jwz.org/doc/x-cut-and-paste.html
另一篇值得一读的是编写跨平台剪贴板库 https://jtanx.github.io/2016/08/19/a-cross-platform-clipboard-library/
如果您对如何在语法上与 X11 选择进行交互感兴趣,那么一定要查看 GitHub 上的 xclip 源代码。https://github.com/astrand/xclip