mirror of
https://github.com/wez/wezterm.git
synced 2024-09-11 14:25:57 +03:00
config: show/hide close-tab button
This commit is contained in:
parent
3607204d80
commit
a46bad17d2
@ -469,6 +469,9 @@ pub struct Config {
|
|||||||
#[dynamic(default = "default_true")]
|
#[dynamic(default = "default_true")]
|
||||||
pub show_new_tab_button_in_tab_bar: bool,
|
pub show_new_tab_button_in_tab_bar: bool,
|
||||||
|
|
||||||
|
#[dynamic(default = "default_true")]
|
||||||
|
pub show_close_tab_button_in_tabs: bool,
|
||||||
|
|
||||||
/// If true, show_tab_index_in_tab_bar uses a zero-based index.
|
/// If true, show_tab_index_in_tab_bar uses a zero-based index.
|
||||||
/// The default is false and the tab shows a one-based index.
|
/// The default is false and the tab shows a one-based index.
|
||||||
#[dynamic(default)]
|
#[dynamic(default)]
|
||||||
|
16
docs/config/lua/config/show_close_tab_button_in_tabs.md
Normal file
16
docs/config/lua/config/show_close_tab_button_in_tabs.md
Normal file
@ -0,0 +1,16 @@
|
|||||||
|
---
|
||||||
|
tags:
|
||||||
|
- appearance
|
||||||
|
- tab_bar
|
||||||
|
---
|
||||||
|
|
||||||
|
# `show_close_tab_button_in_tabs = true`
|
||||||
|
|
||||||
|
{{since('nightly')}}
|
||||||
|
|
||||||
|
When set to `false`, the close-tab button will not be drawn in tabs when the
|
||||||
|
fancy tab bar is in use. Default is `true`.
|
||||||
|
|
||||||
|
```lua
|
||||||
|
config.show_close_tab_button_in_tabs = false
|
||||||
|
```
|
@ -7,6 +7,8 @@ use crate::termwindow::render::window_buttons::window_button_element;
|
|||||||
use crate::termwindow::{UIItem, UIItemType};
|
use crate::termwindow::{UIItem, UIItemType};
|
||||||
use crate::utilsprites::RenderMetrics;
|
use crate::utilsprites::RenderMetrics;
|
||||||
use config::{Dimension, DimensionContext, TabBarColors};
|
use config::{Dimension, DimensionContext, TabBarColors};
|
||||||
|
use std::rc::Rc;
|
||||||
|
use wezterm_font::LoadedFont;
|
||||||
use wezterm_term::color::{ColorAttribute, ColorPalette};
|
use wezterm_term::color::{ColorAttribute, ColorPalette};
|
||||||
use window::{IntegratedTitleButtonAlignment, IntegratedTitleButtonStyle};
|
use window::{IntegratedTitleButtonAlignment, IntegratedTitleButtonStyle};
|
||||||
|
|
||||||
@ -343,63 +345,9 @@ impl crate::TermWindow {
|
|||||||
ElementContent::Text(_) => unreachable!(),
|
ElementContent::Text(_) => unreachable!(),
|
||||||
ElementContent::Poly { .. } => unreachable!(),
|
ElementContent::Poly { .. } => unreachable!(),
|
||||||
ElementContent::Children(mut kids) => {
|
ElementContent::Children(mut kids) => {
|
||||||
let x_button = Element::new(
|
if self.config.show_close_tab_button_in_tabs {
|
||||||
&font,
|
kids.push(make_x_button(&font, &metrics, &colors, tab_idx, active));
|
||||||
ElementContent::Poly {
|
}
|
||||||
line_width: metrics.underline_height.max(2),
|
|
||||||
poly: SizedPoly {
|
|
||||||
poly: X_BUTTON,
|
|
||||||
width: Dimension::Pixels(
|
|
||||||
metrics.cell_size.height as f32 / 2.,
|
|
||||||
),
|
|
||||||
height: Dimension::Pixels(
|
|
||||||
metrics.cell_size.height as f32 / 2.,
|
|
||||||
),
|
|
||||||
},
|
|
||||||
},
|
|
||||||
)
|
|
||||||
// Ensure that we draw our background over the
|
|
||||||
// top of the rest of the tab contents
|
|
||||||
.zindex(1)
|
|
||||||
.vertical_align(VerticalAlign::Middle)
|
|
||||||
.float(Float::Right)
|
|
||||||
.item_type(UIItemType::CloseTab(tab_idx))
|
|
||||||
.hover_colors({
|
|
||||||
let inactive_tab_hover = colors.inactive_tab_hover();
|
|
||||||
let active_tab = colors.active_tab();
|
|
||||||
|
|
||||||
Some(ElementColors {
|
|
||||||
border: BorderColor::default(),
|
|
||||||
bg: (if active {
|
|
||||||
inactive_tab_hover.bg_color
|
|
||||||
} else {
|
|
||||||
active_tab.bg_color
|
|
||||||
})
|
|
||||||
.to_linear()
|
|
||||||
.into(),
|
|
||||||
text: (if active {
|
|
||||||
inactive_tab_hover.fg_color
|
|
||||||
} else {
|
|
||||||
active_tab.fg_color
|
|
||||||
})
|
|
||||||
.to_linear()
|
|
||||||
.into(),
|
|
||||||
})
|
|
||||||
})
|
|
||||||
.padding(BoxDimension {
|
|
||||||
left: Dimension::Cells(0.25),
|
|
||||||
right: Dimension::Cells(0.25),
|
|
||||||
top: Dimension::Cells(0.25),
|
|
||||||
bottom: Dimension::Cells(0.25),
|
|
||||||
})
|
|
||||||
.margin(BoxDimension {
|
|
||||||
left: Dimension::Cells(0.5),
|
|
||||||
right: Dimension::Cells(0.),
|
|
||||||
top: Dimension::Cells(0.),
|
|
||||||
bottom: Dimension::Cells(0.),
|
|
||||||
});
|
|
||||||
|
|
||||||
kids.push(x_button);
|
|
||||||
ElementContent::Children(kids)
|
ElementContent::Children(kids)
|
||||||
}
|
}
|
||||||
};
|
};
|
||||||
@ -522,3 +470,63 @@ impl crate::TermWindow {
|
|||||||
Ok(ui_items)
|
Ok(ui_items)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
fn make_x_button(
|
||||||
|
font: &Rc<LoadedFont>,
|
||||||
|
metrics: &RenderMetrics,
|
||||||
|
colors: &TabBarColors,
|
||||||
|
tab_idx: usize,
|
||||||
|
active: bool,
|
||||||
|
) -> Element {
|
||||||
|
Element::new(
|
||||||
|
&font,
|
||||||
|
ElementContent::Poly {
|
||||||
|
line_width: metrics.underline_height.max(2),
|
||||||
|
poly: SizedPoly {
|
||||||
|
poly: X_BUTTON,
|
||||||
|
width: Dimension::Pixels(metrics.cell_size.height as f32 / 2.),
|
||||||
|
height: Dimension::Pixels(metrics.cell_size.height as f32 / 2.),
|
||||||
|
},
|
||||||
|
},
|
||||||
|
)
|
||||||
|
// Ensure that we draw our background over the
|
||||||
|
// top of the rest of the tab contents
|
||||||
|
.zindex(1)
|
||||||
|
.vertical_align(VerticalAlign::Middle)
|
||||||
|
.float(Float::Right)
|
||||||
|
.item_type(UIItemType::CloseTab(tab_idx))
|
||||||
|
.hover_colors({
|
||||||
|
let inactive_tab_hover = colors.inactive_tab_hover();
|
||||||
|
let active_tab = colors.active_tab();
|
||||||
|
|
||||||
|
Some(ElementColors {
|
||||||
|
border: BorderColor::default(),
|
||||||
|
bg: (if active {
|
||||||
|
inactive_tab_hover.bg_color
|
||||||
|
} else {
|
||||||
|
active_tab.bg_color
|
||||||
|
})
|
||||||
|
.to_linear()
|
||||||
|
.into(),
|
||||||
|
text: (if active {
|
||||||
|
inactive_tab_hover.fg_color
|
||||||
|
} else {
|
||||||
|
active_tab.fg_color
|
||||||
|
})
|
||||||
|
.to_linear()
|
||||||
|
.into(),
|
||||||
|
})
|
||||||
|
})
|
||||||
|
.padding(BoxDimension {
|
||||||
|
left: Dimension::Cells(0.25),
|
||||||
|
right: Dimension::Cells(0.25),
|
||||||
|
top: Dimension::Cells(0.25),
|
||||||
|
bottom: Dimension::Cells(0.25),
|
||||||
|
})
|
||||||
|
.margin(BoxDimension {
|
||||||
|
left: Dimension::Cells(0.5),
|
||||||
|
right: Dimension::Cells(0.),
|
||||||
|
top: Dimension::Cells(0.),
|
||||||
|
bottom: Dimension::Cells(0.),
|
||||||
|
})
|
||||||
|
}
|
||||||
|
Loading…
Reference in New Issue
Block a user