aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--niri-config/src/lib.rs5
-rw-r--r--src/window/mapped.rs1
-rw-r--r--src/window/mod.rs6
-rw-r--r--wiki/Configuration:-Window-Rules.md14
4 files changed, 26 insertions, 0 deletions
diff --git a/niri-config/src/lib.rs b/niri-config/src/lib.rs
index 10ed31b5..b7214018 100644
--- a/niri-config/src/lib.rs
+++ b/niri-config/src/lib.rs
@@ -1457,6 +1457,8 @@ pub struct Match {
#[knuffel(property)]
pub is_window_cast_target: Option<bool>,
#[knuffel(property)]
+ pub is_urgent: Option<bool>,
+ #[knuffel(property)]
pub at_startup: Option<bool>,
}
@@ -4804,6 +4806,7 @@ mod tests {
is_active_in_column: None,
is_floating: None,
is_window_cast_target: None,
+ is_urgent: None,
at_startup: None,
},
],
@@ -4822,6 +4825,7 @@ mod tests {
is_active_in_column: None,
is_floating: None,
is_window_cast_target: None,
+ is_urgent: None,
at_startup: None,
},
Match {
@@ -4836,6 +4840,7 @@ mod tests {
is_active_in_column: None,
is_floating: None,
is_window_cast_target: None,
+ is_urgent: None,
at_startup: None,
},
],
diff --git a/src/window/mapped.rs b/src/window/mapped.rs
index da6caf54..74a0ea4b 100644
--- a/src/window/mapped.rs
+++ b/src/window/mapped.rs
@@ -520,6 +520,7 @@ impl Mapped {
if self.is_focused && urgent {
return;
}
+
let changed = self.is_urgent != urgent;
self.is_urgent = urgent;
self.need_to_recompute_rules |= changed;
diff --git a/src/window/mod.rs b/src/window/mod.rs
index 71aa607b..0b94d04d 100644
--- a/src/window/mod.rs
+++ b/src/window/mod.rs
@@ -440,6 +440,12 @@ fn window_matches(window: WindowRef, role: &XdgToplevelSurfaceRoleAttributes, m:
}
}
+ if let Some(is_urgent) = m.is_urgent {
+ if window.is_urgent() != is_urgent {
+ return false;
+ }
+ }
+
if let Some(is_active) = m.is_active {
// Our "is-active" definition corresponds to the window having a pending Activated state.
let pending_activated = server_pending
diff --git a/wiki/Configuration:-Window-Rules.md b/wiki/Configuration:-Window-Rules.md
index 03af8d41..7a10859b 100644
--- a/wiki/Configuration:-Window-Rules.md
+++ b/wiki/Configuration:-Window-Rules.md
@@ -35,6 +35,7 @@ window-rule {
match is-active-in-column=true
match is-floating=true
match is-window-cast-target=true
+ match is-urgent=true
match at-startup=true
// Properties that apply once upon window opening.
@@ -286,6 +287,19 @@ Example:
![](https://github.com/user-attachments/assets/375b381e-3a87-4e94-8676-44404971d893)
+#### `is-urgent`
+
+<sup>Since: next release</sup>
+
+Can be `true` or `false`.
+Matches windows that request the user's attention.
+
+```kdl
+window-rule {
+ match is-urgent=true
+}
+```
+
#### `at-startup`
<sup>Since: 0.1.6</sup>