web-dev-qa-db-ja.com

xclipの奇妙な動作

Xclipマニュアルには、プライマリ(XA_PRIMARY)、セカンダリ(XA_SECONDARY)、およびクリップボード(XA_CLIPBOARD)という名前の3つの保存場所があると記載されています。ブラウザからテキストをコピー(Ctrl + c)し、ターミナルで上記の3つの場所の内容を調べました。

xclip -s primary -o
xclip -s secondary -o
xclip -s clipboard -o

3つすべてに同じテキストが含まれています。

今タイプすると

date | xclip -selection XA_PRIMARY

XA_PRIMARYのみに日付テキストを含める必要があります。しかし、実際には他の2つ、つまりXA_SECONDARYとXA_CLIPBOARDにも同じテキスト(日付情報)が含まれています。 3つは同じですか?もしそうなら、ポイントは何ですか?

さらに困惑したのは、Ctrl + Shift + v(まだターミナルモードのまま)が、ブラウザからコピーした元のテキストを貼り付けていることです。これは、シェル自身のクリップボードも動作していることを示唆しています。

3つの場所が同時に異なる値を保持できることと、それらが通常のクリップボードとどのように関連するかを示す例はありますか?

3
elmclose

残念ながら、xclipは無効なコマンドラインオプションを暗黙的に無視します。

-s-selection-silentで始まるため、-sオプションはありません。少なくとも-seを使用する必要があります。

xclip-sオプションを無視するだけなので、コマンド

xclip -s primary -o
xclip -s secondary -o
xclip -s clipboard -o
xclip -s asdfghj -o

すべてデフォルトの選択(primary)を使用します。

選択名には最初の文字のみが実際に使用され、sまたはc以外の場合はデフォルトが使用されます。

date | xclip -selection XA_PRIMARY
date | xclip -selection XA_SECONDARY
date | xclip -selection XA_CLIPBOARD

すべてプライマリ選択を使用します。

のようなものを使う

date | xclip -se p    # write to primary selection
xclip -se c -o        # read from clipboard
3
Florian Diesch

私は不足している点、つまり「なぜ3つの異なるクリップボードを使用するのか」に対処します。

  1. 歴史的には、1つの引数または2を使用してコマンドを発行できます。最初は、PRIMARYのみを操作し、2番目はPRIMARYとSECONDARYの両方を操作します。 「切り替え」メカニズム。または、PRIMARYにあったものをそのまま残しておきたい場合は、バックアップを使用します。しかし、仕様は守られず、さまざまなアプリがさまざまな方法でそれを行いました。
  2. Windows/Macはクリップボードを普及させました。
  3. これは興味深いケースにつながりました:XA_PRIMARYは(設計どおりに)選択に使用され、誰もXA_SECONDARYについて良いアイデアを持っていることはめったになく、XA_CLIPBOARDは...クリップボードのようでした。

xclipxselは、デフォルトでXA_PRIMARYで動作します。これは、ほとんどのXアプリがこのように動作するためです:ifhighlightaテキスト、それはselectedであるため、PRIMARY SELECTIONバッファーに配置されます。

PRIMARYを貼り付ける場合は、マウスの中央ボタンを使用するか、 Shift+Insert。または、その内容をCLIPBOARDに転送して貼り付けますxclip -o | xclip -se c

優れた読書: https://specifications.freedesktop.org/clipboards-spec/clipboards-latest.txt