aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--niri-config/src/lib.rs2
-rw-r--r--src/handlers/compositor.rs9
-rw-r--r--wiki/Configuration:-Debug-Options.md14
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.