クリップボード
クリップボード より:
- クリップボードは、一時的にデータを保存できる共有のメモリ領域のことで、コピーアンドペースト操作による文章やアプリケーション間のデータの移動に使われる。
目次
歴史
"カットバッファ"が導入されたのは 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.
予備知識
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.
- xclip — A lightweight, command-line based interface to the clipboard.
- xsel — Command-line program for getting and setting the contents of the X selection.
- wl-clipboard — A simple copy/paste tool for Wayland compositors.
クリップボードマネージャの一覧
クリップボードマネージャはユーザーがクリップボードを操作できるようにするアプリケーションです。クリップボードマネージャの多くは以前に使用したクリップボードを同期することもできます。
- Anamnesis — 全てのクリップボード履歴を保存しフルテキスト検索のインターフェースを備えたクリップボードマネージャ。コマンドライン、GUI 両方で使用可能。
- Autocutsel — PRIMARY,
CLIPBOARD
とカットバッファの選択を同期するコマンドラインとデーモンのインターフェイス。
- Clipboard Indicator — GNOME Shell のクリップボードマネージャ拡張。トップパネルにクリップボードのインジケータを追加して、クリップボードの履歴をキャッシュします。
- https://extensions.gnome.org/extension/779/clipboard-indicator/ || https://github.com/Tudmotu/gnome-shell-extension-clipboard-indicator
- Clipcat — Rust で書かれたクリップボードマネージャー
- ClipIt — Parcellite に機能の追加とバグフィックスをしたフォーク。
- Clipman — Xfce のクリップボードマネージャ。通常は中身が失われてしまうアプリケーションの終了をしてもクリップボードの中身を保持し続けます。テキストと画像を処理することができ、正規表現にマッチさせて特定のテキストを選択したときにアクションを実行する機能があります。
- Clipmenu — Dmenu ベースのクリップボードマネージャ。
- Clipster — 軽量でコマンドラインによって操作できるクリップボードマネージャ。Python で書かれています。
- CopyQ — 検索・編集できる履歴や、カスタムアクション、コマンドラインサポートのある賢いクリップボードマネージャ。
- Glipper — プラグインをサポートする高機能な GNOME 向けクリップボードマネージャ。
- GPaste — 次世代の Parcellite になることを目指しているクリップボード管理システム。モジュール構造を取っており複数のライブラリとデーモンに分割されています。GNOME Shell 拡張と CLI インターフェイスを提供。
- Greenclip — rofi ベースのシンプルなクリップボードマネージャ
- Keepboard — クロスプラットフォームのクリップボードマネージャ。テキスト・画像・ファイルのクリップボードアイテムを保存します。
- Klipper — KDE デスクトップ向けのフル機能のクリップボードマネージャ。
- Parcellite — 軽量かつ高機能なクリップボードマネージャ。
- Pasteall — シンプルで機能的なクリップボードモニタ。
- Qlipper — 軽量なクロスプラットフォームのクリップボード履歴アプレット。Qt ベース。
- sselp — シンプルな X セレクションプリンター。 X 選択を stdout に出力します。
- wl-clipboard — Wayland コンポジタ用のシンプルなコピー/ペーストツール
- Xclip — 軽量な、コマンドラインベースのクリップボードインターフェイス。
- xcmenu — ウィンドウマネージャのユーザーのために開発されたクリップボードシンクロナイザー。
- xsel — X セレクションの中身を取得・設定するためのコマンドラインプログラム。
ヒントとテクニック
アプリケーション別のヒント
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