From d54158101227ec358989b1b00d89e425b6d0c581 Mon Sep 17 00:00:00 2001 From: Denis Benato Date: Sun, 18 Jan 2026 15:38:41 +0100 Subject: [PATCH] fix: do not write unavailable settings to the config file --- asusd/src/ctrl_platform.rs | 26 ++++++++++++++++++++++---- 1 file changed, 22 insertions(+), 4 deletions(-) diff --git a/asusd/src/ctrl_platform.rs b/asusd/src/ctrl_platform.rs index 2e622155..51103bed 100644 --- a/asusd/src/ctrl_platform.rs +++ b/asusd/src/ctrl_platform.rs @@ -459,8 +459,18 @@ impl CtrlPlatform { #[zbus(signal_context)] ctxt: SignalEmitter<'_>, policy: PlatformProfile, ) -> Result<(), FdoErr> { - self.config.lock().await.platform_profile_on_battery = policy; - self.set_platform_profile(ctxt, policy).await?; + // If the requested profile isn't available on this platform, and it's + // `Quiet`, fall back to `LowPower` so we don't write an unavailable + // profile into the config file. + let mut chosen = policy; + if let Ok(choices) = self.platform.get_platform_profile_choices() { + if chosen == PlatformProfile::Quiet && !choices.contains(&PlatformProfile::Quiet) { + chosen = PlatformProfile::LowPower; + } + } + + self.config.lock().await.platform_profile_on_battery = chosen; + self.set_platform_profile(ctxt, chosen).await?; self.config.lock().await.write(); Ok(()) } @@ -488,8 +498,16 @@ impl CtrlPlatform { #[zbus(signal_context)] ctxt: SignalEmitter<'_>, policy: PlatformProfile, ) -> Result<(), FdoErr> { - self.config.lock().await.platform_profile_on_ac = policy; - self.set_platform_profile(ctxt, policy).await?; + // Mirror the same fallback behavior for AC profile changes. + let mut chosen = policy; + if let Ok(choices) = self.platform.get_platform_profile_choices() { + if chosen == PlatformProfile::Quiet && !choices.contains(&PlatformProfile::Quiet) { + chosen = PlatformProfile::LowPower; + } + } + + self.config.lock().await.platform_profile_on_ac = chosen; + self.set_platform_profile(ctxt, chosen).await?; self.config.lock().await.write(); Ok(()) }