クリップボード

提供: ArchWiki
2021年11月15日 (月) 10:05時点におけるKusanaginoturugi (トーク | 投稿記録)による版 (→‎セレクション: space を削除)
ナビゲーションに移動 検索に移動

関連記事

クリップボード より:

クリップボードは、一時的にデータを保存できる共有のメモリ領域のことで、コピーアンドペースト操作による文章やアプリケーション間のデータの移動に使われる。

歴史

"カットバッファ"が導入されたのは X10 でした。カットバッファは任意のテキストを保存する制限付きのバッファで、様々なアプリケーションによって使われました。しかしながら、カットバッファは使い物にならず実装も統一されてなかったので、セレクションが導入されました。久しくカットバッファは非推奨となっていますが、(xterm など) アプリケーションによってはカットバッファのサポートがまだされていることがあります。あまり好ましいことではないので、カットバッファもそれをサポートしているアプリケーションもどちらも推奨されません。

セレクション

Freedesktop.org は二つの主なセレクションを次のように説明しています。[1]

PRIMARY
Used for the currently selected text, even if it is not explicitly copied, and for middle-mouse-click pasting. In some cases, pasting is also possible with a keyboard shortcut.
CLIPBOARD
Used for explicit copy/paste commands involving keyboard shortcuts or menu items. Hence, it behaves like the single-clipboard system on Windows. Unlike PRIMARY, it can also handle multiple data formats.

The majority of programs for Xorg, including Qt and GTK applications, follow this behavior. While ICCCM also defines a SECONDARY selection, it does not have a consensually agreed upon purpose. Despite the naming, all three selections are basically "clipboards". Rather than the old "cut buffers" system where arbitrary applications could modify data stored in the cut buffers, only one application may control or "own" a selection at one time. This prevents inconsistencies in the operation of the selections.

See the Keyboard shortcuts page which lists the default shortcuts in many programs.

It is also important to realize that according to the selection protocols, nothing is copied until it is pasted. For example, if you select some word in a terminal window, close the terminal and then want to paste it somewhere else, it will not work because the terminal is gone and the text has not been copied anywhere. If you want the word to be preserved after closing terminal window, consider installing a clipboard manager.

ノート: Clipboard managers can significantly change the user experience, for example they might synchronize the PRIMARY and CLIPBOARD selections to emulate a single-clipboard system.

予備知識

ICCCM (Inter-Client Communication Conventions Manual) は3つの"セレクション"を定義しています: PRIMARY, SECONDARY, CLIPBOARD。その名前とは異なり、この3つはどれも基本的には"クリップボード"です。旧"カットバッファ"システムでは任意のアプリケーションがカットバッファに保存されているデータに手を出すことができましたが、セレクションをコントロールまたは"所有"することができるアプリケーションは一度に一つのアプリケーションだけです。これによってセレクションを操作するときに整合性が破れるのを防ぎます。ただし、仮想マシンの Windows とクリップボードを共有している (単一のクリップボードシステムを使っている) 場合など、おかしな結果になることもあります。

3つのセレクションのうち、ユーザーが気にする必要があるのは PRIMARY と CLIPBOARD だけです。SECONDARY はときどき PRIMARY の代わりとして使われることがあるにすぎません。アプリケーションによって PRIMARY と CLIPBOARD の扱い方は様々ですが、ある程度の決まり事が存在します。CLIPBOARD は Windows のようなクリップボードとして使用され、PRIMARY はマウスやキーボードでテキストを選択して、中マウスボタンで貼り付けるような、"即座"の使われ方をします。PRIMARY は混乱を生じさせることがあり、場合によっては、悪いアプリケーションによって予期しない結果を生むことがあります。

ツール

この章では、クリップボードを操作するためのコマンドラインツールを紹介します。

  • sselp — Simple X selection printer. Prints the X selection to stdout.
https://tools.suckless.org/x/sselp || sselpAUR
  • xclip — A lightweight, command-line based interface to the clipboard.
https://github.com/astrand/xclip || xclip
  • xsel — Command-line program for getting and setting the contents of the X selection.
http://www.vergenet.net/~conrad/software/xsel/ || xsel
  • wl-clipboard — A simple copy/paste tool for Wayland compositors.
https://github.com/bugaevc/wl-clipboard || wl-clipboard
ヒント: Clipboards on Wayland can be synchronized with wl-clipboard using wl-paste -pw wl-copy.

クリップボードマネージャの一覧

クリップボードマネージャはユーザーがクリップボードを操作できるようにするアプリケーションです。クリップボードマネージャの多くは以前に使用したクリップボードを同期することもできます。

  • Anamnesis — 全てのクリップボード履歴を保存しフルテキスト検索のインターフェースを備えたクリップボードマネージャ。コマンドライン、GUI 両方で使用可能。
