diff --git a/docs/config/README.md b/docs/config/README.md index fb293b42..0ba0b48b 100644 --- a/docs/config/README.md +++ b/docs/config/README.md @@ -119,6 +119,18 @@ The module is only visible when the device's battery is below 10%. | `display` | [link](#battery-display) | Display threshold and style for the module. | | `disabled` | `false` | Disables the `battery` module. | +
+There are also options for some uncommon battery states. + +| Variable | Description | +|------------------|-----------------------------------------------------| +| `unknown_symbol` | The symbol shown when the battery state is unknown. | +| `empty_symbol` | The symbol shown when the battery state is empty. | + +Note: Battery indicator will be hidden if the status is `unknown` or `empty` unless you specify the option in the config. + +
+ ### Example ```toml diff --git a/src/module.rs b/src/module.rs index 62483486..2cda82a0 100644 --- a/src/module.rs +++ b/src/module.rs @@ -75,6 +75,20 @@ impl<'a> Module<'a> { self.segments.last_mut().unwrap() } + /// Should config exists, get a reference to a newly created segment in the module + pub fn new_segment_if_config_exists(&mut self, name: &str) -> Option<&mut Segment> { + // Use the provided value unless overwritten by config + if let Some(value) = self.config_value_str(name) { + let mut segment = Segment::new(name); + segment.set_style(self.style); + segment.set_value(value); + self.segments.push(segment); + Some(self.segments.last_mut().unwrap()) + } else { + None + } + } + /// Whether a module has non-empty segments pub fn is_empty(&self) -> bool { self.segments.iter().all(|segment| segment.is_empty()) diff --git a/src/modules/battery.rs b/src/modules/battery.rs index 88189394..3ecc651f 100644 --- a/src/modules/battery.rs +++ b/src/modules/battery.rs @@ -45,6 +45,17 @@ pub fn module<'a>(context: &'a Context) -> Option> { battery::State::Discharging => { module.new_segment("discharging_symbol", BATTERY_DISCHARGING); } + battery::State::Unknown => { + log::debug!("Unknown detected"); + module.new_segment_if_config_exists("unknown_symbol")?; + } + battery::State::Empty => { + module.new_segment_if_config_exists("empty_symbol")?; + } + _ => { + log::debug!("Unhandled battery state `{}`", state); + return None; + } _ => return None, }