From 319b06a4be7f4840296f15d68775f0364e6d1d89 Mon Sep 17 00:00:00 2001 From: Pig Fang Date: Mon, 7 Aug 2023 17:36:35 +0800 Subject: [PATCH] feat: allow to customize status section separator --- app/src/status/left.rs | 4 ++-- app/src/status/right.rs | 5 +++-- config/preset/theme.toml | 19 ++++++++++--------- config/src/theme/theme.rs | 25 ++++++++++++++++--------- 4 files changed, 31 insertions(+), 22 deletions(-) diff --git a/app/src/status/left.rs b/app/src/status/left.rs index 6402ad4c..73e8dbc7 100644 --- a/app/src/status/left.rs +++ b/app/src/status/left.rs @@ -25,7 +25,7 @@ impl<'a> Widget for Left<'a> { let mut spans = vec![]; // Mode - spans.push(Span::styled("", primary.fg())); + spans.push(Span::styled(&THEME.status.section_separator.left, primary.fg())); spans.push(Span::styled( format!(" {mode} "), primary.bg().fg(**secondary).add_modifier(Modifier::BOLD), @@ -35,7 +35,7 @@ impl<'a> Widget for Left<'a> { // Length if let Some(len) = h.length { spans.push(Span::styled(format!(" {} ", readable_size(len)), body.bg().fg(**primary))); - spans.push(Span::styled("", body.fg())); + spans.push(Span::styled(&THEME.status.section_separator.right, body.fg())); } // Filename diff --git a/app/src/status/right.rs b/app/src/status/right.rs index 03172e55..3d48dcd9 100644 --- a/app/src/status/right.rs +++ b/app/src/status/right.rs @@ -46,7 +46,8 @@ impl<'a> Right<'a> { let percent = if cursor == 0 || length == 0 { 0 } else { (cursor + 1) * 100 / length }; vec![ - Span::styled(" ", body.fg()), + Span::raw(" "), + Span::styled(&THEME.status.section_separator.left, body.fg()), Span::styled( if percent == 0 { " Top ".to_string() } else { format!(" {:>3}% ", percent) }, body.bg().fg(**primary), @@ -55,7 +56,7 @@ impl<'a> Right<'a> { format!(" {:>2}/{:<2} ", (cursor + 1).min(length), length), primary.bg().fg(**secondary), ), - Span::styled("", primary.fg()), + Span::styled(&THEME.status.section_separator.right, primary.fg()), ] } } diff --git a/config/preset/theme.toml b/config/preset/theme.toml index d73c0327..d8ed352c 100644 --- a/config/preset/theme.toml +++ b/config/preset/theme.toml @@ -3,15 +3,16 @@ active = { fg = "#1E2031", bg = "#80AEFA" } inactive = { fg = "#C8D3F8", bg = "#484D66" } [status] -primary = { normal = "#80AEFA", select = "#CD9EFC", unset = "#FFA577" } -secondary = { normal = "#1E2031", select = "#23273B", unset = "#23273B" } -tertiary = { normal = "#6D738F", select = "#6D738F", unset = "#6D738F" } -body = { normal = "#484D66", select = "#484D66", unset = "#484D66" } -emphasis = { normal = "#C8D3F8", select = "#C8D3F8", unset = "#C8D3F8" } -info = { normal = "#7AD9E5", select = "#7AD9E5", unset = "#7AD9E5" } -success = { normal = "#97DC8D", select = "#97DC8D", unset = "#97DC8D" } -warning = { normal = "#F3D398", select = "#F3D398", unset = "#F3D398" } -danger = { normal = "#FA7F94", select = "#FA7F94", unset = "#FA7F94" } +primary = { normal = "#80AEFA", select = "#CD9EFC", unset = "#FFA577" } +secondary = { normal = "#1E2031", select = "#23273B", unset = "#23273B" } +tertiary = { normal = "#6D738F", select = "#6D738F", unset = "#6D738F" } +body = { normal = "#484D66", select = "#484D66", unset = "#484D66" } +emphasis = { normal = "#C8D3F8", select = "#C8D3F8", unset = "#C8D3F8" } +info = { normal = "#7AD9E5", select = "#7AD9E5", unset = "#7AD9E5" } +success = { normal = "#97DC8D", select = "#97DC8D", unset = "#97DC8D" } +warning = { normal = "#F3D398", select = "#F3D398", unset = "#F3D398" } +danger = { normal = "#FA7F94", select = "#FA7F94", unset = "#FA7F94" } +section_separator = { left = "", right = "" } [progress] gauge = { fg = "#FFA577", bg = "#484D66" } diff --git a/config/src/theme/theme.rs b/config/src/theme/theme.rs index 1ff80bba..0ef9d54c 100644 --- a/config/src/theme/theme.rs +++ b/config/src/theme/theme.rs @@ -14,15 +14,22 @@ pub struct Tab { #[derive(Deserialize)] pub struct Status { - pub primary: ColorGroup, - pub secondary: ColorGroup, - pub tertiary: ColorGroup, - pub body: ColorGroup, - pub emphasis: ColorGroup, - pub info: ColorGroup, - pub success: ColorGroup, - pub warning: ColorGroup, - pub danger: ColorGroup, + pub primary: ColorGroup, + pub secondary: ColorGroup, + pub tertiary: ColorGroup, + pub body: ColorGroup, + pub emphasis: ColorGroup, + pub info: ColorGroup, + pub success: ColorGroup, + pub warning: ColorGroup, + pub danger: ColorGroup, + pub section_separator: SectionSeparator, +} + +#[derive(Deserialize)] +pub struct SectionSeparator { + pub left: String, + pub right: String, } #[derive(Deserialize)]