Allow system theme override with ICED_THEME env variable

This commit is contained in:
Héctor Ramón Jiménez 2025-09-08 05:32:23 +02:00
parent 4d32e733b7
commit cb9b106ff8
No known key found for this signature in database
GPG key ID: 7CC46565708259A7

View file

@ -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<Option<Theme>> = 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,