Skip to content
Open
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
50 changes: 50 additions & 0 deletions tmux-power.tmux
Original file line number Diff line number Diff line change
Expand Up @@ -43,6 +43,8 @@ set_defaults() {
g3='#444444'
g4='#626262'
status_interval='1'

status_lines='1'
}

# Theme resolution
Expand Down Expand Up @@ -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() {
Expand Down Expand Up @@ -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
}
Expand Down
Loading