Styling option for separating terminal view background from background color (#17611)

Closes #17313

Release Notes:

- Added theme styling option to separate terminal background view from
terminal background color, for transparent terminal backgrounds
This commit is contained in:
Albert Marashi 2024-09-18 02:21:31 +09:30 committed by GitHub
parent 3d69942f71
commit 0070635b4d
No known key found for this signature in database
GPG key ID: B5690EEEBB952194
6 changed files with 19 additions and 5 deletions

View file

@ -75,7 +75,7 @@ pub fn text_style(cx: &mut WindowContext) -> TextStyle {
font_size: theme::get_buffer_font_size(cx).into(),
font_style: FontStyle::Normal,
line_height: cx.line_height().into(),
background_color: Some(theme.colors().terminal_background),
background_color: Some(theme.colors().terminal_ansi_background),
white_space: WhiteSpace::Normal,
truncate: None,
// These are going to be overridden per-cell

View file

@ -662,7 +662,7 @@ impl Element for TerminalElement {
font_size: font_size.into(),
font_style: FontStyle::Normal,
line_height: line_height.into(),
background_color: Some(theme.colors().terminal_background),
background_color: Some(theme.colors().terminal_ansi_background),
white_space: WhiteSpace::Normal,
truncate: None,
// These are going to be overridden per-cell
@ -778,7 +778,7 @@ impl Element for TerminalElement {
&[TextRun {
len,
font: text_style.font(),
color: theme.colors().terminal_background,
color: theme.colors().terminal_ansi_background,
background_color: None,
underline: Default::default(),
strikethrough: None,
@ -1158,7 +1158,7 @@ pub fn convert_color(fg: &terminal::alacritty_terminal::vte::ansi::Color, theme:
NamedColor::BrightCyan => colors.terminal_ansi_bright_cyan,
NamedColor::BrightWhite => colors.terminal_ansi_bright_white,
NamedColor::Foreground => colors.terminal_foreground,
NamedColor::Background => colors.terminal_background,
NamedColor::Background => colors.terminal_ansi_background,
NamedColor::Cursor => theme.players().local().cursor,
NamedColor::DimBlack => colors.terminal_ansi_dim_black,
NamedColor::DimRed => colors.terminal_ansi_dim_red,

View file

@ -84,6 +84,7 @@ impl ThemeColors {
terminal_foreground: black().light().step_12(),
terminal_bright_foreground: black().light().step_11(),
terminal_dim_foreground: black().light().step_10(),
terminal_ansi_background: neutral().light().step_1(),
terminal_ansi_bright_black: black().light().step_11(),
terminal_ansi_bright_red: red().light().step_10(),
terminal_ansi_bright_green: green().light().step_10(),
@ -179,6 +180,7 @@ impl ThemeColors {
editor_document_highlight_read_background: neutral().dark_alpha().step_4(),
editor_document_highlight_write_background: neutral().dark_alpha().step_4(),
terminal_background: neutral().dark().step_1(),
terminal_ansi_background: neutral().dark().step_1(),
terminal_foreground: white().dark().step_12(),
terminal_bright_foreground: white().dark().step_11(),
terminal_dim_foreground: white().dark().step_10(),

View file

@ -105,6 +105,7 @@ pub(crate) fn one_dark() -> Theme {
terminal_background: bg,
// todo("Use one colors for terminal")
terminal_ansi_background: crate::black().dark().step_12(),
terminal_foreground: crate::white().dark().step_12(),
terminal_bright_foreground: crate::white().dark().step_11(),
terminal_dim_foreground: crate::white().dark().step_10(),

View file

@ -421,6 +421,10 @@ pub struct ThemeColorsContent {
#[serde(rename = "terminal.foreground")]
pub terminal_foreground: Option<String>,
/// Terminal ansi background color.
#[serde(rename = "terminal.ansi.background")]
pub terminal_ansi_background: Option<String>,
/// Bright terminal foreground color.
#[serde(rename = "terminal.bright_foreground")]
pub terminal_bright_foreground: Option<String>,
@ -792,6 +796,10 @@ impl ThemeColorsContent {
.terminal_background
.as_ref()
.and_then(|color| try_parse_color(color).ok()),
terminal_ansi_background: self
.terminal_ansi_background
.as_ref()
.and_then(|color| try_parse_color(color).ok()),
terminal_foreground: self
.terminal_foreground
.as_ref()

View file

@ -175,7 +175,7 @@ pub struct ThemeColors {
// ===
// Terminal
// ===
/// Terminal background color.
/// Terminal layout background color.
pub terminal_background: Hsla,
/// Terminal foreground color.
pub terminal_foreground: Hsla,
@ -184,6 +184,9 @@ pub struct ThemeColors {
/// Dim terminal foreground color.
pub terminal_dim_foreground: Hsla,
/// Terminal ansi background color.
pub terminal_ansi_background: Hsla,
/// Black ANSI terminal color.
pub terminal_ansi_black: Hsla,
/// Bright black ANSI terminal color.