From 3320cf27b23f77cdb08bc07eb7ce56c012f19a61 Mon Sep 17 00:00:00 2001 From: MapoMagpie <33853879+MapoMagpie@users.noreply.github.com> Date: Mon, 24 Mar 2025 22:16:23 +0800 Subject: [PATCH] fix(workspaces): niri workspaces not respecting `added` sort (#911) * refactor: sort niri workspaces before init * chore: comment for ordered_niri_workspace changing --- src/clients/compositor/niri/mod.rs | 6 +++++- 1 file changed, 5 insertions(+), 1 deletion(-) diff --git a/src/clients/compositor/niri/mod.rs b/src/clients/compositor/niri/mod.rs index 5e655de..f05a41e 100644 --- a/src/clients/compositor/niri/mod.rs +++ b/src/clients/compositor/niri/mod.rs @@ -40,7 +40,11 @@ impl Client { let mut updates: Vec = vec![]; if first_event { - updates.push(WorkspaceUpdate::Init(new_workspaces.clone())); + // Niri's WorkspacesChanged event does not initially sort workspaces by ID when first output, + // which makes sort = added meaningless. Therefore, new_workspaces are sorted by ID here to ensure a consistent addition order. + let mut new_workspaces = new_workspaces.clone(); + new_workspaces.sort_by_key(|w| w.id); + updates.push(WorkspaceUpdate::Init(new_workspaces)); first_event = false; } else { // first pass - add/update