From 72430d352873fa17291503da6a191a336825552e Mon Sep 17 00:00:00 2001 From: neoarz Date: Wed, 7 Jan 2026 18:35:52 -0500 Subject: [PATCH] fix: formatting for display and battery --- src/helpers/battery.rs | 24 ++++++++++++------------ src/helpers/display.rs | 23 +++++++++++++---------- src/main.rs | 4 ++-- 3 files changed, 27 insertions(+), 24 deletions(-) diff --git a/src/helpers/battery.rs b/src/helpers/battery.rs index 91b1fb9..fea880a 100644 --- a/src/helpers/battery.rs +++ b/src/helpers/battery.rs @@ -1,13 +1,13 @@ use std::process::Command; -pub fn get_battery_info() -> String { +pub fn get_battery_info() -> (String, String) { let output = Command::new("ioreg") .args(["-l", "-w0", "-r", "-c", "AppleSmartBattery"]) .output(); let stdout = match output { Ok(out) => String::from_utf8_lossy(&out.stdout).to_string(), - Err(_) => return "".to_string(), + Err(_) => return ("".to_string(), "".to_string()), }; let mut device_name = "Built-in".to_string(); @@ -60,22 +60,21 @@ pub fn get_battery_info() -> String { if capacity >= 0 && capacity <= 100 { capacity as u32 } else { - return "".to_string(); + return (format!("({})", device_name), "".to_string()); } } else { - return "".to_string(); + return (format!("({})", device_name), "".to_string()); }; - let mut status = String::new(); - if external_connected { - status.push_str("AC connected"); + let status = if external_connected { + "AC connected" } else if is_charging { - status.push_str("Charging"); + "Charging" } else { - status.push_str("Discharging"); - } + "Discharging" + }; - let mut result = format!("({}) {}", device_name, crate::output::colors::battery_percent(percentage)); + let mut result = crate::output::colors::battery_percent(percentage); if !external_connected && !is_charging { if let Some(time_mins) = avg_time_to_empty { @@ -96,5 +95,6 @@ pub fn get_battery_info() -> String { result.push_str(&format!(" [{}]", status)); - result + (format!("({})", device_name), result) } + diff --git a/src/helpers/display.rs b/src/helpers/display.rs index 9d40ddd..f795831 100644 --- a/src/helpers/display.rs +++ b/src/helpers/display.rs @@ -2,6 +2,7 @@ use display_info::DisplayInfo; pub fn get_display_info() -> String { let displays = DisplayInfo::all().unwrap_or_else(|_| vec![]); + let display_count = displays.len(); if let Some(main) = displays.iter().find(|d| d.is_primary) { let p_width = (main.width as f32 * main.scale_factor) as u32; @@ -10,22 +11,24 @@ pub fn get_display_info() -> String { let diag_mm = ((main.width_mm as f32).powi(2) + (main.height_mm as f32).powi(2)).sqrt(); let inches = (diag_mm / 25.4).round() as u32; - let name = if main.name.is_empty() { - "Color LCD" - } else { - &main.name - }; - let tag = if main.is_primary { "[Built-in]" } else { "[External]" }; - format!( - "({}): {}x{} @ {}x in {}\", {} Hz {}", - name, p_width, p_height, main.scale_factor as u32, inches, main.frequency as u32, tag - ) + if display_count > 1 { + let name = if main.name.is_empty() { "Color LCD" } else { &main.name }; + format!( + "({}) {}x{} @ {}x in {}\", {} Hz {}", + name, p_width, p_height, main.scale_factor as u32, inches, main.frequency as u32, tag + ) + } else { + format!( + "{}x{} @ {}x in {}\", {} Hz {}", + p_width, p_height, main.scale_factor as u32, inches, main.frequency as u32, tag + ) + } } else { "unknown".to_string() } diff --git a/src/main.rs b/src/main.rs index b54d02f..86b3c87 100644 --- a/src/main.rs +++ b/src/main.rs @@ -34,7 +34,7 @@ struct Stats { swap: String, storage: String, ip: String, - battery: String, + battery: (String, String), // (device_name, info) locale: String, // Extra fields @@ -108,7 +108,7 @@ fn main() { println!("{}", colors::info("Disk (/)", &stats.storage)); // Don't wanna show print this lolol // println!("{}", colors::info("Local IP", &stats.ip)); - println!("{}", colors::info("Battery", &stats.battery)); + println!("{}", colors::info(&format!("Battery {}", stats.battery.0), &stats.battery.1)); println!("{}", colors::info("Locale", &stats.locale)); // color blocks