出自 Arch Linux 中文维基

這篇文章的某些內容需要擴充。

原因: 描述 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
  • Greenclip英語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

參見