http://anamnesis.sourceforge.net/ || anamnesisAUR
  • Autocutsel — PRIMARY, CLIPBOARD とカットバッファの選択を同期するコマンドラインとデーモンのインターフェイス。
https://www.nongnu.org/autocutsel/ || autocutsel
  • Clipboard Indicator — GNOME Shell のクリップボードマネージャ拡張。トップパネルにクリップボードのインジケータを追加して、クリップボードの履歴をキャッシュします。
https://extensions.gnome.org/extension/779/clipboard-indicator/ || https://github.com/Tudmotu/gnome-shell-extension-clipboard-indicator
  • Clipcat — Rust で書かれたクリップボードマネージャー
https://github.com/xrelkd/clipcat || clipcatAUR
  • ClipIt — Parcellite に機能の追加とバグフィックスをしたフォーク。
https://sourceforge.net/projects/gtkclipit/ || clipitAUR
  • Clipman — Xfce のクリップボードマネージャ。通常は中身が失われてしまうアプリケーションの終了をしてもクリップボードの中身を保持し続けます。テキストと画像を処理することができ、正規表現にマッチさせて特定のテキストを選択したときにアクションを実行する機能があります。
https://goodies.xfce.org/projects/panel-plugins/xfce4-clipman-plugin || xfce4-clipman-plugin
  • Clipmenu — Dmenu ベースのクリップボードマネージャ。
https://github.com/cdown/clipmenu/ || clipmenu
  • Clipster — 軽量でコマンドラインによって操作できるクリップボードマネージャ。Python で書かれています。
https://github.com/mrichar1/clipster || clipster-gitAUR
  • CopyQ — 検索・編集できる履歴や、カスタムアクション、コマンドラインサポートのある賢いクリップボードマネージャ。
https://github.com/hluk/CopyQ || copyq
  • Glipper — プラグインをサポートする高機能な GNOME 向けクリップボードマネージャ。
https://launchpad.net/glipper || glipperAUR
  • GPaste — 次世代の Parcellite になることを目指しているクリップボード管理システム。モジュール構造を取っており複数のライブラリとデーモンに分割されています。GNOME Shell 拡張と CLI インターフェイスを提供。
https://github.com/Keruspe/GPaste || gpaste
  • Greenclip — rofi ベースのシンプルなクリップボードマネージャ
https://github.com/erebe/greenclip || rofi-greenclipAUR
  • Keepboard — クロスプラットフォームのクリップボードマネージャ。テキスト・画像・ファイルのクリップボードアイテムを保存します。
https://sourceforge.net/projects/keepboard/ ||
  • Klipper — KDE デスクトップ向けのフル機能のクリップボードマネージャ。
http://userbase.kde.org/Klipper || plasma-workspace
  • Parcellite — 軽量かつ高機能なクリップボードマネージャ。
http://parcellite.sourceforge.net/ || parcellite
  • Pasteall — シンプルで機能的なクリップボードモニタ。
https://github.com/LaraCraft93/Pasteall || pasteallAUR
  • Qlipper — 軽量なクロスプラットフォームのクリップボード履歴アプレット。Qt ベース。
https://github.com/pvanek/qlipper/ || qlipperAUR
  • sselp — シンプルな X セレクションプリンター。 X 選択を stdout に出力します。
https://tools.suckless.org/x/sselp || sselpAUR
  • wl-clipboard — Wayland コンポジタ用のシンプルなコピー/ペーストツール
https://github.com/bugaevc/wl-clipboard || wl-clipboard
  • Xclip — 軽量な、コマンドラインベースのクリップボードインターフェイス。
https://github.com/astrand/xclip || xclip
  • xcmenu — ウィンドウマネージャのユーザーのために開発されたクリップボードシンクロナイザー。
https://github.com/Cloudef/xcmenu || xcmenu-gitAUR
  • xsel — X セレクションの中身を取得・設定するためのコマンドラインプログラム。
http://www.vergenet.net/~conrad/software/xsel/ || xsel

ヒントとテクニック

アプリケーション別のヒント

Konsole ターミナル

konsole ターミナルではテキストのコピーとコマンドの停止の両方が ctl+c ショートカットで行えます。テキストが選択されているかどうかで挙動が変化します。

Gvim の CLIPBOARD

Vim#クリップボードを見てください。

中マウスボタンによる貼り付けの無効化

現在のところ、全てのアプリケーションで中マウスボタンによる貼り付けを無効化する方法は中マウスボタン自体を無効化するしかありません。しかしながらタブを閉じる機能なども使えなくなります。以下のアプリケーションでは個別に無効化できる設定が存在します。

Firefox

Firefox で中マウスクリックによる貼り付けを止めるには about:config で以下のオプションを設定してください:

about:config
middlemouse.contentLoadURL false
middlemouse.paste false

GTK

.config/gtk-3.0
gtk-enable-primary-paste=false

参照