跳转到内容

剪贴板

来自 Arch Linux 中文维基
(重定向自Clipboard

这篇文章的某些内容需要扩充。

原因:描述 Wayland 和 Xwayland 的剪贴板。参考资料:[1][2][3]。 (在 Talk:剪贴板 中讨论)

根据维基百科

剪贴板(英语:clipboard),有时也称剪切板、剪贴簿、剪贴本。它是一种软件功能,通常由操作系统提供,作用是使用复制和粘贴操作短期存储数据和在文档或应用程序间转移数据。

历史[编辑 | 编辑源代码]

在X10(1985),引入了剪切缓冲区。这些是有限的缓冲区,用于存储任意文本,并被大多数应用程序使用。然而,它们效率低下,且实现方式各异,因此引入了选择功能。剪切缓冲区现在已经被长期弃用,尽管一些应用程序(如xterm英语xterm)可能仍然有对它们的遗留支持,但不建议使用它们。

选区[编辑 | 编辑源代码]

Freedesktop.org 将两种主要选区描述如下[4]

PRIMARY
用于当前选定的文本,即使该文本没有显式复制,并用于中键粘贴。在某些情况下,使用快捷键也可以粘贴。
CLIPBOARD
用于涉及键盘快捷键或菜单项的显式复制/粘贴命令。因此,它的行为类似于 Windows 上的单剪贴板系统。与 PRIMARY 不同,它还可以处理多种数据格式

大多数 Xorg 程序,包括 QtGTK 应用程序,遵循此行为。尽管 ICCCM 还定义了 SECONDARY 选区,但它没有一个广泛认同的用途。尽管名称上有三种选区,但它们基本上都是“剪贴板”。与旧的“剪切缓冲区”系统不同,只有一个应用程序可以控制或“拥有”一个选区。这避免了选区操作中的不一致性。

请参见快捷键页面,列出了许多程序的默认快捷键。

还需要注意的是,根据选择协议,直到粘贴之前,什么都不会被复制[5]。例如,如果你在终端窗口中选择了一些文字,关闭终端后想要粘贴到其他地方,它将无法工作,因为终端已经消失,文本并没有被复制到任何地方。如果你希望关闭终端窗口后保存文字,考虑安装剪贴板管理器

注意:剪贴板管理器可以显著改变用户体验,例如,它们可能会同步 PRIMARY 和 CLIPBOARD 选择,以模拟单一剪贴板系统。

禁用中键粘贴[编辑 | 编辑源代码]

以下方法通过自动清除 PRIMARY 来禁用中键粘贴行为,而不禁用中键按钮或更改其其他功能(如在新标签页中打开或滚动)。

全局禁用[编辑 | 编辑源代码]

使用 sxhkd[编辑 | 编辑源代码]

使用 sxhkd,在配置文件中添加以下内容:

~button2
    ;echo -n | xclip -in

该命令使用xclip。请参见 sxhkd#用法配置 sxhkd 以实现自动启动。

使用 xsel[编辑 | 编辑源代码]

运行脚本:

#!/bin/sh
while true; do
    xsel --follow --input --nodetach </dev/null
done

特定应用程序禁用[编辑 | 编辑源代码]

工具[编辑 | 编辑源代码]

本节列出了用于操作剪贴板的命令行工具。

  • sselp — 简单的 X 选区输出工具。将 X 选区打印到标准输出。
https://tools.suckless.org/x/sselp || sselpAUR
  • xclip — 轻量级的命令行剪贴板接口。
https://github.com/astrand/xclip || xclip
  • xsel — 命令行程序,用于获取和设置 X 选区的内容。
http://www.vergenet.net/~conrad/software/xsel/ || xsel
  • wl-clipboard — 用于 Wayland 合成器的简单复制/粘贴工具。
https://github.com/bugaevc/wl-clipboard || wl-clipboard
提示:Wayland 上的剪贴板可以通过 wl-clipboard 使用 wl-paste --primary --watch wl-copy 同步。

管理器[编辑 | 编辑源代码]

本节列出了提供额外功能(如剪贴板历史记录或同步)的剪贴板管理器。

  • Anamnesis — 存储所有剪贴板历史记录的剪贴板管理器,提供一个接口进行全文搜索。提供命令行和 GUI 模式。
https://anamnesis.sourceforge.net/ || anamnesisAUR
  • Autocutsel — 命令行和守护进程接口,用于同步 PRIMARY,CLIPBOARD 和剪切缓冲区选区。
https://www.nongnu.org/autocutsel/ || autocutselAUR
  • Clipboard — 适用于终端的易用剪贴板管理器,支持多种剪贴板、持久剪贴板和正则选择。
https://github.com/Slackadays/Clipboard || clipboardAUR
  • Clipboard Indicator — GNOME Shell的剪贴板管理器扩展。将剪贴板指示器添加到顶部面板,并缓存剪贴板历史记录。
https://github.com/Tudmotu/gnome-shell-extension-clipboard-indicator || gnome-shell-extension-clipboard-indicator-gitAUR
  • Clipcat — 用 Rust 编写的剪贴板管理器,允许用户通过应用启动器(如 dmenurofi)选择剪贴板历史记录。
https://github.com/xrelkd/clipcat || clipcat
  • cliphist — 支持多媒体的 Wayland 剪贴板管理器。
https://github.com/sentriz/cliphist || cliphist
  • ClipIt — Parcellite 的分支,提供命令行和 GUI 模式。
https://github.com/CristianHenzel/ClipIt || clipitAUR
  • Clipman — 适用于 Xfce4 面板的剪贴板管理器插件。它保留剪贴板内容,防止在关闭应用程序时丢失。支持文本和图片,并具有根据正则表达式匹配特定文本选择执行操作的功能。
https://goodies.xfce.org/projects/panel-plugins/xfce4-clipman-plugin || xfce4-clipman-plugin
  • Clipmenu — 基于 Dmenu 的剪贴板管理器
https://github.com/cdown/clipmenu/ || clipmenu
  • Clipmon — 轻量级的 Wayland 剪贴板管理器。作为监控工具,当应用程序自己从剪贴板粘贴时,将发送通知(此功能正在开发中)。
https://git.sr.ht/~whynothugo/clipmon || clipmon-gitAUR
  • clipsim — 用 C 语言编写的简单快速的 X 剪贴板管理器。
https://github.com/lucas-mior/clipsim || clipsim-gitAUR
  • Clipster — 轻量级的命令行驱动剪贴板管理器,用 Python 编写。
https://github.com/mrichar1/clipster || clipsterAUR
  • Clipton — 带有 Rofi 前端的剪贴板管理器。
https://github.com/madprops/clipton || clipton-gitAUR
  • CopyQ — 聪明的 Qt 剪贴板管理器,具有可搜索和可编辑的历史记录、项目上的自定义操作和命令行支持。
https://github.com/hluk/CopyQ || copyq
  • Gnome Clipboard History — GNOME 扩展的剪贴板管理器,可以保存你复制的内容,并以易于访问、可搜索的历史面板显示。
https://github.com/SUPERCILEX/gnome-clipboard-history || gnome-shell-extension-clipboard-historyAUR
  • GPaste — 剪贴板管理系统,旨在成为新一代 Parcellite,具有模块化结构,分为多个库和守护进程以适应不同需求。提供 GNOME Shell 扩展和 CLI 界面。
https://github.com/Keruspe/GPaste || gpaste
https://github.com/erebe/greenclip || rofi-greenclipAUR
  • Klipper — KDE 桌面环境的全功能剪贴板管理器。
https://userbase.kde.org/Klipper || plasma-workspace
  • Parcellite — 轻量且功能丰富的剪贴板管理器,提供命令行和 GUI 模式。
https://parcellite.sourceforge.net/ || parcellite
  • Qlipper — 轻量级的跨平台剪贴板历史记录小程序,基于 Qt。
https://github.com/pvanek/qlipper/ || qlipperAUR
  • xclipboard — 官方的 X 剪贴板命令行客户端。
https://www.x.org/releases/X11R7.5/doc/man/man1/xclipboard.1.html || xorg-xclipboard
  • xcmenu — 为窗口管理器用户开发的剪贴板同步工具。
https://github.com/dindon-sournois/xcmenu || xcmenu-gitAUR

参见[编辑 | 编辑源代码]