Allow system theme override with ICED_THEME env variable
This commit is contained in:
parent
4d32e733b7
commit
cb9b106ff8
1 changed files with 18 additions and 0 deletions
|
|
@ -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,
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue