From a105be82cf4c333ae691fe7f021fca8fe2b9788e Mon Sep 17 00:00:00 2001 From: Joe Wilm Date: Mon, 2 Jan 2017 20:04:46 -0800 Subject: Real support for placing config in XDG_CONFIG_HOME Resolves #35. --- src/config.rs | 32 ++++++++++++-------------------- src/lib.rs | 1 + 2 files changed, 13 insertions(+), 20 deletions(-) (limited to 'src') diff --git a/src/config.rs b/src/config.rs index 59b9f5ea..55e69c90 100644 --- a/src/config.rs +++ b/src/config.rs @@ -792,26 +792,18 @@ impl Config { pub fn load() -> Result { let home = env::var("HOME")?; - // First path - let mut path = PathBuf::from(&home); - path.push(".config"); - path.push("alacritty.yml"); - - match Config::load_from(path) { - Ok(c) => Ok(c), - Err(e) => { - match e { - Error::NotFound => { - // Fallback path - let mut alt_path = PathBuf::from(&home); - alt_path.push(".alacritty.yml"); - - Config::load_from(alt_path) - }, - _ => Err(e), - } - } - } + // Try using XDG location by default + let path = ::xdg::BaseDirectories::new() + .ok() + .and_then(|xdg| xdg.find_config_file("alacritty.yml")) + .unwrap_or_else(|| { + // Fallback path: $HOME/.alacritty.yml + let mut alt_path = PathBuf::from(&home); + alt_path.push(".alacritty.yml"); + alt_path + }); + + Config::load_from(path) } /// Get list of colors diff --git a/src/lib.rs b/src/lib.rs index e060da04..d29204d2 100644 --- a/src/lib.rs +++ b/src/lib.rs @@ -45,6 +45,7 @@ extern crate serde; extern crate serde_json; extern crate serde_yaml; extern crate vte; +extern crate xdg; #[macro_use] extern crate bitflags; -- cgit