![如何将X选择的内容粘贴为纯文本](https://linux22.com/image/217593/%E5%A6%82%E4%BD%95%E5%B0%86X%E9%80%89%E6%8B%A9%E7%9A%84%E5%86%85%E5%AE%B9%E7%B2%98%E8%B4%B4%E4%B8%BA%E7%BA%AF%E6%96%87%E6%9C%AC.png)
我经常将 Firefox 上显示的网站内容复制到 LibreOffice Writer(政府管理员强迫我使用它),而且我非常喜欢通过突出显示中键单击来使用 X 选择。默认行为是将网页上存在的样式复制到 LibreOffice 中,这不是我想要的。
如何强制 SELECTION 的内容始终为纯文本?我可以通过每 100 毫秒左右运行一次来做到这一点xclip
,但我宁愿有一个更干净的解决方案。
答案1
X 选择不仅仅是一件事:纯文本、图像等。它们通常以所谓的“目标”的形式同时存在多个:
% xclip -sel clip -o -t TARGETS
TIMESTAMP
TARGETS
SAVE_TARGETS
MULTIPLE
STRING
UTF8_STRING
TEXT
text/plain
text/plain;charset=utf-8
可用的目标取决于您复制的内容以及从中复制的应用程序选择提供的内容。
大概在您的xclip
循环中,您只是再次粘贴和复制,这可能会使用对您来说看起来像纯文本的版本,并且还使 xclip 成为所选内容的所有者,而不是原始应用程序。
您可以做的不是这个循环,是在粘贴时使用窗口管理器或桌面环境提供的任何绑定运行这样的脚本,使用text/plain
或替代的类似目标:
#!/bin/bash
out=$(xclip -sel PRIMARY -o -t text/plain; printf x)
xdotool type "${out%x}"
* printf/strip 确保保留尾随行,否则尾随行将被命令替换删除。