diff --git a/src/config.rs b/src/config.rs index bd0cc5d..38e89f6 100644 --- a/src/config.rs +++ b/src/config.rs @@ -48,16 +48,28 @@ impl Default for Config { pub fn get_config_dir() -> PathBuf { std::env::var_os("XDG_CONFIG_HOME") .map(PathBuf::try_from) - .expect("$XDG_CONFIG_HOME is unset") - .unwrap() + .expect("$XDG_CONFIG_HOME is unset.") + .unwrap_or_else(|_| { + std::env::var_os("HOME") + .map(PathBuf::try_from) + .expect("User has no $HOME.") + .unwrap() + .join(".config") + }) .join("breed") } pub fn get_data_dir() -> PathBuf { std::env::var_os("XDG_DATA_HOME") .map(PathBuf::try_from) - .expect("$XDG_DATA_HOME is unset") - .unwrap() + .expect("$XDG_DATA_HOME is unset.") + .unwrap_or_else(|_| { + std::env::var_os("HOME") + .map(PathBuf::try_from) + .expect("User has no $HOME.") + .unwrap() + .join(".local/share") + }) .join("breed") }