dotfiles/zsh/functions/init-env-default-xdg-vars

46 lines
1.4 KiB
Bash

#!/usr/bin/env zsh
# Eryn Wells <eryn@erynwells.me>
# See https://specifications.freedesktop.org/basedir/latest/ for definitions of
# these paths.
function init-env-default-xdg-vars
{
zmodload zsh/zutil
local -a opt_create
zparseopts -a opt_args -D -E -F - \
{c,-create,-no-create}=opt_create
# Base directories
export \
XDG_BIN_HOME=${XDG_BIN_HOME:-$HOME/.local/bin} \
XDG_CACHE_HOME=${XDG_CACHE_HOME:-$HOME/.cache} \
XDG_CONFIG_HOME=${XDG_CACHE_HOME:-$HOME/.config} \
XDG_DATA_HOME=${XDG_DATA_HOME:-$HOME/.local/share} \
XDG_STATE_HOME=${XDG_DATA_HOME:-$HOME/.local/state} \
XDG_RUNTIME_DIR=${XDG_DATA_HOME:-$HOME/.local/var}
# User directories
export \
XDG_DESKTOP_DIR=${XDG_DESKTOP_DIR:-$HOME/Desktop} \
XDG_DOCUMENTS_DIR=${XDG_DOCUMENTS_DIR:-$HOME/Document} \
XDG_DOWNLOAD_DIR=${XDG_DOWNLOAD_DIR:-$HOME/Downloads} \
XDG_MUSIC_DIR=${XDG_MUSIC_DIR:-$HOME/Music} \
XDG_PICTURES_DIR=${XDG_PICTURES_DIR:-$HOME/Pictures} \
XDG_PUBLICSHARE_DIR=${XDG_PUBLICSHARE_DIR:-$HOME/Public} \
XDG_VIDEOS_DIR=${XDG_VIDEOS_DIR:-$HOME/Video}
if [[ $opt_create[(I)--no-create] -ne 0 ]]; then
mkdir -p -m 0700 \
$XDG_BIN_HOME \
$XDG_CACHE_HOME \
$XDG_CONFIG_HOME \
$XDG_DATA_HOME \
$XDG_STATE_HOME
fi
}
init-env-default-xdg-vars "$@"