diff options
| -rw-r--r-- | niri-config/src/lib.rs | 2 | ||||
| -rw-r--r-- | src/handlers/compositor.rs | 9 | ||||
| -rw-r--r-- | wiki/Configuration:-Debug-Options.md | 14 |
3 files changed, 24 insertions, 1 deletions
diff --git a/niri-config/src/lib.rs b/niri-config/src/lib.rs index 76222934..f49c2496 100644 --- a/niri-config/src/lib.rs +++ b/niri-config/src/lib.rs @@ -1537,6 +1537,8 @@ pub struct DebugConfig { pub keep_laptop_panel_on_when_lid_is_closed: bool, #[knuffel(child)] pub disable_monitor_names: bool, + #[knuffel(child)] + pub strict_new_window_focus_policy: bool, } #[derive(knuffel::DecodeScalar, Debug, Clone, Copy, PartialEq, Eq)] diff --git a/src/handlers/compositor.rs b/src/handlers/compositor.rs index ed36100b..ae53bfc8 100644 --- a/src/handlers/compositor.rs +++ b/src/handlers/compositor.rs @@ -145,7 +145,14 @@ impl CompositorHandler for State { .filter(|token| token.timestamp.elapsed() < XDG_ACTIVATION_TOKEN_TIMEOUT) { Some(_) => ActivateWindow::Yes, - None => ActivateWindow::Smart, + None => { + let config = self.niri.config.borrow(); + if config.debug.strict_new_window_focus_policy { + ActivateWindow::No + } else { + ActivateWindow::Smart + } + } }; let output = if let Some(p) = parent { diff --git a/wiki/Configuration:-Debug-Options.md b/wiki/Configuration:-Debug-Options.md index f622bd68..5ba851fe 100644 --- a/wiki/Configuration:-Debug-Options.md +++ b/wiki/Configuration:-Debug-Options.md @@ -24,6 +24,7 @@ debug { disable-transactions keep-laptop-panel-on-when-lid-is-closed disable-monitor-names + strict-new-window-focus-policy } binds { @@ -194,6 +195,19 @@ debug { } ``` +### `strict-new-window-focus-policy` + +<sup>Since: 0.1.11</sup> + +Disables heuristic automatic focusing for new windows. +Only windows that activate themselves with a valid xdg-activation token will be focused. + +```kdl +debug { + strict-new-window-focus-policy +} +``` + ### Key Bindings These are not debug options, but rather key bindings. |
