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をハッキングして要求を発行する必要があります。影響を受ける各ウィンドウは、追加時にシグナルを送信します。