[+] Separate lightness values for light and dark themes (#533)

[+] Lightness per theme config options
This commit is contained in:
AnonymousRand
2026-08-08 18:31:35 -07:00
committed by GitHub
parent 668e55e3a1
commit 08f8024faf
3 changed files with 21 additions and 1 deletions

View File

@@ -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,

View File

@@ -72,6 +72,13 @@ static RGB_COLORS_AC: OnceLock<AhoCorasick> = 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<f32> for Lightness {
type Error = LightnessError;

View File

@@ -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<bool>,
pub light_dark: Option<TerminalTheme>,
pub lightness: Option<Lightness>,
pub lightness_per_theme: Option<LightnessPerTheme>,
pub color_align: ColorAlignment,
pub backend: Backend,
#[serde(default)]