From 8947bd643a219cff224672c6d0af639ac067fd4a Mon Sep 17 00:00:00 2001 From: S4NKALP Date: Mon, 23 Mar 2026 18:30:37 +0545 Subject: [PATCH] feat(commands):simplify battery limit messaging for Ideapad laptopsThe command now detects Ideapad hardware and provides clearer messages about Conservation Mode, removing outdated warnings. --- src/commands/battery.rs | 28 ++++++++++++++-------------- 1 file changed, 14 insertions(+), 14 deletions(-) diff --git a/src/commands/battery.rs b/src/commands/battery.rs index 9493347..30a2a84 100644 --- a/src/commands/battery.rs +++ b/src/commands/battery.rs @@ -14,6 +14,10 @@ trait Lapctl { async fn set_battery_limit(&self, percent: u32) -> zbus::Result<()>; } +fn is_ideapad() -> bool { + Path::new("/sys/bus/platform/drivers/ideapad_acpi").exists() +} + fn try_call_daemon(command: &BatteryCommands) -> bool { let rt = match tokio::runtime::Runtime::new() { Ok(rt) => rt, @@ -56,6 +60,16 @@ pub fn execute(command: &BatteryCommands) { error!("Invalid percentage. Please provide a value between 1 and 100."); std::process::exit(1); } + + if is_ideapad() { + if *percent < 100 { + println!("Setting battery charge limit (Lenovo Conservation Mode ~60%)..."); + } else { + println!("Disabling battery charge limit (charging to 100%)..."); + } + } else { + println!("Setting battery charge limit to {}%...", percent); + } } BatteryCommands::Status => {} } @@ -80,20 +94,6 @@ pub fn execute_local(command: &BatteryCommands) { let val = if *percent < 100 { "1" } else { "0" }; match fs::write(&conservation_path, val) { Ok(_) => { - if *percent < 100 { - println!( - "WARNING: Your laptop (Lenovo Ideapad) does NOT support custom charge limits (like {}%).", - percent - ); - println!( - "Instead, lapctl has enabled Lenovo's built-in 'Conservation Mode' via the Ideapad ACPI." - ); - println!( - "This mode is hard-coded into your laptop's firmware to stop charging at ~60%." - ); - } else { - println!("Disabled Conservation Mode (charging to 100%)."); - } success_count += 1; } Err(e) => {