tmux設定の変数置換 - 「メッセージの表示」と「レイアウトの選択」の結果が異なる

tmux設定の変数置換 - 「メッセージの表示」と「レイアウトの選択」の結果が異なる

tmuxinatorを使用して、1つのウィンドウに7つのウィンドウカスタムレイアウトを持つtmuxセッションを開始します。

tmuxinator セッション構成にはレイアウトを持つチャネルがあります。

layout: 3db3,233x59,0,0[233x9,0,0{77x9,0,0,3,77x9,78,0,5,77x9,156,0,6},233x9,0,10{77x9,0,10,7,77x9,78,10,8,77x9,156,10,9},233x39,0,20,10]

すべてが正常です。 tmuxが正しいウィンドウサイズで開きます。

また、tmux.confにはウィンドウのサイズ変更に反応するフックがあります。

set-hook -g window-resized 'select-layout -t s01:4 "3db3,233x59,0,0[233x9,0,0{77x9,0,0,3,77x9,78,0,5,77x9,156,0,6},233x9,0,10{77x9,0,10,7,77x9,78,10,8,77x9,156,10,9},233x39,0,20,10]"'

ウィンドウサイズを小さくして元のサイズに戻すと、すべてのウィンドウが元のサイズに戻ります。大丈夫です。

ウィンドウのサイズを変更しながら、tmuxはすべてのウィンドウのサイズを比例的に調整します...上部6つのウィンドウの高さを維持したいと思います。 9、下のウィンドウの高さだけを減らす必要があります。

また、私のターミナルエミュレータには、画面サイズが233 x 59から236 x 62に拡張されたフルスクリーンモードがあります...フルスクリーンモードに入るとき、上部6つのウィンドウの高さを9に保ちたいです。 lowerウィンドウの高さを増やす必要があります。

アイデアはフックの2つの部分を修正することです。

"3db3,233x59,0,0..." -> 現在の画面の高さを配置するには、59に変更します。

「...233x39,0,20,10] -> 39に変更し、現在の画面の高さ(9+1+9+1)から20を減算します。

たとえば、最初のフックを見ると、 "display"コマンドは期待どおりに$LAYOUT_STR変数を数値とともに表示します。

set-hook -g window-resized 'WINDOW_HEIGHT="#{window_height}"; PANE_HIEGHT="#{e|-:$WINDOW_HEIGHT,20}"; LAYOUT_STR="3db3,233x$WINDOW_HEIGHT,0,0[233x9,0,0{77x9,0,0,3,77x9,78,0,5,77x9,156,0,6},233x9,0,10{77x9,0,10,7,77x9,78,10,8,77x9,156,10,9},233x$PANE_HEIGHT,0,20,10]"; display $LAYOUT_STR'

出力:

3db3,233x59,0,0[233x9,0,0{77x9,0,0,3,77x9,78,0,5,77x9,156,0,6},233x9,0,10{77x9,0,10,7,77x9,78,10,8,77x9,156,10,9},233x39,0,20,10]

次に、選択レイアウトを含むフックとその出力を見てみましょう。

set-hook -g window-resized 'WINDOW_HEIGHT="#{window_height}"; PANE_HIEGHT="#{e|-:$WINDOW_HEIGHT,20}"; LAYOUT_STR="3db3,233x$WINDOW_HEIGHT,0,0[233x9,0,0{77x9,0,0,3,77x9,78,0,5,77x9,156,0,6},233x9,0,10{77x9,0,10,7,77x9,78,10,8,77x9,156,10,9},233x$PANE_HEIGHT,0,20,10]"; select-layout -t s01:4 $LAYOUT_STR'

出力:

Invalid layout: 3db3,233x#{window_height},0,0[233x9,0,0{77x9,0,0,3,77x9,78,0,5,77x9,156,0,6},233x9,0,10{77x9,0,10,7,77x9,78,10,8,77x9,156,10,9},233x#{e|-:#{window_height},20},0,20,10])

どうすれば修正できますか?

答え1

コマンドで変数置換を正しく実行する方法を見つけました。... select-layout -t s01:4 $LAYOUT_STR

正しい方法は、「ru​​n-shell」コマンドを使用することです。

これは働きます:... run-shell -b "exec tmux select-layout -t s01:4 $LAYOUT_STR &"

関連情報