Skip to content

Commit

Permalink
Conform to XDG spec for configuration
Browse files Browse the repository at this point in the history
	- Use $XDG_CONFIG_HOME/alacritty/alacritty.yml for loading the
	  configuration file falling back to $HOME/.config/alacritty/alacritty.yml
	- Closes alacritty#203
  • Loading branch information
0X1A authored and jwilm committed Jan 9, 2017
1 parent 2fa2714 commit 987b855
Show file tree
Hide file tree
Showing 2 changed files with 15 additions and 9 deletions.
12 changes: 9 additions & 3 deletions README.md
Original file line number Diff line number Diff line change
Expand Up @@ -138,9 +138,15 @@ cp Alacritty.desktop ~/.local/share/applications
### Configuration

Although it's possible the default configuration would work on your system,
you'll probably end up wanting to customize it anyhow. There is an
`alacritty.yml` at the git repository root. Copy this to either
`$HOME/.alacritty.yml` or `$XDG_CONFIG_HOME/alacritty.yml` and run Alacritty.
you'll probably end up wanting to customize it anyhow. There is a default
`alacritty.yml` at the git repository root. Alacritty looks for the configuration
file as the following paths:

1. `$XDG_CONFIG_HOME/alacritty/alacritty.yml`
2. `$HOME/.config/alacritty/alacritty.yml`

If these files are not found then one is created as `$HOME/.config/alacritty/alacritty.yml`
once alacritty is first run.

Many configuration options will take effect immediately upon saving changes to
the config file. The only exception is the `font` and `dpi` section which
Expand Down
12 changes: 6 additions & 6 deletions src/config.rs
Original file line number Diff line number Diff line change
Expand Up @@ -811,27 +811,27 @@ impl Config {
///
/// The config file is loaded from the first file it finds in this list of paths
///
/// 1. `$HOME/.config/alacritty.yml`
/// 2. `$HOME/.alacritty.yml`
/// 1. $XDG_CONFIG_HOME/alacritty/alacritty.yml
/// 2. $HOME/.config/alacritty/alacritty.yml
pub fn load() -> Result<Config> {
let home = env::var("HOME")?;

// Try using XDG location by default
let path = ::xdg::BaseDirectories::new()
let path = ::xdg::BaseDirectories::with_prefix("alacritty")
.ok()
.and_then(|xdg| xdg.find_config_file("alacritty.yml"))
.unwrap_or_else(|| {
// Fallback path: $HOME/.alacritty.yml
// Fallback path: $HOME/.config/alacritty/alacritty.yml
let mut alt_path = PathBuf::from(&home);
alt_path.push(".alacritty.yml");
alt_path.push(".config/alacritty/alacritty.yml");
alt_path
});

Config::load_from(path)
}

pub fn write_defaults() -> io::Result<PathBuf> {
let path = ::xdg::BaseDirectories::new()
let path = ::xdg::BaseDirectories::with_prefix("alacritty")
.map_err(|err| io::Error::new(io::ErrorKind::NotFound, ::std::error::Error::description(&err)))
.and_then(|p| p.place_config_file("alacritty.yml"))?;
File::create(&path)?.write_all(DEFAULT_ALACRITTY_CONFIG.as_bytes())?;
Expand Down

0 comments on commit 987b855

Please sign in to comment.