From f9218d798ce68a53dc87254f7a39574838808e73 Mon Sep 17 00:00:00 2001 From: nik012003 Date: Tue, 16 May 2023 01:40:30 +0200 Subject: [PATCH] Made get_data_dir more robust --- src/xdg.rs | 23 +++++++++-------------- 1 file changed, 9 insertions(+), 14 deletions(-) diff --git a/src/xdg.rs b/src/xdg.rs index cb5801c..409a7f6 100644 --- a/src/xdg.rs +++ b/src/xdg.rs @@ -65,20 +65,11 @@ lazy_static! { fn get_data_dirs() -> Vec { let xdg_data_dirs_str = std::env::var("XDG_DATA_DIRS").unwrap_or_default(); - - let xdg_data_dirs = xdg_data_dirs_str + xdg_data_dirs_str .split(":") - .filter_map(|dir| PathBuf::from_str(dir).ok()); - - let data_home = dirs::home_dir() - .unwrap_or(PathBuf::from_str("/usr/share/").expect( - "No XDG_DATA_DIR set, no HOME directory found and no /usr/share direcotry found", - )) - .join(".local") - .join("share"); - - xdg_data_dirs - .chain([data_home].into_iter()) + .filter_map(|dir| PathBuf::from_str(dir).ok()) + .chain(dirs::home_dir().into_iter().map(|d| d.join(".local/share"))) + .chain(PathBuf::from_str("/usr/share").into_iter()) .filter(|dir| dir.exists() && dir.is_dir()) .collect() } @@ -255,7 +246,11 @@ impl DesktopFile { print!("Cache miss") } - if let Some(icon_path) = lookup(icon_name).with_size(preferred_px_size).with_cache().find() { + if let Some(icon_path) = lookup(icon_name) + .with_size(preferred_px_size) + .with_cache() + .find() + { if let Some(icon) = Icon::from_path(icon_path, preferred_px_size) { return Some(icon); }