# xdir [![latest version][version.badge]][version.hyper] [![dependency status][deps.badge]][deps.hyper] [![documentation][docs.badge]][docs.hyper] [![license][license.badge]](#license) ## About This crate provides a minimal and opinionated library for retrieving _platform-agnostic_ XDG-compliant standard locations of directories. Notably, this crate will always yield the same locations for subdirectories of the user's home regardless of platform-specific conventions, which is often more consistent with what users would expect from a command-line application. If you are building an application that strictly follows the platform's conventions, the [`dirs`][dirs] crate provides _platform-**specific**_ locations. ## Usage `xdir` provides a minimal [API][docs.hyper] to return the standard location of a given directory. This allows users to configure where they would like certain files to be stored using environment variables as per the [XDG Base Directory Specification][xdg]. For example, to get the configuration file of an application: ```rust fn config() -> PathBuf { xdir::config() // Append the application name to the path to avoid cluttering the // general config directory. .map(|path| path.join("myapp")) // If the standard path could not be found (e.g.`$HOME` is not set), // default to the current directory. .unwrap_or_default() // Finally, append the config file to the directory path. .join("config.toml") } ``` ## License This project is dual-licensed under both [MIT License](./LICENSE-MIT) and [Apache License 2.0](./LICENSE-APACHE). You have permission to use this code under the conditions of either license pursuant to the rights granted by the chosen license. [deps.badge]: https://deps.rs/repo/github/kaplanz/xdir/status.svg [deps.hyper]: https://deps.rs/repo/github/kaplanz/xdir [docs.badge]: https://docs.rs/xdir/badge.svg [docs.hyper]: https://docs.rs/xdir [license.badge]: https://img.shields.io/crates/l/xdir.svg [version.badge]: https://img.shields.io/crates/v/xdir.svg [version.hyper]: https://crates.io/crates/xdir [dirs]: https://docs.rs/dirs [xdg]: https://specifications.freedesktop.org/basedir-spec/basedir-spec-latest.html