tmuxが再接続されたときにシェルはそれを認識できますか?

tmuxが再接続されたときにシェルはそれを認識できますか?

tmuxセッションに再接続すると、私のシェルはSIGWINCHを受信すると予想します。しかしそれは真実ではない。 :(シェルが再接続されたことを認識させる方法はありますか?

答え1

はい。

tmux接続後に見える内部シェルを教えてください。もしそうなら、

tmux set-hook -g client-attached 'run-shell "kill -s WINCH #{pane_pid}"'

それとも、呼び出したシェルtmux attach、つまり接続する前に見たシェルですか? (たとえ話すことはできませんが)。もしそうなら、

tmux set-hook -g client-attached 'run-shell "kill -s WINCH \"$(ps -o ppid= -p #{client_pid})\""'

ps -o ppid= -p #{client_pid}責任はどこにあるか親プロセスのPIDを取得します。tmux attach

-gフックがグローバルであるという意味です。キャンセルフックを使用してくださいtmux set-hook -gu client-attached

答え2

tmux内のシェル?サイズが変更されたら、SIGWINCHを受信する必要があります。

知りたい場合は、サイズが変更されていなくてもtmux ls / lspにポーリングして、シェルウィンドウを含むセッションがいつ接続されるかを確認するスクリプトを作成するか、tmuxをハッキングして要求を発行する必要があります。影響を受ける各ウィンドウは、追加時にシグナルを送信します。

関連情報