From 5a1567e3df57fefddc2da9179459b61076f04c1d Mon Sep 17 00:00:00 2001 From: Haim Gelfenbeyn Date: Mon, 1 Mar 2021 17:14:18 -0500 Subject: [PATCH] Better display ID on Linux (#54) --- src/display_control.rs | 19 +++++++++++++++++-- 1 file changed, 17 insertions(+), 2 deletions(-) diff --git a/src/display_control.rs b/src/display_control.rs index c83aa92..2b2212f 100644 --- a/src/display_control.rs +++ b/src/display_control.rs @@ -14,10 +14,25 @@ const INPUT_SELECT: u8 = 0x60; const RETRY_DELAY_MS: u64 = 3000; fn display_name(display: &Display, index: Option) -> String { + // Different OSes populate different fields of ddc-hi-rs info structure differently. Create + // a synthetic "display_name" that makes sense on each OS + #[cfg(target_os = "linux")] + let display_id = + vec![&display.info.manufacturer_id, &display.info.model_name, &display.info.serial_number] + .into_iter() + .flatten() + .map(|s| s.as_str() ) + .collect::>() + .join(" "); + #[cfg(target_os = "macos")] + let display_id = &display.info.id; + #[cfg(target_os = "windows")] + let display_id = &display.info.id; + if let Some(index) = index { - format!("'{} #{}'", display.info.id, index) + format!("'{} #{}'", display_id, index) } else { - format!("'{}'", display.info.id) + format!("'{}'", display_id) } }