Tmuxの「set-clipboard」オプションの「off」値と「external」値の違いは何ですか?

Tmuxの「set-clipboard」オプションの「off」値と「external」値の違いは何ですか?

からman tmux

set-clipboard [on | external | off]

        Attempt to set the terminal clipboard content using the xterm(1)
        escape sequence, if there is an Ms entry in the terminfo(5)
        description (see the TERMINFO EXTENSIONS section).

        If set to on, tmux will both accept the escape sequence to create
        a buffer and attempt to set the terminal clipboard.  If set to
        external, tmux will attempt to set the terminal clipboard but
        ignore attempts by applications to set tmux buffers.  If off,
        tmux will neither accept the clipboard escape sequence nor
        attempt to set the clipboard.

        Note that this feature needs to be enabled in xterm(1) by setting
        the resource:

              disallowedWindowOps: 20,21,SetXprop

        Or changing this property from the xterm(1) interactive menu when
        required.

Msこれが私がTmuxが外部端末の機能を使用してエンコードされたシーケンスを受信したときのドキュメントを理解する方法です。

  • set-clipboardに設定すると、onこのシーケンスはターミナルクリップボードを設定するために使用されます。そしてTmuxバッファ

  • set-clipboardに設定すると、offターミナルクリップボードの設定にシーケンスは使用されません。...でもないTmuxバッファ

  • set-clipboardに設定すると、externalこのシーケンスはターミナルクリップボードを設定するために使用されます。しかし、Tmuxバッファ

私はXTerm(パッチ322)を使用しており、$TERMに設定されていますxterm-256color。その機能は次のとおりです。用語情報の説明レポートによると$ infocmp -1x xterm-256color。具体的には、そのMs機能は次のように設定されます。

Ms=\E]52;%p1%s;%p2%s\007

これには3つの行しかありません~/.Xresources

XTerm*termName: xterm-256color
XTerm*disallowedWindowOps: 20,21,SetXprop
XTerm*selectToClipboard: true

構成なしでTmuxを起動します。

$ tmux -Lx -f/dev/null

私はそれをset-clipboard次のように設定しましたon

$ tmux set -s set-clipboard on

printfテキストを含むOSC 52シーケンスをTmuxに送信しますtest on

$ printf '\e]52;c;%s\007' $(printf 'test on' | base64)

その結果、Tmuxは内部バッファを作成し、OSC 52シーケンスをXTermに送信してクリップボードを埋めますtest on

$ tmux lsb
buffer0: 7 bytes: "test on"

$ xsel -b
test on

set-clipboardこれで次にリセットしましたoff

$ tmux set -s set-clipboard off

printfテキストを含むOSC 52シーケンスをTmuxに送信しますtest off

$ printf '\e]52;c;%s\007' $(printf 'test off' | base64)

今回は、Tmux が新しい内部バッファを生成しないか、OSC 52 シーケンスを XTerm に送信しません。

$ xsel -b
test on

$ tmux lsb
buffer0: 7 bytes: "test on"

それ以外の場合は、両方のシェルコマンドのいずれかの出力にtest off


最後に、次のようset-clipboardにリセットしましたexternal

$ tmux set -s set-clipboard external

printfテキストを含むOSC 52シーケンスをTmuxに送信しますtest external

$ printf '\e]52;c;%s\007' $(printf 'test external' | base64)

Tmux は新しい内部バッファを生成せず、OSC 52 シーケンスを XTerm に送信しません。

$ xsel -b
test on

$ tmux lsb
buffer0: 7 bytes: "test on"

それ以外の場合は、両方のシェルコマンドのいずれかの出力にtest external


set-clipboardに設定するとon結果がわかりますがoff、に設定すると結果がわかりませんexternal。 Tmuxのマニュアルページの次の文に基づいています。

externalに設定すると、tmuxはターミナルクリップボードを設定しようとしますが、tmuxバッファを設定しようとしているアプリケーションの試みは無視されます。

Tmuxは内部バッファを生成せずにOSC 52シーケンスをXTermに送信したいと思います。実際には内部バッファを生成せず(予想)、OSC 52シーケンスをXTermに送信することもありません(予期しない)。

私がこの文を間違って理解したのは間違いありません。値externalの違いを観察するためにどのような実験を実行できますかoff

ベストアンサー1

いいえ、あなたの言葉は正しくありません。このオプションは、次の2つの操作を制御します。

1)tmuxはXクリップボードを設定するためにOSC 52(またはMsのすべて)を使用しますか?

2)tmux内のアプリケーションはOSC 52を使用してtmuxバッファを生成できますか?

したがって、3つのset-clipboardオプション値の意味は次のとおりです。

  • オフ:1と2はどちらもいいえです。
  • external:はいの場合1、いいえの場合2(デフォルト)
  • on:1と2はどちらも例です。

コピーモードを使用したテキストのコピーいつもtmux バッファを生成します。 set-clipboardはこれには影響しません。 tmuxバッファを生成する方法は3つあります。

  • コピーモードでテキストをコピーする(-X copy-selection/copy-pipe/etc転送):常にtmuxバッファを作成し、set-clipboardがyesの場合はXクリップボードを設定します。いいえ去る。
  • set-buffer/load-buffer: 常に tmux バッファを作成し、X クリップボードを設定しないでください。
  • tmux内部アプリケーションのOSC 52:tmuxバッファの生成そしてXクリップボードを設定しますが、set-clipboardがオンの場合にのみ適用されます。

おすすめ記事