クリップボード
クリップボード より:
- クリップボードは、一時的にデータを保存できる共有のメモリ領域のことで、コピーアンドペースト操作による文章やアプリケーション間のデータの移動に使われる。
目次
歴史
"カットバッファ"が導入されたのは X10 でした。カットバッファは任意のテキストを保存する制限付きのバッファで、様々なアプリケーションによって使われました。しかしながら、カットバッファは使い物にならず実装も統一されてなかったので、セレクションが導入されました。久しくカットバッファは非推奨となっていますが、(xterm など) アプリケーションによってはカットバッファのサポートがまだされていることがあります。あまり好ましいことではないので、カットバッファもそれをサポートしているアプリケーションもどちらも推奨されません。
セレクション
Freedesktop.org は二つの主なセレクションを次のように説明しています。[1]
- PRIMARY
- 現在選択されているテキストを明示的にコピーしていない場合でも、マウスを中クリックして貼り付けるときに使用します。キーボードショートカットでも貼り付けられる場合があります。
- CLIPBOARD
- キーボードショートカットやメニュー項目を含む明示的なコピー&ペーストのコマンドに使用されます。従って、Windowsのシングルクリップボードシステムと同じように動作する。PRIMARYとは異なり、複数のデータ形式を扱うこともできる。
Qt や GTK のアプリケーションを含む Xorg 用のプログラムの大半はこの動作に従います。ICCCM は SECONDARY セレクションも定義していますが、これには合意された目的はありません。名前に反して、3 つのセレクションは基本的に 「クリップボード」 です。カットバッファに格納されたデータを任意のアプリケーションが変更できる旧来の「カットバッファ」システムとは異なり、一度に1つのアプリケーションのみが選択項目を制御または「所有」することができます。これにより、セレクションの操作に矛盾が生じることを防いでいます。
多くのプログラムのデフォルトのショートカット一覧をキーボードショートカットのページで参照してください。
また、選択プロトコルによれば、貼り付けられるまでは何もコピーされないことを理解することが重要です。例えば、ターミナルウィンドウで単語を選択し、ターミナルウィンドウを閉じてからどこかに貼り付けようとすると、ターミナルが消えていてテキストがどこにもコピーされていないため、うまくいきません。ターミナルウィンドウを閉じた後も単語を保存しておきたい場合は、クリップボードマネージャのインストールを検討してください。
予備知識
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