From fcd1c9dcbe810de479affe3caa4a6d8f8846c034 Mon Sep 17 00:00:00 2001 From: LGUG2Z Date: Fri, 24 Jan 2025 14:37:42 -0800 Subject: [PATCH] fix(wm): populate ws rules on config reload This commit fixes a bug where workspace rules would not be populated properly on file reloads, leading to issues with the ReplaceConfiguration message handler. --- komorebi/src/process_command.rs | 2 ++ komorebi/src/static_config.rs | 5 +++-- 2 files changed, 5 insertions(+), 2 deletions(-) diff --git a/komorebi/src/process_command.rs b/komorebi/src/process_command.rs index c9c40204..4c10e15f 100644 --- a/komorebi/src/process_command.rs +++ b/komorebi/src/process_command.rs @@ -1315,6 +1315,8 @@ impl WindowManager { // Initialize the new wm wm.init()?; + wm.restore_all_windows(true)?; + // This is equivalent to StaticConfig::postload for this use case StaticConfig::reload(config, &mut wm)?; diff --git a/komorebi/src/static_config.rs b/komorebi/src/static_config.rs index f9e965f9..4397f49d 100644 --- a/komorebi/src/static_config.rs +++ b/komorebi/src/static_config.rs @@ -1220,6 +1220,9 @@ impl StaticConfig { value.apply_globals()?; if let Some(monitors) = value.monitors { + let mut workspace_matching_rules = WORKSPACE_MATCHING_RULES.lock(); + workspace_matching_rules.clear(); + for (i, monitor) in monitors.iter().enumerate() { if let Some(m) = wm.monitors_mut().get_mut(i) { m.ensure_workspace_count(monitor.workspaces.len()); @@ -1238,8 +1241,6 @@ impl StaticConfig { } } - let mut workspace_matching_rules = WORKSPACE_MATCHING_RULES.lock(); - workspace_matching_rules.clear(); for (j, ws) in monitor.workspaces.iter().enumerate() { if let Some(rules) = &ws.workspace_rules { for r in rules {