Implement at-startup window rule

This commit is contained in:
Ivan Molodetskikh
2024-05-16 11:43:13 +04:00
parent c64d9e5223
commit cbfc682f9a
6 changed files with 107 additions and 33 deletions
+11 -5
View File
@@ -581,8 +581,11 @@ impl State {
};
let config = self.niri.config.borrow();
let rules =
ResolvedWindowRules::compute(&config.window_rules, WindowRef::Unmapped(unmapped));
let rules = ResolvedWindowRules::compute(
&config.window_rules,
WindowRef::Unmapped(unmapped),
self.niri.is_at_startup,
);
let Unmapped { window, state } = unmapped;
@@ -876,8 +879,11 @@ impl State {
let window_rules = &config.window_rules;
if let Some(unmapped) = self.niri.unmapped_windows.get_mut(toplevel.wl_surface()) {
let new_rules =
ResolvedWindowRules::compute(window_rules, WindowRef::Unmapped(unmapped));
let new_rules = ResolvedWindowRules::compute(
window_rules,
WindowRef::Unmapped(unmapped),
self.niri.is_at_startup,
);
if let InitialConfigureState::Configured { rules, .. } = &mut unmapped.state {
*rules = new_rules;
}
@@ -886,7 +892,7 @@ impl State {
.layout
.find_window_and_output_mut(toplevel.wl_surface())
{
if mapped.recompute_window_rules(window_rules) {
if mapped.recompute_window_rules(window_rules, self.niri.is_at_startup) {
drop(config);
let output = output.cloned();
let window = mapped.window.clone();