platform-dirs-rs
A Rust library for obtaining platform dependent directory paths for application and user directories.
Uses the following standards:
- Linux/*BSD: XDG Base Directories and XDG User Directories
- macOS: Standard Directories
- Windows: Known Folder
Installation
Add the following to your Cargo.toml:
[]
= "0.3.0"
Examples
Obtaining paths
use ;
Opening config file
use ;
use AppDirs;
Path list
AppDirs
| Directory | Windows | Linux/*BSD | macOS |
|---|---|---|---|
| cache_dir | %LOCALAPPDATA% (C:\Users\%USERNAME%\AppData\Local) |
$XDG_CACHE_HOME (~/.cache) |
~/Library/Caches |
| config_dir | %APPDATA% (C:\Users\%USERNAME%\AppData\Roaming) |
$XDG_CONFIG_HOME (~/.config) |
~/Library/Application Support |
| data_dir | %LOCALAPPDATA% (C:\Users\%USERNAME%\AppData\Local) |
$XDG_DATA_HOME (~/.local/share) |
~/Library/Application Support |
| state_dir | %LOCALAPPDATA% (C:\Users\%USERNAME%\AppData\Local) |
$XDG_STATE_HOME (~/.local/state) |
~/Library/Application Support |
UserDirs
| Directory | Windows | Linux/*BSD | macOS |
|---|---|---|---|
| desktop_dir | {FOLDERID_Desktop} (C:\Users\%USERNAME%\Desktop) |
$XDG_DESKTOP_DIR (~/Desktop) |
~/Desktop |
| document_dir | {FOLDERID_Documents} (C:\Users\%USERNAME%\Documents) |
$XDG_DOCUMENTS_DIR (~/Documents) |
~/Documents |
| download_dir | {FOLDERID_Downloads} (C:\Users\%USERNAME%\Downloads) |
$XDG_DOWNLOAD_DIR (~/Downloads) |
~/Downloads |
| music_dir | {FOLDERID_Music} (C:\Users\%USERNAME%\Music) |
$XDG_MUSIC_DIR (~/Music) |
~/Music |
| picture_dir | {FOLDERID_Pictures} (C:\Users\%USERNAME%\Pictures) |
$XDG_PICTURES_DIR (~/Pictures) |
~/Pictures |
| public_dir | {FOLDERID_Public} (C:\Users\%USERNAME%\Public) |
$XDG_PUBLICSHARE_DIR (~/Public) |
~/Public |
| video_dir | {FOLDERID_Videos} (C:\Users\%USERNAME%\Videos) |
$XDG_VIDEOS_DIR (~/Videos) |
~/Movies |
Comparisons
platform-dirs differs from dirs-rs and directories-rs in several ways:
- allows for using the XDG spec on macOS for CLI apps
- changes the config directory on macOS from
Library/PreferencestoLibrary/Application SupportLibrary/Preferencesis supposed to be used for macOS unique plist preferences: info
- only includes directories that are cross platform
AppDirs:- removes
data_local_dir
- removes
UserDirs:- removes
runtime_dir,executable_dir
- removes
- provides a simpler API than directories-rs
- the fields of
UserDirsare no longerOptions - the struct fields are now publicly accessible
- combines the
ProjectDirsstruct intoAppDirs
- the fields of
- adds
state_dirtoAppDirs- documentation can be found here at the bottom of the page
- used for stateful application data like logs, history, etc
- on Linux, returns default platforms values for the
UserDirsif they are not set instead of returningNone