tmuxでサイズ変更イベントを検出する

tmuxでサイズ変更イベントを検出する

私のトップウィンドウには常に2行サイズのtmux設定があります。残念ながら、端末のサイズを変更するたびに比率が完全にリセットされ、上部ウィンドウはより多くのスペースを占有します。

.tmux.confF12キーを押してウィンドウのサイズを変更できるバインディングをファイルに作成しました。bind -n F12 resize-pane -t 0 -y 2

ただし、すべてのサイズ変更イベントでこれを自動的に実行したいと思います。どういうわけか効率的にこれを行う方法はありますか?

答え1

バージョン2.7くらいで以下を試してみましたが、うまくいくようです。複数のイベントでtmuxコマンドを実行するフックを追加できます。特にwindow-layout-changedウィンドウのサイズが調整されトリガーされるように見える場合は、さらにそうです。私は明らかなことを試しました

set-hook -g window-layout-changed 'resize-pane -t 0 -y 2'

ただし、これを行うと無限ループが発生します。一部のイベントでは後ろにバージョンですがafter-window-layout-changedイベントがないようです。 (tmuxの以前のバージョンにはlayout-changedイベントがありましたが、正しく動作しませんでした。)

最後に、ウィンドウの現在のサイズを確認し、必要に応じてサイズを変更するmyscript小さなシェルスクリプトを作成しました。PATH

#!/bin/bash
ht=$(tmux display-message -p -t 0 '#{pane_height}')
if [ 2 != "$ht" ]
then tmux display-panes\; resize-pane -t 0 -y 2
fi

display-panesスクリプトが実行中であることを確認するために追加されました。これは次のような場合に効果があるようです。

set-hook -g window-layout-changed 'run-shell myscript'

ウィンドウ0だけが残っていても同じです(したがってサイズを変更できません)。

関連情報