Made get_data_dir more robust
This commit is contained in:
23
src/xdg.rs
23
src/xdg.rs
@@ -65,20 +65,11 @@ lazy_static! {
|
|||||||
|
|
||||||
fn get_data_dirs() -> Vec<PathBuf> {
|
fn get_data_dirs() -> Vec<PathBuf> {
|
||||||
let xdg_data_dirs_str = std::env::var("XDG_DATA_DIRS").unwrap_or_default();
|
let xdg_data_dirs_str = std::env::var("XDG_DATA_DIRS").unwrap_or_default();
|
||||||
|
xdg_data_dirs_str
|
||||||
let xdg_data_dirs = xdg_data_dirs_str
|
|
||||||
.split(":")
|
.split(":")
|
||||||
.filter_map(|dir| PathBuf::from_str(dir).ok());
|
.filter_map(|dir| PathBuf::from_str(dir).ok())
|
||||||
|
.chain(dirs::home_dir().into_iter().map(|d| d.join(".local/share")))
|
||||||
let data_home = dirs::home_dir()
|
.chain(PathBuf::from_str("/usr/share").into_iter())
|
||||||
.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(|dir| dir.exists() && dir.is_dir())
|
.filter(|dir| dir.exists() && dir.is_dir())
|
||||||
.collect()
|
.collect()
|
||||||
}
|
}
|
||||||
@@ -255,7 +246,11 @@ impl DesktopFile {
|
|||||||
print!("Cache miss")
|
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) {
|
if let Some(icon) = Icon::from_path(icon_path, preferred_px_size) {
|
||||||
return Some(icon);
|
return Some(icon);
|
||||||
}
|
}
|
||||||
|
|||||||
Reference in New Issue
Block a user