tmux では printf コマンドは使用できません。
背景を動的に変更するコマンドは次のとおりです。
printf "\e]20;/home/alexsson/Downloads/alternativ.png;\a"
urxvtから直接これを行うことができます。
そして画面内で:
しかし、このprintfコマンドはtmuxではまったく機能しません。
tmuxでどのように機能させることができるか知っていますか?
PS:ここでも同様の質問があります。tmuxと制御シーケンス文字の問題。ただし、正しいクエリを使用しないと、問題を見つけるのが難しい場合があります。私はどのクエリを使うべきかわかりませんが、より一般的な(単純な背景の変更など)、より多くのユーザーにとって私の投稿は興味深いと思いました。これに関する文書もあまりありません。
答え1
urxvt
、3つの端末エミュレータがtmux
ありますscreen
。最初のものはX11をディスプレイ/入力用のバックエンドとして使用し、残りの2つはホスト端末を使用します。
tmux
実際の端末エミュレータであり、いくつかのscreen
エスケープシーケンス(太字属性、画面消去など)で有効になる多くの機能を実装しています。背景イラストサポートされている機能ではありません。
さらに、 screen
/tmux
セッションはすべての種類のホスト端末に接続でき、複数のホスト端末に同時に接続することもできます(を使用して-x
)。一部はこの機能をサポートすることも、一部はサポートしない場合もあります。
screen
認識されないエスケープシーケンスを渡しますtmux
。 OSC()で始まるシーケンスは\e]
BEL(/)で終わります。 aが表示されるまで(または次のエスケープシーケンス)を読み取り、シーケンスが認識されない場合はそのシーケンスを破棄します。\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
(ウォッチドッグがあるシステムでは)、システムは数秒後に再起動されます。