diff --git a/cosmic-theme/src/model/theme.rs b/cosmic-theme/src/model/theme.rs index 89d87b6b..8e1cd9f7 100644 --- a/cosmic-theme/src/model/theme.rs +++ b/cosmic-theme/src/model/theme.rs @@ -685,23 +685,17 @@ impl Theme { self.shade } - /// get the active theme + /// Get the active theme based on the current theme mode. pub fn get_active() -> Result, Self)> { - let config = - Config::new(Self::id(), Self::VERSION).map_err(|e| (vec![e], Self::default()))?; - let is_dark = ThemeMode::is_dark(&config).map_err(|e| (vec![e], Self::default()))?; - Self::get_active_with_brightness(is_dark) - } - pub fn get_active_with_brightness( - is_dark: bool, - ) -> Result, Self)> { - let config = if is_dark { - Self::dark_config() - } else { - Self::light_config() - } - .map_err(|e| (vec![e], Self::default()))?; - Self::get_entry(&config) + (|| { + (if ThemeMode::is_dark(&Config::new(Self::id(), Self::VERSION)?)? { + Self::dark_config + } else { + Self::light_config + })() + })() + .map_err(|error| (vec![error], Self::default())) + .and_then(|theme_config| Self::get_entry(&theme_config)) } #[must_use] diff --git a/cosmic-theme/src/output/qt_output.rs b/cosmic-theme/src/output/qt_output.rs index 0d9a4258..78bdec61 100644 --- a/cosmic-theme/src/output/qt_output.rs +++ b/cosmic-theme/src/output/qt_output.rs @@ -1,5 +1,6 @@ use crate::Theme; use configparser::ini::Ini; +use cosmic_config::CosmicConfigEntry; use palette::{Mix, Srgba, blend::Compose}; use std::{ fs::{self, File}, @@ -92,7 +93,11 @@ impl Theme { let dark = if self.is_dark { self.clone() } else { - Self::get_active_with_brightness(false).unwrap_or_else(|_| self.clone()) + Theme::light_config() + .ok() + .as_ref() + .and_then(|conf| Theme::get_entry(conf).ok()) + .unwrap_or_else(|| self.clone()) }; IniColors { background_alternate: dark.accent.base,