「クリップボード」の版間の差分

提供: ArchWiki
ナビゲーションに移動 検索に移動
(→‎セレクション: space を削除)
20行目: 20行目:
 
[[Freedesktop.org]] は二つの主な''セレクション''を次のように説明しています。[https://specifications.freedesktop.org/clipboards-spec/clipboards-latest.txt]
 
[[Freedesktop.org]] は二つの主な''セレクション''を次のように説明しています。[https://specifications.freedesktop.org/clipboards-spec/clipboards-latest.txt]
   
  +
;PRIMARY: 現在選択されているテキストを明示的にコピーしていない場合でも、マウスを中クリックして貼り付けるときに使用します。キーボードショートカットでも貼り付けられる場合があります。
;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 [https://stackoverflow.com/questions/3571179/how-does-x11-clipboard-handle-multiple-data-formats multiple data formats].
+
;CLIPBOARD: キーボードショートカットやメニュー項目を含む明示的なコピー&ペーストのコマンドに使用されます。従って、Windowsのシングルクリップボードシステムと同じように動作する。PRIMARYとは異なり、[https://stackoverflow.com/questions/3571179/how-does-x11-clipboard-handle-multiple-data-formats 複数のデータ形式]を扱うこともできる。
   
  +
[[Qt]] や [[GTK]] のアプリケーションを含む [[Xorg]] 用のプログラムの大半はこの動作に従います。[https://tronche.com/gui/x/icccm/ ICCCM] は SECONDARY セレクションも定義していますが、これには合意された目的はありません。名前に反して、3 つのセレクションは基本的に 「クリップボード」 です。カットバッファに格納されたデータを任意のアプリケーションが変更できる旧来の「カットバッファ」システムとは異なり、一度に1つのアプリケーションのみが選択項目を制御または「所有」することができます。これにより、セレクションの操作に矛盾が生じることを防いでいます。
The majority of programs for [[Xorg]], including [[Qt]] and [[GTK]] applications, follow this behavior. While [https://tronche.com/gui/x/icccm/ 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.
 
   
  +
また、選択プロトコルによれば、[https://unix.stackexchange.com/questions/213840/how-to-toggle-or-turn-off-text-selection-being-sent-to-the-clipboard/213843#213843 貼り付けられる]までは何もコピーされないことを理解することが重要です。例えば、ターミナルウィンドウで単語を選択し、ターミナルウィンドウを閉じてからどこかに貼り付けようとすると、ターミナルが消えていてテキストがどこにもコピーされていないため、うまくいきません。ターミナルウィンドウを閉じた後も単語を保存しておきたい場合は、[[クリップボードマネージャ]]のインストールを検討してください。
It is also important to realize that according to the selection protocols, nothing is copied [https://unix.stackexchange.com/questions/213840/how-to-toggle-or-turn-off-text-selection-being-sent-to-the-clipboard/213843#213843 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]].
 
   
  +
{{Note|[[クリップボードマネージャ]]はユーザーエクスペリエンスを大きく変えることができます。例えば、PRIMARY と CLIPBOARD の選択を同期させ、シングルクリップボードシステムをエミュレートすることができます。}}
{{Note|[[#Managers|Clipboard managers]] can significantly change the user experience, for example they might synchronize the PRIMARY and CLIPBOARD selections to emulate a single-clipboard system.}}
 
   
 
== 予備知識 ==
 
== 予備知識 ==

2021年12月18日 (土) 14:30時点における版

関連記事

クリップボード より:

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

歴史

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

セレクション

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

PRIMARY
現在選択されているテキストを明示的にコピーしていない場合でも、マウスを中クリックして貼り付けるときに使用します。キーボードショートカットでも貼り付けられる場合があります。
CLIPBOARD
キーボードショートカットやメニュー項目を含む明示的なコピー&ペーストのコマンドに使用されます。従って、Windowsのシングルクリップボードシステムと同じように動作する。PRIMARYとは異なり、複数のデータ形式を扱うこともできる。

QtGTK のアプリケーションを含む Xorg 用のプログラムの大半はこの動作に従います。ICCCM は SECONDARY セレクションも定義していますが、これには合意された目的はありません。名前に反して、3 つのセレクションは基本的に 「クリップボード」 です。カットバッファに格納されたデータを任意のアプリケーションが変更できる旧来の「カットバッファ」システムとは異なり、一度に1つのアプリケーションのみが選択項目を制御または「所有」することができます。これにより、セレクションの操作に矛盾が生じることを防いでいます。

多くのプログラムのデフォルトのショートカット一覧をキーボードショートカットのページで参照してください。

また、選択プロトコルによれば、貼り付けられるまでは何もコピーされないことを理解することが重要です。例えば、ターミナルウィンドウで単語を選択し、ターミナルウィンドウを閉じてからどこかに貼り付けようとすると、ターミナルが消えていてテキストがどこにもコピーされていないため、うまくいきません。ターミナルウィンドウを閉じた後も単語を保存しておきたい場合は、クリップボードマネージャのインストールを検討してください。

ノート: クリップボードマネージャはユーザーエクスペリエンスを大きく変えることができます。例えば、PRIMARY と CLIPBOARD の選択を同期させ、シングルクリップボードシステムをエミュレートすることができます。

予備知識

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

参照