Skip to content

Commit bb6b8d0

Browse files
authored
add monitor detection fallback to skip cap check (#102)
l
1 parent 78e4718 commit bb6b8d0

File tree

1 file changed

+18
-5
lines changed

1 file changed

+18
-5
lines changed

src/brightness/ddcutil.rs

+18-5
Original file line numberDiff line numberDiff line change
@@ -19,7 +19,9 @@ pub struct DdcUtil {
1919

2020
impl DdcUtil {
2121
pub fn new(name: &str, min_brightness: u64) -> Result<Self, Box<dyn Error>> {
22-
let mut display = find_display_by_name(name).ok_or("Unable to find display")?;
22+
let mut display = find_display_by_name(name, true)
23+
.or_else(|| find_display_by_name(name, false))
24+
.ok_or("Unable to find display")?;
2325
let max_brightness = get_max_brightness(&mut display)?;
2426

2527
Ok(Self {
@@ -63,11 +65,16 @@ fn get_max_brightness(display: &mut Display) -> Result<u64, Box<dyn Error>> {
6365
.maximum() as u64)
6466
}
6567

66-
fn find_display_by_name(name: &str) -> Option<Display> {
68+
fn find_display_by_name(name: &str, check_caps: bool) -> Option<Display> {
6769
let displays = ddc_hi::Display::enumerate()
6870
.into_iter()
6971
.filter_map(|mut display| {
70-
display.update_capabilities().ok().map(|_| {
72+
let caps = if check_caps {
73+
display.update_capabilities()
74+
} else {
75+
Ok(())
76+
};
77+
caps.ok().map(|_| {
7178
let empty = "".to_string();
7279
let merged = format!(
7380
"{} {}",
@@ -80,15 +87,21 @@ fn find_display_by_name(name: &str) -> Option<Display> {
8087
.collect_vec();
8188

8289
log::debug!(
83-
"Discovered displays: {:?}",
90+
"Discovered displays (check_caps={}): {:?}",
91+
check_caps,
8492
displays.iter().map(|(name, _)| name).collect_vec()
8593
);
8694

8795
displays.into_iter().find_map(|(merged, display)| {
8896
merged
8997
.contains(name)
9098
.then(|| {
91-
log::debug!("Using display '{}' for config '{}'", merged, name);
99+
log::debug!(
100+
"Using display '{}' for config '{}' (check_caps={})",
101+
merged,
102+
name,
103+
check_caps
104+
);
92105
})
93106
.map(|_| display)
94107
})

0 commit comments

Comments
 (0)