剪贴板

出自 ArchWiki
(重定向自 PRIMARY)

此条目或章节需要扩充。

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

根据 维基百科

剪贴板是一种用于在文档或应用程序之间进行短期数据存储和/或数据传输的设施,通过 复制和粘贴 操作。

历史

在 X10 (1985) 中,引入了 剪切缓冲区。 这些是存储任意文本并被大多数应用程序使用的有限缓冲区。 然而,它们效率低下且实现方式各不相同,因此引入了选择。 剪切缓冲区早已被弃用,尽管某些应用程序(例如 xterm)可能对其有旧版支持,但不推荐使用,也不太可能使用。

选择

Freedesktop.org 将两个主要的 选择 描述如下:[4]

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

大多数 Xorg 程序,包括 QtGTK 应用程序,都遵循此行为。 虽然 ICCCM 也定义了 SECONDARY 选择,但它没有达成共识的用途。 尽管如此命名,但所有三个选择基本上都是“剪贴板”。 与旧的“剪切缓冲区”系统(任意应用程序可以修改存储在剪切缓冲区中的数据)不同,一次只有一个应用程序可以控制或“拥有”一个选择。 这可以防止选择操作中的不一致。

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

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

注意: 剪贴板管理器 可以显着改变用户体验,例如,它们可以同步 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 编写的剪贴板管理器,允许用户从应用程序启动器(如 dmenu, rofi)中选择剪贴板历史记录。
https://github.com/xrelkd/clipcat || clipcat
  • cliphist — 支持多媒体的 wayland 剪贴板管理器。
https://github.com/sentriz/cliphist || cliphist
  • 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 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

参见