剪贴板

来自 ArchWiki
(重定向自 Clipboard manager)

此文章或章节需要扩充。

理由: 描述 Wayland 和 Xwayland 的剪贴板。参考资料:[1], [2], [3]. (在 Talk:Clipboard 中讨论)

根据 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 的程序,包括 QtGTK 应用程序,都遵循此行为。虽然 ICCCM 也定义了 SECONDARY 选择,但它没有达成共识的用途。尽管名称如此,所有三个 selections 本质上都是“剪贴板”。与旧的 “cut buffers” 系统(任意应用程序可以修改存储在 cut buffers 中的数据)不同,一次只有一个应用程序可以控制或“拥有”一个 selection。这可以防止 selections 操作中的不一致。

请参阅 Keyboard shortcuts 页面,其中列出了许多程序中的默认快捷键。

同样重要的是要认识到,根据 selection 协议,在 粘贴之前 什么都不会被复制。例如,如果您在终端窗口中选择了一些单词,关闭终端,然后想将其粘贴到其他地方,这将不起作用,因为终端已关闭,并且文本尚未复制到任何地方。如果您希望在关闭终端窗口后保留该单词,请考虑安装 clipboard manager

注意: Clipboard managers 可能会显着改变用户体验,例如,它们可能会同步 PRIMARY 和 CLIPBOARD selections 以模拟单剪贴板系统。

禁用鼠标中键粘贴

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

全局地

使用 sxhkd

使用 sxhkd,将以下内容添加到 配置文件

~button2
    ;echo -n | xclip -in

该命令使用 xclip。请参阅 sxhkd#Usage 以配置 sxhkd 自启动。

使用 xsel

运行脚本

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

特定应用程序

工具

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

  • sselp — 简单的 X selection 打印机。将 X selection 打印到 stdout。
https://tools.suckless.org/x/sselp || sselpAUR
  • xclip — 一个轻量级的、基于命令行的剪贴板接口。
https://github.com/astrand/xclip || xclip
  • xsel — 用于获取和设置 X selection 内容的命令行程序。
http://www.vergenet.net/~conrad/software/xsel/ || xsel
  • wl-clipboard — 一个用于 Wayland 合成器的简单 copy/paste 工具。
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 和 cut buffer selections 的命令行和守护程序接口。
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
  • Clipman — Xfce4 面板的剪贴板管理器插件。它可以保留剪贴板内容,而当您关闭应用程序时,剪贴板内容通常会丢失。它能够处理文本和图像,并具有通过将特定文本 selections 与正则表达式匹配来对它们执行操作的功能。
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 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
  • Greenclip — 简单的剪贴板管理器,可与 rofi 集成。
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

另请参阅