Skip to content

Commit

Permalink
Include more directories in macOS application search
Browse files Browse the repository at this point in the history
  • Loading branch information
Exidex committed Sep 15, 2024
1 parent 8c8ade8 commit dd8e754
Showing 1 changed file with 20 additions and 7 deletions.
27 changes: 20 additions & 7 deletions rust/server/src/plugins/applications/macos.rs
Original file line number Diff line number Diff line change
Expand Up @@ -16,9 +16,10 @@ pub fn get_apps() -> Vec<DesktopEntry> {

let core_services_applications = get_applications_in_dir(PathBuf::from("/System/Library/CoreServices/Applications"));

let user_admin_applications_dir = get_applications_with_kind(&file_manager, SearchPathDirectory::AdminApplications, SearchPathDomainMask::User);
let local_admin_applications_dir = get_applications_with_kind(&file_manager, SearchPathDirectory::AdminApplications, SearchPathDomainMask::Local);
let system_admin_applications_dir = get_applications_with_kind(&file_manager, SearchPathDirectory::AdminApplications, SearchPathDomainMask::Domain);
// these are covered by recursion
// let user_admin_applications_dir = get_applications_with_kind(&file_manager, SearchPathDirectory::AdminApplications, SearchPathDomainMask::User);
// let local_admin_applications_dir = get_applications_with_kind(&file_manager, SearchPathDirectory::AdminApplications, SearchPathDomainMask::Local);
// let system_admin_applications_dir = get_applications_with_kind(&file_manager, SearchPathDirectory::AdminApplications, SearchPathDomainMask::Domain);

let user_applications_dir = get_applications_with_kind(&file_manager, SearchPathDirectory::Applications, SearchPathDomainMask::User);
let local_applications_dir = get_applications_with_kind(&file_manager, SearchPathDirectory::Applications, SearchPathDomainMask::Local);
Expand All @@ -28,9 +29,9 @@ pub fn get_apps() -> Vec<DesktopEntry> {
finder_application,
finder_applications,
core_services_applications,
user_admin_applications_dir,
local_admin_applications_dir,
system_admin_applications_dir,
// user_admin_applications_dir,
// local_admin_applications_dir,
// system_admin_applications_dir,
user_applications_dir,
local_applications_dir,
system_applications_dir
Expand Down Expand Up @@ -72,6 +73,8 @@ fn get_applications_with_kind(file_manager: &FileManager, directory: SearchPathD
let applications_dir = url.to_file_path()
.expect("returned application url is not a file path");

tracing::debug!("reading {:?} {:?} directory: {:?}", directory, mask, &applications_dir);

get_applications_in_dir(applications_dir)
}
Err(err) => {
Expand All @@ -90,7 +93,17 @@ fn get_applications_in_dir(path: PathBuf) -> Vec<PathBuf> {
.unwrap_or_default()
.into_iter()
.map(|entry| entry.path())
.filter(|entry_path| entry_path.is_dir() && entry_path.extension() == Some(OsStr::new("app")))
.flat_map(|entry_path| {
if entry_path.is_dir() {
if entry_path.extension() == Some(OsStr::new("app")) {
vec![entry_path]
} else {
get_applications_in_dir(entry_path)
}
} else {
vec![]
}
})
.collect::<Vec<_>>()
}
Err(_) => vec![]
Expand Down

0 comments on commit dd8e754

Please sign in to comment.