diff --git a/tmux-power.tmux b/tmux-power.tmux index 905d2fc..2f56055 100755 --- a/tmux-power.tmux +++ b/tmux-power.tmux @@ -43,6 +43,8 @@ set_defaults() { g3='#444444' g4='#626262' status_interval='1' + + status_lines='1' } # Theme resolution @@ -150,6 +152,51 @@ build_right_status() { tmux_set status-right "$RS" } +configure_dual_status_bars() { + tmux_set status 2 + build_status_format_0 + build_status_format_1 +} + +build_status_format_0() { + # Normal window format (with style fallbacks for last/bell/activity/silence) + local win_normal="#{W:" + win_normal+="#[range=window|#{window_index} #{E:window-status-style}" + win_normal+="#{?#{&&:#{window_last_flag},#{!=:#{E:window-status-last-style},default}}, #{E:window-status-last-style},}" + win_normal+="#{?#{&&:#{window_bell_flag},#{!=:#{E:window-status-bell-style},default}}, #{E:window-status-bell-style}," + win_normal+="#{?#{&&:#{||:#{window_activity_flag},#{window_silence_flag}},#{!=:#{E:window-status-activity-style},default}}, #{E:window-status-activity-style},}}" + win_normal+="]" + win_normal+="#[push-default]#{T:window-status-format}#[pop-default]" + win_normal+="#[norange default]#{?window_end_flag,,#{window-status-separator}}" + + # Current (focused) window format — same style fallback chain but for current + local win_current="#[range=window|#{window_index} list=focus" + win_current+=" #{?#{!=:#{E:window-status-current-style},default},#{E:window-status-current-style},#{E:window-status-style}}" + win_current+="#{?#{&&:#{window_last_flag},#{!=:#{E:window-status-last-style},default}}, #{E:window-status-last-style},}" + win_current+="#{?#{&&:#{window_bell_flag},#{!=:#{E:window-status-bell-style},default}}, #{E:window-status-bell-style}," + win_current+="#{?#{&&:#{||:#{window_activity_flag},#{window_silence_flag}},#{!=:#{E:window-status-activity-style},default}}, #{E:window-status-activity-style},}}" + win_current+="]" + win_current+="#[push-default]#{T:window-status-current-format}#[pop-default]" + win_current+="#[norange list=on default]#{?window_end_flag,,#{window-status-separator}}" + win_current+="}" + + tmux_set status-format[0] \ + "#[list=on align=#{status-justify}]#[list=left-marker]<#[list=right-marker]>#[list=on]${win_normal},${win_current}" +} + +build_status_format_1() { + local fmt_left="#[align=left range=left #{E:status-left-style}]#[push-default]" + fmt_left+="#{T;=/#{status-left-length}:status-left}#[pop-default]#[norange default]" + + local fmt_center="#[align=centre]" + fmt_center+="#{P:#{?pane_active,#[reverse],}#{pane_index}[#{pane_width}x#{pane_height}]#[default] }" + + local fmt_right="#[nolist align=right range=right #{E:status-right-style}]#[push-default]" + fmt_right+="#{T;=/#{status-right-length}:status-right}#[pop-default]#[norange default]" + + tmux_set status-format[1] "${fmt_left}${fmt_center}${fmt_right}" +} + # Window, pane, and message styles configure_ui_styles() { @@ -304,6 +351,9 @@ main() { configure_status_bar build_left_status build_right_status + if [[ "$status_lines" == "2" ]]; then + configure_dual_status_bars + fi configure_ui_styles tmux_flush }