我想禁用我尝试过的每个 Linux 发行版中似乎发生的默认行为,即任何选定的文本都会立即发送到剪贴板(Mint、Ubuntu、Fedora、SuSE 等)和每个窗口管理器(Gnome) 、KDE、Cinnamon),而是表现得更像 Windows 实现。
我知道这是 Linux 中很多人喜爱的行为,而且我相信很多人会认为我是个白痴。我想这样做的原因是,在浏览 GUI 时我是一个键盘迷。 (例如,当我在 Linux 中复制一个 URL,然后切换到浏览器并输入 Ctrl+L 时,它会选择地址栏,并将我想要的粘贴内容下移一级,并将其替换为我想要覆盖的内容。 )我知道有很多解决方法,但我并不真正关心这一点,我更喜欢的是能够切换剪贴板的行为。
答案1
答案2
首先是一个错误的认识:
任何选定的文本都会立即发送到剪贴板
实际上,在接收应用程序请求之前,文本永远不会“发送”到任何地方。当您选择文本时,应用程序仅索赔选择,这基本上意味着它举起一面旗帜,表示从现在起它拥有它。
现在回答你的问题:
在X11中可以有多个选择。其中 2 个具有众所周知的名称并且已标准化。它们称为“主”和“剪贴板”。他们各自的常规行为如下:
- 基本的
- 选择文本时,应用程序声明 PRIMARY
- 应用程序从所属应用程序请求 PRIMARY 并在单击鼠标中键时粘贴其内容。
- 剪贴板
- 当给出显式命令时,应用程序声明 CLIPBOARD,通常是Ctrl- c。
- 应用程序向所属应用程序请求 CLIPBOARD,并在给出显式命令(通常为Ctrl- )时粘贴其内容v。
- 可能还有其他我不确定的规则,例如如果没有应用程序拥有 CLIPBOARD 但某些应用程序拥有 PRIMARY,则将 Primary 粘贴到Ctrl-上v。
看来 CLIPBOARD 已经满足了您的需要。如果需要,您可以忽略 PRIMARY(但请注意,某些较旧的应用程序xterm
可能仅支持 PRIMARY)。就我个人而言,我会做相反的事情:我忽略 CLIPBOARD 并仅使用 PRIMARY。我想这就是我学习使用 X11 的方式,一开始我什至不知道有 CLIPBOARD。但为了缓解您描述的问题,我经常希望有一个可推送和可弹出的主要选择堆栈,这样我就可以在用另一个选择破坏它后“弹出”到前一个选择。
针对您关于是否可以禁用主要行为的明确问题,我认为这将是相当困难的。最直接的方法是在每个应用程序(或应用程序使用的工具包)中单独禁用它,这肯定是不可行的。我认为可以构建一种阻止请求 PRIMARY 的请求的“X11 防火墙”,但我认为这不会真正为您带来比忽略 PRIMARY 和仅使用 CLIPBOARD 所能获得的更多的东西。
更多信息:主要选择和剪贴板缓冲区有什么区别?