Struct xdg::BaseDirectories [] [src]

pub struct BaseDirectories { /* fields omitted */ }
[]

BaseDirectories allows to look up paths to configuration, data, cache and runtime files in well-known locations according to the X Desktop Group Base Directory specification.

The Base Directory specification defines four kinds of files:

Examples

To configure paths for application myapp:

extern crate xdg;
let xdg_dirs = xdg::BaseDirectories::with_prefix("myapp").unwrap();

To store configuration:

let config_path = xdg_dirs.place_config_file("config.ini")
                          .expect("cannot create configuration directory");
let mut config_file = try!(File::create(config_path));
try!(write!(&mut config_file, "configured = 1"));

The config.ini file will appear in the proper location for desktop configuration files, most likely ~/.config/myapp/config.ini. The leading directories will be automatically created.

To retrieve supplementary data:

let logo_path = xdg_dirs.find_data_file("logo.png")
                        .expect("application data not present");
let mut logo_file = try!(File::open(logo_path));
let mut logo = Vec::new();
try!(logo_file.read_to_end(&mut logo));

The logo.png will be searched in the proper locations for supplementary data files, most likely ~/.local/share/myapp/logo.png, then /usr/local/share/myapp/logo.png and /usr/share/myapp/logo.png.

Methods

impl BaseDirectories
[src]

[]

Reads the process environment, determines the XDG base directories, and returns a value that can be used for lookup. The following environment variables are examined:

  • HOME; if not set: use the same fallback as std::env::home_dir(); if still not available: return an error.
  • XDG_DATA_HOME; if not set: assumed to be $HOME/.local/share.
  • XDG_CONFIG_HOME; if not set: assumed to be $HOME/.config.
  • XDG_CACHE_HOME; if not set: assumed to be $HOME/.cache.
  • XDG_DATA_DIRS; if not set: assumed to be /usr/local/share:/usr/share.
  • XDG_CONFIG_DIRS; if not set: assumed to be /etc/xdg.
  • XDG_RUNTIME_DIR; if not accessible or permissions are not 0700: record as inaccessible (can be queried with has_runtime_directory).

As per specification, if an environment variable contains a relative path, the behavior is the same as if it was not set.

[]

Same as new(), but prefix is implicitly prepended to every path that is looked up.

[]

Same as with_prefix(), with profile also implicitly prepended to every path that is looked up, but only for user-specific directories.

This allows each user to have mutliple "profiles" with different user-specific data.

For example:

let dirs = BaseDirectories::with_profile("program-name", "profile-name")
                           .unwrap();
dirs.find_data_file("bar.jpg");
dirs.find_config_file("foo.conf");

will find /usr/share/program-name/bar.jpg (without profile-name) and ~/.config/program-name/profile-name/foo.conf.

[]

Returns true if XDG_RUNTIME_DIR is available, false otherwise.

[]

Given a relative path path, returns an absolute path in XDG_CONFIG_HOME where a configuration file may be stored. Leading directories in the returned path are pre-created; if that is not possible, an error is returned.

[]

Like place_config_file(), but for a data file in XDG_DATA_HOME.

[]

Like place_config_file(), but for a cache file in XDG_CACHE_HOME.

[]

Like place_config_file(), but for a runtime file in XDG_RUNTIME_DIR. If XDG_RUNTIME_DIR is not available, returns an error.

[]

Given a relative path path, returns an absolute path to an existing configuration file, or None. Searches XDG_CONFIG_HOME and then XDG_CONFIG_DIRS.

[]

Given a relative path path, returns an absolute path to an existing configuration file, or None. Searches XDG_DATA_HOME and then XDG_DATA_DIRS.

[]

Given a relative path path, returns an absolute path to an existing configuration file, or None. Searches XDG_CACHE_HOME.

[]

Given a relative path path, returns an absolute path to an existing runtime file, or None. Searches XDG_RUNTIME_DIR. If XDG_RUNTIME_DIR is not available, returns None.

[]

Given a relative path path, returns an absolute path to a configuration directory in XDG_CONFIG_HOME. The directory and all directories leading to it are created if they did not exist; if that is not possible, an error is returned.

[]

Like create_config_directory(), but for a data directory in XDG_DATA_HOME.

[]

Like create_config_directory(), but for a cache directory in XDG_CACHE_HOME.

[]

Like create_config_directory(), but for a runtime directory in XDG_RUNTIME_DIR. If XDG_RUNTIME_DIR is not available, returns an error.

[]

Given a relative path path, list absolute paths to all files in directories with path path in XDG_CONFIG_HOME and XDG_CONFIG_DIRS.

[]

Like list_config_files, but only the first occurence of every distinct filename is returned.

[]

Given a relative path path, lists absolute paths to all files in directories with path path in XDG_DATA_HOME and XDG_DATA_DIRS.

[]

Like list_data_files, but only the first occurence of every distinct filename is returned.

[]

Given a relative path path, lists absolute paths to all files in directories with path path in XDG_CACHE_HOME.

[]

Given a relative path path, lists absolute paths to all files in directories with path path in XDG_RUNTIME_DIR. If XDG_RUNTIME_DIR is not available, returns an empty Vec.

[]

Returns the user-specific data directory (set by XDG_DATA_HOME).

[]

Returns the user-specific configuration directory (set by XDG_CONFIG_HOME).

[]

Returns the user-specific directory for non-essential (cached) data (set by XDG_CACHE_HOME).

[]

Returns a preference ordered (preferred to less preferred) list of supplementary data directories, ordered by preference (set by XDG_DATA_DIRS).

[]

Returns a preference ordered (preferred to less preferred) list of supplementary configuration directories (set by XDG_CONFIG_DIRS).

Trait Implementations

impl Debug for BaseDirectories
[src]

[]

Formats the value using the given formatter.

impl Clone for BaseDirectories
[src]

[]

Returns a copy of the value. Read more

[]

Performs copy-assignment from source. Read more