aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorIvan Molodetskikh <yalterz@gmail.com>2024-11-06 08:42:22 +0300
committerIvan Molodetskikh <yalterz@gmail.com>2024-11-06 08:42:22 +0300
commit8867a4f84c4bd07235abd37828b0d724321facbe (patch)
tree3ebcfc75c231e1dad0abe999cd46df031b2a43d6
parent88f4c1d610b7370774e8cd6d0370fd7bec7023f9 (diff)
downloadniri-8867a4f84c4bd07235abd37828b0d724321facbe.tar.gz
niri-8867a4f84c4bd07235abd37828b0d724321facbe.tar.bz2
niri-8867a4f84c4bd07235abd37828b0d724321facbe.zip
Add disable-monitor-names debug flag
-rw-r--r--niri-config/src/lib.rs2
-rw-r--r--src/backend/tty.rs39
-rw-r--r--wiki/Configuration:-Debug-Options.md15
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.