Repository navigation
fix(tmux): dual bar layout — tabs top, sessions bottom #656
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Changes from all commits
File filter
Filter by extension
Conversations
Jump to
Diff view
Diff view
There are no files selected for viewing
| Original file line number | Diff line number | Diff line change |
|---|---|---|
|
|
@@ -2,6 +2,11 @@ | |
| # Genie TUI — tmux configuration | ||
| # Dark theme with purple/cyan/gold palette | ||
| # Native tmux, zero plugins | ||
| # | ||
| # Layout: | ||
| # Top (pane-border): system info — git, CPU, RAM, clock | ||
| # Bottom line 0: clickable window tabs | ||
| # Bottom line 1: clickable session list + 🧞 Genie version | ||
| # ============================================================================ | ||
|
|
||
| # --- Terminal & basics --- | ||
|
|
@@ -30,10 +35,11 @@ setw -g mode-keys vi | |
| # Text: #e0e0e0 (primary text) | ||
| # Dim: #6c6c8a (dim text) | ||
|
|
||
| # --- Pane borders --- | ||
| # --- Pane borders — top info bar --- | ||
| set -g pane-border-style "fg=#0f3460" | ||
| set -g pane-active-border-style "fg=#7b2ff7" | ||
| set -g pane-border-status off | ||
| set -g pane-border-status top | ||
| set -g pane-border-format "#[bg=#1a1a2e,fg=#e0e0e0]#[align=right]#[fg=#6c6c8a]#($HOME/.genie/scripts/genie-git.sh) #[fg=#0f3460]| #[fg=#00d2ff]CPU #($HOME/.genie/scripts/cpu-info.sh) #[fg=#0f3460]| #[fg=#00d2ff]RAM #($HOME/.genie/scripts/ram-info.sh) #[fg=#0f3460]| #[fg=#e0e0e0]%H:%M " | ||
|
There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more.
Moving Useful? React with 👍 / 👎. |
||
|
|
||
| # --- Message styling --- | ||
| set -g message-style "bg=#16213e,fg=#00d2ff" | ||
|
|
@@ -46,28 +52,35 @@ setw -g mode-style "bg=#7b2ff7,fg=#e0e0e0" | |
| setw -g clock-mode-colour "#7b2ff7" | ||
|
|
||
| # ============================================================================ | ||
| # STATUS BAR — Single bar at bottom with clickable tabs + info | ||
| # STATUS BAR — Dual bar at bottom (tmux 3.2+) | ||
| # Line 0 (top): clickable window tabs (native tmux rendering) | ||
| # Line 1 (bottom): clickable session list + Genie version | ||
| # ============================================================================ | ||
| set -g status on | ||
| set -g status-interval 5 | ||
| set -g status-position bottom | ||
| set -g status-justify left | ||
| set -g status 2 | ||
| set -g status-style "bg=#1a1a2e,fg=#e0e0e0" | ||
| set -g status-justify left | ||
|
|
||
| # Clear status-left/right — dual bar uses status-format[] directly | ||
| set -g status-left "" | ||
| set -g status-left-length 0 | ||
| set -g status-right "" | ||
| set -g status-right-length 0 | ||
|
|
||
| # Left: branding | ||
| set -g status-left-length 40 | ||
| set -g status-left "#[bg=#7b2ff7,fg=#e0e0e0,bold] 🧞 #(genie --version 2>/dev/null | head -1 || echo Genie) #[bg=#1a1a2e,fg=#7b2ff7]" | ||
| # --- Line 0: clickable window tabs (native tmux window rendering) --- | ||
| set -g status-format[0] "#[align=left range=left #{E:status-left-style}]#[push-default]#{T;=/#{status-left-length}:status-left}#[pop-default]#[norange default]#[list=on align=#{status-justify}]#[list=left-marker]<#[list=right-marker]>#[list=on]#{W:#[range=window|#{window_index} #{E:window-status-style}#{?#{&&:#{window_last_flag},#{!=:#{E:window-status-last-style},default}}, #{E:window-status-last-style},}#{?#{&&:#{window_bell_flag},#{!=:#{E:window-status-bell-style},default}}, #{E:window-status-bell-style},#{?#{&&:#{||:#{window_activity_flag},#{window_silence_flag}},#{!=:#{E:window-status-activity-style},default}}, #{E:window-status-activity-style},}}]#[push-default]#{T:window-status-format}#[pop-default]#[norange default]#{?window_end_flag,,#{window-status-separator}},#[range=window|#{window_index} list=focus #{?#{!=:#{E:window-status-current-style},default},#{E:window-status-current-style},#{E:window-status-style}}#{?#{&&:#{window_last_flag},#{!=:#{E:window-status-last-style},default}}, #{E:window-status-last-style},}#{?#{&&:#{window_bell_flag},#{!=:#{E:window-status-bell-style},default}}, #{E:window-status-bell-style},#{?#{&&:#{||:#{window_activity_flag},#{window_silence_flag}},#{!=:#{E:window-status-activity-style},default}}, #{E:window-status-activity-style},}}]#[push-default]#{T:window-status-current-format}#[pop-default]#[norange list=on default]#{?window_end_flag,,#{window-status-separator}}}#[nolist align=right range=right #{E:status-right-style}]#[push-default]#{T;=/#{status-right-length}:status-right}#[pop-default]#[norange default]" | ||
|
|
||
| # Right: system info | ||
| set -g status-right-length 100 | ||
| set -g status-right "#[fg=#6c6c8a]#($HOME/.genie/scripts/genie-git.sh) #[fg=#0f3460]| #[fg=#00d2ff]CPU #($HOME/.genie/scripts/cpu-info.sh) #[fg=#0f3460]| #[fg=#00d2ff]RAM #($HOME/.genie/scripts/ram-info.sh) #[fg=#0f3460]| #[fg=#e0e0e0]%H:%M " | ||
| # --- Line 1: clickable session list + Genie branding (right) --- | ||
| set -g status-format[1] "#[align=left,bg=#16213e] #{S:#[range=session|#{session_name}]#{?#{==:#{session_name},#{client_session}},#[bg=#7b2ff7 fg=#e0e0e0 bold] #{session_name} #[bg=#16213e fg=#7b2ff7 nobold],#[fg=#b8a9c9 bg=#16213e] #{session_name} }#[norange default]}#[align=right,bg=#16213e]#[bg=#7b2ff7,fg=#e0e0e0,bold] 🧞 #($HOME/.genie/scripts/genie-update-check.sh) #[bg=#16213e,fg=#7b2ff7] " | ||
|
|
||
| # ============================================================================ | ||
| # WINDOW (TAB) STYLING — clickable tabs | ||
| # WINDOW (TAB) STYLING — used by line 0 | ||
| # ============================================================================ | ||
| set -g window-status-separator "" | ||
| set -g window-status-format "#[fg=#b8a9c9,bg=#1a1a2e] #I:#W " | ||
| set -g window-status-current-format "#[fg=#1a1a2e,bg=#7b2ff7]#[fg=#e0e0e0,bg=#7b2ff7,bold] #I:#W #[fg=#7b2ff7,bg=#1a1a2e]" | ||
| set -g window-status-format "#[fg=#b8a9c9,bg=#16213e] #I:#W " | ||
| set -g window-status-current-format "#[fg=#16213e,bg=#7b2ff7]#[fg=#e0e0e0,bg=#7b2ff7,bold] #I:#W #[fg=#7b2ff7,bg=#16213e]" | ||
|
|
||
| # Activity | ||
| setw -g monitor-activity on | ||
|
|
||
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
The
sort -Vflag for version sorting is a GNU extension and may not be available or behave identically on all systems, particularly older macOS versions that use BSDsort. This could lead to incorrect version comparison results. Given that other scripts in this project handle OS-specific differences (e.g., for Linux vs. Darwin), consider adding a fallback for non-GNU environments or using a more portable version comparison method to ensure consistent behavior across platforms.