ウィンドウに複数のウィンドウがある場合にのみtmuxウィンドウのステータスを表示する

ウィンドウに複数のウィンドウがある場合にのみtmuxウィンドウのステータスを表示する

現在のウィンドウに複数のウィンドウがある場合にのみ、tmuxでウィンドウのステータスを表示したいと思います。私は現在のウィンドウから1つのウィンドウを除くすべてのウィンドウを閉じたときに機能しないようにこの機能を設計しました(つまり、1つのウィンドウは後ろに残りますが、その状態は隠されません)。

# Show pane status only when there is more than one pane
set-hook -g window-linked 'set-option -w pane-border-status off'
set-hook -g window-layout-changed 'if-shell -F "#{!=:#{window_panes}, 1}" "set-option -w pane-border-status top" ; if-shell -F "#{==:#{window_panes}, 1}" "set-option -w pane-border-status off"'
set-hook -g window-pane-changed 'if-shell -F "#{!=:#{window_panes}, 1}" "set-option -w pane-border-status top" ; if-shell -F "#{==:#{window_panes}, 1}" "set-option -w pane-border-status off"'

ベストアンサー1

tmux形式の空白は非常に重要です。 "#{==:#{window_panes}}, 1}" 式は、コンマの後の空白文字のため常に false です。

次のフックは、両方のフォーマットからスペースを削除することによってtmux 2.6で期待どおりに機能します。

set-hook -g window-layout-changed 'if-shell -F "#{!=:#{window_panes},1}" "set-option -w pane-border-status top" ; if-shell -F "#{==:#{window_panes},1}" "set-option -w pane-border-status off"'

条件を使用した代替フックの定義

set-hook -g window-layout-changed 'set-window -F pane-border-status "#{?#{==:#{window_panes},1},off,top}"'

条件は次のように記録されます。https://man.openbsd.org/OpenBSD-current/man1/tmux.1#FORMATS

おすすめ記事