diff options
| author | Ivan Molodetskikh <yalterz@gmail.com> | 2024-11-06 08:42:22 +0300 |
|---|---|---|
| committer | Ivan Molodetskikh <yalterz@gmail.com> | 2024-11-06 08:42:22 +0300 |
| commit | 8867a4f84c4bd07235abd37828b0d724321facbe (patch) | |
| tree | 3ebcfc75c231e1dad0abe999cd46df031b2a43d6 | |
| parent | 88f4c1d610b7370774e8cd6d0370fd7bec7023f9 (diff) | |
| download | niri-8867a4f84c4bd07235abd37828b0d724321facbe.tar.gz niri-8867a4f84c4bd07235abd37828b0d724321facbe.tar.bz2 niri-8867a4f84c4bd07235abd37828b0d724321facbe.zip | |
Add disable-monitor-names debug flag
| -rw-r--r-- | niri-config/src/lib.rs | 2 | ||||
| -rw-r--r-- | src/backend/tty.rs | 39 | ||||
| -rw-r--r-- | wiki/Configuration:-Debug-Options.md | 15 |
3 files changed, 51 insertions, 5 deletions
diff --git a/niri-config/src/lib.rs b/niri-config/src/lib.rs index 6e7a4b31..bc8d3d14 100644 --- a/niri-config/src/lib.rs +++ b/niri-config/src/lib.rs @@ -1535,6 +1535,8 @@ pub struct DebugConfig { pub disable_transactions: bool, #[knuffel(child)] pub keep_laptop_panel_on_when_lid_is_closed: bool, + #[knuffel(child)] + pub disable_monitor_names: bool, } #[derive(knuffel::DecodeScalar, Debug, Clone, Copy, PartialEq, Eq)] diff --git a/src/backend/tty.rs b/src/backend/tty.rs index 5da9a604..fd0f04a2 100644 --- a/src/backend/tty.rs +++ b/src/backend/tty.rs @@ -749,7 +749,12 @@ impl Tty { let device = self.devices.get_mut(&node).context("missing device")?; - let output_name = make_output_name(&device.drm, connector.handle(), connector_name.clone()); + let output_name = make_output_name( + &device.drm, + connector.handle(), + connector_name.clone(), + self.config.borrow().debug.disable_monitor_names, + ); let non_desktop = find_drm_property(&device.drm, connector.handle(), "non-desktop") .and_then(|(_, info, value)| info.value_type().convert_value(value).as_boolean()) @@ -1568,8 +1573,12 @@ impl Tty { for (connector, crtc) in device.drm_scanner.crtcs() { let connector_name = format_connector_name(connector); let physical_size = connector.size(); - let output_name = - make_output_name(&device.drm, connector.handle(), connector_name.clone()); + let output_name = make_output_name( + &device.drm, + connector.handle(), + connector_name.clone(), + self.config.borrow().debug.disable_monitor_names, + ); let surface = device.surfaces.get(&crtc); let current_crtc_mode = surface.map(|surface| surface.compositor.pending_mode()); @@ -1828,7 +1837,12 @@ impl Tty { } let connector_name = format_connector_name(connector); - let output_name = make_output_name(&device.drm, connector.handle(), connector_name); + let output_name = make_output_name( + &device.drm, + connector.handle(), + connector_name, + self.config.borrow().debug.disable_monitor_names, + ); let config = self .config .borrow() @@ -1887,7 +1901,12 @@ impl Tty { } let connector_name = format_connector_name(connector); - let output_name = make_output_name(&device.drm, connector.handle(), connector_name); + let output_name = make_output_name( + &device.drm, + connector.handle(), + connector_name, + self.config.borrow().debug.disable_monitor_names, + ); if output_name.matches(target) { return Some(output_name); } @@ -2485,7 +2504,17 @@ fn make_output_name( device: &DrmDevice, connector: connector::Handle, connector_name: String, + disable_monitor_names: bool, ) -> OutputName { + if disable_monitor_names { + return OutputName { + connector: connector_name, + make: None, + model: None, + serial: None, + }; + } + let info = get_edid_info(device, connector) .map_err(|err| warn!("error getting EDID info for {connector_name}: {err:?}")) .ok(); diff --git a/wiki/Configuration:-Debug-Options.md b/wiki/Configuration:-Debug-Options.md index 9d32ffd9..f622bd68 100644 --- a/wiki/Configuration:-Debug-Options.md +++ b/wiki/Configuration:-Debug-Options.md @@ -23,6 +23,7 @@ debug { disable-resize-throttling disable-transactions keep-laptop-panel-on-when-lid-is-closed + disable-monitor-names } binds { @@ -179,6 +180,20 @@ debug { } ``` +### `disable-monitor-names` + +<sup>Since: 0.1.10</sup> + +Disables the make/model/serial monitor names, as if niri fails to read them from the EDID. + +Use this flag to work around a crash present in 0.1.9 and 0.1.10 when connecting two monitors with matching make/model/serial. + +```kdl +debug { + disable-monitor-names +} +``` + ### Key Bindings These are not debug options, but rather key bindings. |
