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 {