aboutsummaryrefslogtreecommitdiff
path: root/src/client/shell/tabs.rs
diff options
context:
space:
mode:
Diffstat (limited to 'src/client/shell/tabs.rs')
-rw-r--r--src/client/shell/tabs.rs15
1 files changed, 14 insertions, 1 deletions
diff --git a/src/client/shell/tabs.rs b/src/client/shell/tabs.rs
index 3fdcf7dc..a8e584d4 100644
--- a/src/client/shell/tabs.rs
+++ b/src/client/shell/tabs.rs
@@ -21,14 +21,24 @@ pub(crate) fn render_tab_bar(
.iter()
.filter(|tab| Some(tab.workspace_id.as_str()) == snapshot.focused_workspace_id.as_deref())
.collect::<Vec<_>>();
+ // tmuxrdr: ui.tab_style = "tmux" draws tmux's status line (tabs_tmux.rs).
+ let tmux = (config.tab_style == crate::config::TabStyleConfig::Tmux)
+ .then(|| super::tabs_tmux::TmuxTabs::new(snapshot, &tabs));
let desired_widths = tabs
.iter()
- .map(|tab| {
+ .enumerate()
+ .map(|(index, tab)| {
+ if let Some(tmux) = &tmux {
+ return tmux.width(index);
+ }
let label = tab_label(tab);
display_width(&label).saturating_add(4).max(MIN_TAB_WIDTH)
})
.collect::<Vec<_>>();
let content = tab_bar_content_area(snapshot, area);
+ let content = tmux.as_ref().map_or(content, |tmux| {
+ tmux.render_session(buffer, content, palette)
+ });
let mouse_chrome = config.mouse_capture;
let new_tab_width = if mouse_chrome { NEW_TAB_WIDTH } else { 0 };
let desired_total = desired_widths
@@ -122,6 +132,9 @@ pub(crate) fn render_tab_bar(
left = left as usize,
right_padding = padding.saturating_sub(left) as usize,
);
+ let (text, style) = tmux
+ .as_ref()
+ .map_or((text, style), |tmux| tmux.cell(index, tab, palette));
put_text(buffer, rect.x, rect.y, rect.width, &text, style);
hits.tabs.push((rect, tab.tab_id.clone()));
first_visible.get_or_insert(index);