Find assets by using other environment variables

By using HOME, XDG_DATA_HOME and XDG_DATA_DIRS we can
build potentially proper paths for finding assets folder.
This commit is contained in:
ElXreno 2020-04-12 19:44:21 +03:00
parent ff4894e454
commit 4cdc1300a1
No known key found for this signature in database
GPG Key ID: 684214850DBE3423

View File

@ -297,7 +297,23 @@ lazy_static! {
// System paths
#[cfg(target_os = "linux")]
paths.push("/usr/share/veloren/assets".into());
{
if let Ok(result) = std::env::var("XDG_DATA_HOME") {
paths.push(format!("{}/veloren/assets", result).into());
} else if let Ok(result) = std::env::var("HOME") {
paths.push(format!("{}/.local/share/veloren/assets", result).into());
}
if let Ok(result) = std::env::var("XDG_DATA_DIRS") {
result.split(":").for_each(|x| paths.push(format!("{}/veloren/assets", x).into()));
} else {
// Fallback
let fallback_paths = vec!["/usr/local/share", "/usr/share"];
for fallback_path in fallback_paths {
paths.push(format!("{}/veloren/assets", fallback_path).into());
}
}
}
for path in paths.clone() {
match find_folder::Search::ParentsThenKids(3, 1)