From 08f8024faf6dc0d2f046f40870722233caa1ebc3 Mon Sep 17 00:00:00 2001 From: AnonymousRand <87093674+AnonymousRand@users.noreply.github.com> Date: Sat, 8 Aug 2026 18:31:35 -0700 Subject: [PATCH] [+] Separate lightness values for light and dark themes (#533) [+] Lightness per theme config options --- crates/hyfetch/src/bin/hyfetch.rs | 4 +++- crates/hyfetch/src/color_util.rs | 16 ++++++++++++++++ crates/hyfetch/src/models.rs | 2 ++ 3 files changed, 21 insertions(+), 1 deletion(-) diff --git a/crates/hyfetch/src/bin/hyfetch.rs b/crates/hyfetch/src/bin/hyfetch.rs index c8921c9c..75e2380b 100644 --- a/crates/hyfetch/src/bin/hyfetch.rs +++ b/crates/hyfetch/src/bin/hyfetch.rs @@ -224,7 +224,8 @@ fn main() -> Result<()> { } else { color_profile.with_lightness_adaptive( config - .lightness + .lightness_per_theme.map(|val| val.get(theme)) + .or(config.lightness) .unwrap_or_else(|| Config::default_lightness(theme)), theme, ) @@ -1495,6 +1496,7 @@ fn create_config( light_dark: Some(theme), auto_detect_light_dark: Some(det_bg.is_some()), lightness: Some(lightness), + lightness_per_theme: None, color_align, backend, args: None, diff --git a/crates/hyfetch/src/color_util.rs b/crates/hyfetch/src/color_util.rs index d558ddeb..cbb5a6b9 100644 --- a/crates/hyfetch/src/color_util.rs +++ b/crates/hyfetch/src/color_util.rs @@ -72,6 +72,13 @@ static RGB_COLORS_AC: OnceLock = OnceLock::new(); #[derive(Copy, Clone, PartialEq, PartialOrd, Debug, Deserialize, Serialize)] pub struct Lightness(f32); +/// Represents a dictionary of one lightness option per {light, dark} theme. +#[derive(Copy, Clone, Debug, Deserialize, Serialize)] +pub struct LightnessPerTheme { + dark: Lightness, + light: Lightness, +} + #[derive(Debug, Error)] pub enum LightnessError { #[error( @@ -148,6 +155,15 @@ impl Lightness { } } +impl LightnessPerTheme { + pub fn get(&self, theme: TerminalTheme) -> Lightness { + match theme { + TerminalTheme::Light => self.light, + TerminalTheme::Dark => self.dark + } + } +} + impl TryFrom for Lightness { type Error = LightnessError; diff --git a/crates/hyfetch/src/models.rs b/crates/hyfetch/src/models.rs index e432f480..e9ad874f 100644 --- a/crates/hyfetch/src/models.rs +++ b/crates/hyfetch/src/models.rs @@ -6,6 +6,7 @@ use strum::{AsRefStr, Display, EnumString}; use crate::color_profile::ColorProfile; use crate::color_util::Lightness; +use crate::color_util::LightnessPerTheme; use crate::neofetch_util::ColorAlignment; use crate::types::{AnsiMode, Backend, TerminalTheme}; @@ -16,6 +17,7 @@ pub struct Config { pub auto_detect_light_dark: Option, pub light_dark: Option, pub lightness: Option, + pub lightness_per_theme: Option, pub color_align: ColorAlignment, pub backend: Backend, #[serde(default)]