剪贴板
根据 Wikipedia
- 剪贴板是一种用于文档或应用程序之间短期数据存储和/或数据传输的工具,通过 copy and paste 操作。
历史
在 X10 (1985),引入了 cut buffers。这些是存储任意文本的有限缓冲区,并被大多数应用程序使用。然而,它们效率低下且实现方式各异,因此引入了 selections。Cut buffers 已被长期弃用,尽管某些应用程序(例如 xterm)可能对其有遗留支持,但这既不太可能也不建议使用。
选择
Freedesktop.org 描述了两个主要的 selections 如下:[4]
- PRIMARY
- 用于当前选定的文本,即使它没有被显式复制,以及用于鼠标中键粘贴。在某些情况下,也可以使用键盘快捷键进行粘贴。
- CLIPBOARD
- 用于涉及键盘快捷键或菜单项的显式 copy/paste 命令。因此,它的行为类似于 Windows 上的单剪贴板系统。与 PRIMARY 不同,它还可以处理 multiple data formats。
大多数用于 Xorg 的程序,包括 Qt 和 GTK 应用程序,都遵循此行为。虽然 ICCCM 也定义了 SECONDARY 选择,但它没有达成共识的用途。尽管名称如此,所有三个 selections 本质上都是“剪贴板”。与旧的 “cut buffers” 系统(任意应用程序可以修改存储在 cut buffers 中的数据)不同,一次只有一个应用程序可以控制或“拥有”一个 selection。这可以防止 selections 操作中的不一致。
请参阅 Keyboard shortcuts 页面,其中列出了许多程序中的默认快捷键。
同样重要的是要认识到,根据 selection 协议,在 粘贴之前 什么都不会被复制。例如,如果您在终端窗口中选择了一些单词,关闭终端,然后想将其粘贴到其他地方,这将不起作用,因为终端已关闭,并且文本尚未复制到任何地方。如果您希望在关闭终端窗口后保留该单词,请考虑安装 clipboard manager。
禁用鼠标中键粘贴
以下方法通过自动清除 PRIMARY 来禁用鼠标中键粘贴行为,而不会禁用鼠标中键按钮或改变其其他功能(如在新标签页中打开或滚动)。
全局地
使用 sxhkd
~button2 ;echo -n | xclip -in
该命令使用 xclip。请参阅 sxhkd#Usage 以配置 sxhkd 自启动。
使用 xsel
运行脚本
#!/bin/sh while true; do xsel --follow --input --nodetach </dev/null done
特定应用程序
- GTK — 参见 GTK#Disable mouse paste
- Firefox — 参见 Firefox#Middle-click behavior
- LibreOffice — 可以从 工具 > 选项 > LibreOffice > 视图 > 鼠标 中禁用
工具
本节列出了用于操作剪贴板的命令行工具。
- sselp — 简单的 X selection 打印机。将 X selection 打印到 stdout。
- xclip — 一个轻量级的、基于命令行的剪贴板接口。
- xsel — 用于获取和设置 X selection 内容的命令行程序。
- wl-clipboard — 一个用于 Wayland 合成器的简单 copy/paste 工具。
wl-paste --primary --watch wl-copy
进行同步。管理器
本节列出了提供额外功能的剪贴板管理器,例如剪贴板历史记录或同步。
- Anamnesis — 剪贴板管理器,可存储所有剪贴板历史记录,并提供一个界面以进行全文搜索。它同时具有命令行和 GUI 模式。
- Autocutsel — 用于同步 PRIMARY、
CLIPBOARD
和 cut buffer selections 的命令行和守护程序接口。
- Clipboard — 易于使用的终端剪贴板管理器,具有多个不同的剪贴板、持久剪贴板和正则表达式选择。
- Clipboard Indicator — GNOME Shell 的剪贴板管理器扩展。在顶部面板添加一个剪贴板指示器,并缓存剪贴板历史记录。
- https://github.com/Tudmotu/gnome-shell-extension-clipboard-indicator || gnome-shell-extension-clipboard-indicator-gitAUR
- cliphist — 支持多媒体的 wayland 剪贴板管理器。
- Clipman — Xfce4 面板的剪贴板管理器插件。它可以保留剪贴板内容,而当您关闭应用程序时,剪贴板内容通常会丢失。它能够处理文本和图像,并具有通过将特定文本 selections 与正则表达式匹配来对它们执行操作的功能。
- Clipmenu — 基于 Dmenu 的剪贴板管理器
- Clipmon — Wayland 的轻量级剪贴板管理器。旨在作为一种监控工具,当应用程序自行从剪贴板粘贴时,它会发送通知(此功能正在开发中)。
- clipsim — 用 C 编写的简单快速的 X 剪贴板管理器。
- Clipster — 一个轻量级的、命令行驱动的剪贴板管理器,用 Python 编写。
- Clipton — 具有 Rofi 前端的剪贴板管理器。
- CopyQ — 智能的 Qt 剪贴板管理器,具有可搜索和可编辑的历史记录、项目上的自定义操作和命令行支持。
- Gnome Clipboard History — Gnome Clipboard History 是一个剪贴板管理器 GNOME 扩展,它可以将您复制的内容保存到一个易于访问、可搜索的历史记录面板中。
- GPaste — 剪贴板管理系统,旨在成为新一代 Parcellite,具有模块化结构,分为几个库和一个用于适应性的守护程序。提供 GNOME Shell 扩展和 CLI 接口。
- Greenclip — 简单的剪贴板管理器,可与 rofi 集成。
- Klipper — 适用于 KDE 桌面的全功能剪贴板管理器。
- Parcellite — 轻量级但功能丰富的剪贴板管理器。它同时提供命令行和 GUI 模式。
- Qlipper — 基于 Qt 的轻量级跨平台剪贴板历史记录小程序。
- xclipboard — 官方 X 剪贴板命令行客户端。
- xcmenu — 为窗口管理器用户开发的剪贴板同步器。