From d6bf77bf3a9444c8b3e9d4289776c7dba2e59322 Mon Sep 17 00:00:00 2001 From: manascb1344 Date: Fri, 8 May 2026 15:39:31 +0530 Subject: [PATCH] sort startup applications and all apps by name for improved organization --- .../src/pages/applications/startup_apps.rs | 38 ++++++++++++++++++- 1 file changed, 37 insertions(+), 1 deletion(-) diff --git a/cosmic-settings/src/pages/applications/startup_apps.rs b/cosmic-settings/src/pages/applications/startup_apps.rs index bbe4488..3f03e75 100644 --- a/cosmic-settings/src/pages/applications/startup_apps.rs +++ b/cosmic-settings/src/pages/applications/startup_apps.rs @@ -142,8 +142,21 @@ impl page::Page for Page { let user_entries = freedesktop_desktop_entry::Iter::new(user_dirs.into_iter()).entries(Some(&locales)); + let mut user_entries_vec = user_entries.collect_vec(); + user_entries_vec.sort_by(|a, b| { + let name_a = a + .name(&locales) + .map(|n| n.to_lowercase()) + .unwrap_or_else(|| a.appid.to_lowercase()); + let name_b = b + .name(&locales) + .map(|n| n.to_lowercase()) + .unwrap_or_else(|| b.appid.to_lowercase()); + name_a.cmp(&name_b) + }); + let mut apps_hash = HashMap::with_capacity(1); - apps_hash.insert(DirectoryType::User, user_entries.collect_vec()); + apps_hash.insert(DirectoryType::User, user_entries_vec); Message::UpdateStartupApplications(CachedApps { apps: apps_hash, @@ -246,6 +259,17 @@ impl Page { if let Some(target_apps) = target_apps { let mut new_apps = target_apps.clone(); new_apps.push(app.clone()); + new_apps.sort_by(|a, b| { + let name_a = a + .name(&cached_startup_apps.locales) + .map(|n| n.to_lowercase()) + .unwrap_or_else(|| a.appid.to_lowercase()); + let name_b = b + .name(&cached_startup_apps.locales) + .map(|n| n.to_lowercase()) + .unwrap_or_else(|| b.appid.to_lowercase()); + name_a.cmp(&name_b) + }); cached_startup_apps .apps @@ -473,5 +497,17 @@ fn get_all_apps(locales: Vec) -> Vec { dedupe.insert(app_id.to_owned()); } + result.sort_by(|a, b| { + let name_a = a + .name(&locales) + .map(|n| n.to_lowercase()) + .unwrap_or_else(|| a.appid.to_lowercase()); + let name_b = b + .name(&locales) + .map(|n| n.to_lowercase()) + .unwrap_or_else(|| b.appid.to_lowercase()); + name_a.cmp(&name_b) + }); + result }