aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorZac Pullar-Strecker <zacps@users.noreply.github.com>2018-12-28 03:16:31 +1300
committerChristian Duerr <chrisduerr@users.noreply.github.com>2018-12-27 14:16:31 +0000
commit6d7647c8907978892d635bb79d8ba39629f8e194 (patch)
tree68bbc44615f371ce89b512e97b749c9b819a498b
parentf0180430dfea33d806ab530e789d2edb1488af6b (diff)
downloadalacritty-6d7647c8907978892d635bb79d8ba39629f8e194.tar.gz
alacritty-6d7647c8907978892d635bb79d8ba39629f8e194.zip
Make windows config location more sensible
-rw-r--r--CHANGELOG.md5
-rw-r--r--Cargo.toml1
-rw-r--r--README.md2
-rw-r--r--src/config.rs43
-rw-r--r--src/lib.rs2
5 files changed, 40 insertions, 13 deletions
diff --git a/CHANGELOG.md b/CHANGELOG.md
index 6d0b0c30..121425d4 100644
--- a/CHANGELOG.md
+++ b/CHANGELOG.md
@@ -11,6 +11,11 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0
- New configuration field `visual_bell.color` allows changing the visual bell color
- Crashes on Windows are now also reported with a popup in addition to stderr
+### Changed
+
+- Windows configuration location has been moved from %USERPROFILE\alacritty.yml
+ to %APPDATA%\Roaming\alacritty\alacritty.yml
+
### Fixed
- Fix color issue in ncurses programs by updating terminfo pairs from 0x10000 to 0x7FFF
diff --git a/Cargo.toml b/Cargo.toml
index 297ddacb..7f7de060 100644
--- a/Cargo.toml
+++ b/Cargo.toml
@@ -60,6 +60,7 @@ winpty = { path = "./winpty" }
mio-named-pipes = "0.1"
winapi = { version = "0.3.5", features = ["winuser", "synchapi", "roerrorapi", "winerror"]}
dunce = "0.1"
+dirs = "1.0"
[target.'cfg(target_os = "macos")'.dependencies]
objc = "0.2.2"
diff --git a/README.md b/README.md
index 98c170b4..17dd577e 100644
--- a/README.md
+++ b/README.md
@@ -126,7 +126,7 @@ file, please consult the comments in the default config file.
On Windows the config file is located at:
-`%UserProfile%\alacritty.yml`
+`%APPDATA%\Roaming\alacritty\alacritty.yml`
## Issues (known, unknown, feature requests, etc.)
diff --git a/src/config.rs b/src/config.rs
index d5eadcf8..76d9d7e3 100644
--- a/src/config.rs
+++ b/src/config.rs
@@ -1521,33 +1521,52 @@ impl Config {
.map(|path| path.into())
}
+ // TODO: Remove old configuration location warning (Deprecated 03/12/2018)
#[cfg(windows)]
pub fn installed_config<'a>() -> Option<Cow<'a, Path>> {
- if let Some(mut path) = ::std::env::home_dir() {
- path.push("alacritty");
- path.set_extension("yml");
- if path.exists() {
- return Some(path.into());
- }
+ let old = dirs::home_dir()
+ .map(|path| path.join("alacritty.yml"));
+ let new = dirs::config_dir()
+ .map(|path| path.join("alacritty\\alacritty.yml"));
+
+ if let Some(old_path) = old.as_ref().filter(|old| old.exists()) {
+ warn!(
+ "Found configuration at: '{}'. The file should be moved to the new location: '{}'.",
+ old_path.to_string_lossy(),
+ new.as_ref().map(|new| new.to_string_lossy()).unwrap(),
+ );
+
+ old.map(Cow::from)
+ } else {
+ new.filter(|new| new.exists()).map(Cow::from)
}
- None
}
#[cfg(not(windows))]
pub fn write_defaults() -> io::Result<Cow<'static, Path>> {
- let path = ::xdg::BaseDirectories::with_prefix("alacritty")
- .map_err(|err| io::Error::new(io::ErrorKind::NotFound, ::std::error::Error::description(&err)))
+ let path = xdg::BaseDirectories::with_prefix("alacritty")
+ .map_err(|err| io::Error::new(io::ErrorKind::NotFound, err.to_string().as_str()))
.and_then(|p| p.place_config_file("alacritty.yml"))?;
+
File::create(&path)?.write_all(DEFAULT_ALACRITTY_CONFIG.as_bytes())?;
+
Ok(path.into())
}
#[cfg(windows)]
pub fn write_defaults() -> io::Result<Cow<'static, Path>> {
- let path = ::std::env::home_dir()
- .ok_or_else(|| io::Error::new(io::ErrorKind::NotFound, "could not find profile directory"))
- .and_then(|mut p| {p.push("alacritty"); p.set_extension("yml"); Ok(p)})?;
+ let mut path = dirs::config_dir()
+ .ok_or_else(|| {
+ io::Error::new(io::ErrorKind::NotFound, "could not find profile directory")
+ }
+ )?;
+
+ path = path.join("alacritty/alacritty.yml");
+
+ fs::create_dir_all(path.parent().unwrap())?;
+
File::create(&path)?.write_all(DEFAULT_ALACRITTY_CONFIG.as_bytes())?;
+
Ok(path.into())
}
diff --git a/src/lib.rs b/src/lib.rs
index 30eb408d..5e56361b 100644
--- a/src/lib.rs
+++ b/src/lib.rs
@@ -30,6 +30,8 @@ extern crate winpty;
extern crate dunce;
#[cfg(windows)]
extern crate image;
+#[cfg(windows)]
+extern crate dirs;
#[cfg(target_os = "macos")]
#[macro_use]