diff options
| author | Daniel Jankowski <daniel.jankowski@rub.de> | 2023-09-01 13:13:32 +0200 |
|---|---|---|
| committer | Daniel Jankowski <daniel.jankowski@rub.de> | 2023-09-01 13:13:32 +0200 |
| commit | f90cabfb87768c8eea94809f0aeedecec0fb7b4e (patch) | |
| tree | e8bbc2ba008b861c01127a80ac6bb6dd5f33eeca | |
| parent | fix: make timezone configurable (diff) | |
| download | sl0pstatus-f90cabfb87768c8eea94809f0aeedecec0fb7b4e.tar.gz sl0pstatus-f90cabfb87768c8eea94809f0aeedecec0fb7b4e.tar.xz sl0pstatus-f90cabfb87768c8eea94809f0aeedecec0fb7b4e.zip | |
feat: color blank space with config
| -rw-r--r-- | README.md | 2 | ||||
| -rw-r--r-- | plugin-dev-workspace.kdl | 1 | ||||
| -rw-r--r-- | src/config.rs | 7 | ||||
| -rw-r--r-- | src/main.rs | 23 |
4 files changed, 29 insertions, 4 deletions
@@ -36,6 +36,7 @@ layout { plugin location="file:target/wasm32-wasi/debug/zjstatus.wasm" { format_left "{mode} #[fg=#89B4FA,bold]{session} {tabs}" format_right "{datetime}" + format_space "" mode_normal "#[bg=#89B4FA] " mode_tmux "#[bg=#ffc387] " @@ -53,6 +54,7 @@ layout { In order to start using zjstatus you need to specify the widgets you'd like to use under the `format_left` and/or `format_right` configuration. Formatting can be done with `#[..]`, while widgets and properties are surrounded by `{..}`. +The blank space between the left and the right part can be colored with `format_space`. ### 🎨 Formatting and theming diff --git a/plugin-dev-workspace.kdl b/plugin-dev-workspace.kdl index 3872f56..23a7ead 100644 --- a/plugin-dev-workspace.kdl +++ b/plugin-dev-workspace.kdl @@ -7,6 +7,7 @@ layout { plugin location="file:target/wasm32-wasi/debug/zjstatus.wasm" { format_left "{mode} #[fg=#89B4FA,bold]{session} {tabs}" format_right "{datetime}" + format_space "#[bg=#181825]" mode_normal "#[bg=#89B4FA] " mode_tmux "#[bg=#ffc387] " diff --git a/src/config.rs b/src/config.rs index 9352e0f..db4b443 100644 --- a/src/config.rs +++ b/src/config.rs @@ -6,6 +6,7 @@ use ansi_term::{Colour, Colour::Fixed, Colour::RGB}; pub struct ModuleConfig { pub left_parts: Vec<FormattedPart>, pub right_parts: Vec<FormattedPart>, + pub format_space: FormattedPart, } #[derive(Clone, Debug)] @@ -86,9 +87,15 @@ impl Default for FormattedPart { } pub fn parse_format(config: BTreeMap<String, String>) -> ModuleConfig { + let mut format_space_config = ""; + if let Some(space_config) = config.get("format_space") { + format_space_config = space_config; + } + ModuleConfig { left_parts: parts_from_config(config.get("format_left")), right_parts: parts_from_config(config.get("format_right")), + format_space: FormattedPart::from_format_string(format_space_config.to_string()), } } diff --git a/src/main.rs b/src/main.rs index cf0d4f8..12a18af 100644 --- a/src/main.rs +++ b/src/main.rs @@ -1,4 +1,7 @@ -use widgets::{datetime::DateTimeWidget, mode::ModeWidget, tabs::TabsWidget, widget::Widget, session::SessionWidget}; +use widgets::{ + datetime::DateTimeWidget, mode::ModeWidget, session::SessionWidget, tabs::TabsWidget, + widget::Widget, +}; use zellij_tile::prelude::*; use std::{collections::BTreeMap, sync::Arc, u8, usize}; @@ -35,7 +38,11 @@ impl ZellijPlugin for State { PermissionType::ReadApplicationState, PermissionType::RunCommands, ]); - subscribe(&[EventType::ModeUpdate, EventType::TabUpdate, EventType::SessionUpdate]); + subscribe(&[ + EventType::ModeUpdate, + EventType::TabUpdate, + EventType::SessionUpdate, + ]); self.module_config = config::parse_format(configuration.clone()); self.widget_map = register_widgets(configuration); @@ -96,7 +103,12 @@ impl ZellijPlugin for State { space_count -= text_count; } - print!("{}{}{}", output_left, " ".repeat(space_count), output_right); + let spaces = render::formatting( + self.module_config.format_space.clone(), + " ".repeat(space_count), + ); + + print!("{}{}{}", output_left, spaces, output_right); } } @@ -111,7 +123,10 @@ fn register_widgets(configuration: BTreeMap<String, String>) -> BTreeMap<String, "mode".to_string(), Arc::new(ModeWidget::new(configuration.clone())), ); - widget_map.insert("session".to_string(), Arc::new(SessionWidget::new(configuration.clone()))); + widget_map.insert( + "session".to_string(), + Arc::new(SessionWidget::new(configuration.clone())), + ); widget_map.insert("tabs".to_string(), Arc::new(TabsWidget::new(configuration))); widget_map |
