From cb9b106ff89cd05cde757ad76369b61d90d46c1b Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?H=C3=A9ctor=20Ram=C3=B3n=20Jim=C3=A9nez?= Date: Mon, 8 Sep 2025 05:32:23 +0200 Subject: [PATCH] Allow system theme override with `ICED_THEME` env variable --- core/src/theme.rs | 18 ++++++++++++++++++ 1 file changed, 18 insertions(+) diff --git a/core/src/theme.rs b/core/src/theme.rs index 3c0f51f9..5f2fb127 100644 --- a/core/src/theme.rs +++ b/core/src/theme.rs @@ -271,6 +271,24 @@ pub trait Base { impl Base for Theme { fn default(preference: Mode) -> Self { + use std::env; + use std::sync::OnceLock; + + static SYSTEM: OnceLock> = OnceLock::new(); + + let system = SYSTEM.get_or_init(|| { + let name = env::var("ICED_THEME").ok()?; + + Theme::ALL + .iter() + .find(|theme| theme.to_string() == name) + .cloned() + }); + + if let Some(system) = system { + return system.clone(); + } + match preference { Mode::None | Mode::Light => Self::Light, Mode::Dark => Self::Dark,