
tmux 内では printf コマンドを使用できません。
背景をその場で変更するコマンドは次のとおりです。
printf "\e]20;/home/alexsson/Downloads/alternativ.png;\a"
これを urxvt で直接実行できます。
画面内にも:
しかし、この printf コマンドは tmux では動作しません。
tmux でこれを動作させる方法をご存知ですか?
追記: ここにも同様の質問があります:tmux と制御シーケンス文字の問題ただし、正しい検索用語を使用しないと、その質問を見つけるのは困難です。私の投稿は、どの検索用語を使用すればよいかわからないが、より一般的な検索用語 (背景を変更するだけなど) を知っている多くのユーザーにとって興味深いものになると思います。また、これについてはドキュメントにあまり書かれていません。
答え1
urxvt
、tmux
および はscreen
3 つの異なる端末エミュレーターであり、最初のものは表示/入力のバックエンドとして X11 を使用し、他の 2 つはホスト端末を使用します。
tmux
これらはscreen
実際には端末エミュレータであり、いくつかのエスケープシーケンスを介してアクティブ化されるいくつかの機能(太字の文字属性、画面のクリアなど)を実装していますが、背景画像サポートされている機能には含まれていません。
また、screen
/tmux
セッションは、あらゆるタイプのホスト端末に接続でき、一度に複数の端末に接続することもできます ( を使用-x
)。一部の端末はこの機能をサポートしている場合もあれば、サポートしていない場合もあります。
screen
は、認識できないエスケープ シーケンスを渡しますtmux
。OSC ( ) で始まるシーケンスは、\e]
BEL ( \a
/ ^G
) で終わります。tmux
が を見つけると\e]
、 (または次のエスケープ シーケンス) まで読み取り\a
、そのシーケンスを認識しない場合は破棄します。
しかし、tmux
任意のテキストをそのままホスト端末に渡すことをサポートします。シーケンスを使用します\ePtmux;\e<text>\e\
。ここでは次のようにします。
printf '\ePtmux;\e\e]20;/home/alexsson/Downloads/alternativ.png;\a\e\\'
いずれにせよ、これは の非常に危険な機能であることに注意してくださいrxvt
。たとえば、rxvt
Linux で root として実行し、cat malicious-file
次のような内容を含むファイルを実行すると\e]20;/dev/watchdog\a
(ウォッチドッグが利用可能なシステムの場合)、数秒後にシステムが再起動します。