Marty Oehme
c6f243c2c1
Python complains if you point it to a different configuration file (as we do with the changes to XDG directories) but it doesn't exist. So, we simply check for its existence and create it if necessary when setting up an environment.
102 lines
4.1 KiB
Bash
102 lines
4.1 KiB
Bash
#!/usr/bin/env sh
|
|
# XDG Base Directory Specification
|
|
#
|
|
# Sets up necessary environment variables for XDG convention,
|
|
# and those that applications obey for their environments.
|
|
#
|
|
# Thank you remeberYou for the idea
|
|
# see: https://github.com/rememberYou/dotfiles/blob/master/sh/.config/sh/xdg
|
|
#
|
|
# Additionally, home directories are set using the XDG specification,
|
|
# if the xdg-user-dirs module is enabled.
|
|
#
|
|
# Shellcheck will complain about setting permissions for the directories
|
|
# unless it is ignored https://github.com/koalaman/shellcheck/wiki/SC2174
|
|
# shellcheck disable=SC2174
|
|
|
|
# http://standards.freedesktop.org/basedir-spec/basedir-spec-latest.html
|
|
test "$XDG_CACHE_HOME" || export XDG_CACHE_HOME="$HOME/.cache"
|
|
test "$XDG_CONFIG_HOME" || export XDG_CONFIG_HOME="$HOME/.config"
|
|
test "$XDG_DATA_HOME" || export XDG_DATA_HOME="$HOME/.local/share"
|
|
test "$XDG_STATE_HOME" || export XDG_STATE_HOME="$HOME/.local/state"
|
|
|
|
# Desktop environment XDG variables - mimics `xdg-user-dirs` settings, only lowercased and not localized
|
|
test "$XDG_DESKTOP_DIR" || export XDG_DESKTOP_DIR="$HOME/desktop"
|
|
test "$XDG_DOCUMENTS_DIR" || export XDG_DOCUMENTS_DIR="$HOME/documents"
|
|
test "$XDG_DOWNLOAD_DIR" || export XDG_DOWNLOAD_DIR="$HOME/downloads"
|
|
|
|
export XDG_MUSIC_DIR="$HOME/media/audio/music"
|
|
export XDG_PICTURES_DIR="$HOME/pictures"
|
|
export XDG_VIDEOS_DIR="$HOME/videos"
|
|
|
|
## Non-Standard additions
|
|
# non-standard, is added to path to enable execution of any files herein
|
|
test "$XDG_PROJECTS_DIR" || export XDG_PROJECTS_DIR="$HOME/projects"
|
|
test "$XDG_BIN_HOME" || export XDG_BIN_HOME="$HOME/.local/bin"
|
|
# anything on BIN_HOME should be executable form anywhere
|
|
export PATH="$PATH:$XDG_BIN_HOME"
|
|
|
|
xdg_isThere() {
|
|
if [ -e "$1" ] || [ -h "$1" ]; then
|
|
true
|
|
else
|
|
false
|
|
fi
|
|
}
|
|
|
|
xdg_makeForUser() {
|
|
mkdir -p "$1"
|
|
chmod 0700 "$1"
|
|
}
|
|
|
|
## ensure directories exist
|
|
xdg_isThere "$XDG_BIN_HOME" || xdg_makeForUser "$XDG_BIN_HOME"
|
|
xdg_isThere "$XDG_CACHE_HOME" || xdg_makeForUser "$XDG_CACHE_HOME"
|
|
xdg_isThere "$XDG_CONFIG_HOME" || xdg_makeForUser "$XDG_CONFIG_HOME"
|
|
xdg_isThere "$XDG_DATA_HOME" || xdg_makeForUser "$XDG_DATA_HOME"
|
|
|
|
# create xdg-user-dirs if necessary
|
|
xdg_isThere "$XDG_DESKTOP_DIR" || xdg_makeForUser "$XDG_DESKTOP_DIR"
|
|
xdg_isThere "$XDG_DOCUMENTS_DIR" || xdg_makeForUser "$XDG_DOCUMENTS_DIR"
|
|
xdg_isThere "$XDG_DOWNLOAD_DIR" || xdg_makeForUser "$XDG_DOWNLOAD_DIR"
|
|
xdg_isThere "$XDG_MUSIC_DIR" || xdg_makeForUser "$XDG_MUSIC_DIR"
|
|
xdg_isThere "$XDG_PICTURES_DIR" || xdg_makeForUser "$XDG_PICTURES_DIR"
|
|
xdg_isThere "$XDG_VIDEOS_DIR" || xdg_makeForUser "$XDG_VIDEOS_DIR"
|
|
xdg_isThere "$XDG_PROJECTS_DIR" || xdg_makeForUser "$XDG_PROJECTS_DIR"
|
|
|
|
unset -f xdg_isThere xdg_makeForUser
|
|
|
|
## Applications that can be set through environment variables
|
|
export ANDROID_HOME="$XDG_DATA_HOME/android"
|
|
export ATOM_HOME="$XDG_DATA_HOME/atom"
|
|
export CARGO_HOME="$XDG_DATA_HOME/cargo"
|
|
export DOCKER_CONFIG="$XDG_CONFIG_HOME/docker"
|
|
export GEM_HOME="$XDG_DATA_HOME/gem"
|
|
export GEM_SPEC_CACHE="$XDG_CACHE_HOME/gem"
|
|
export GNUPGHOME="$XDG_DATA_HOME/gnupg"
|
|
export GRADLE_USER_HOME="$XDG_DATA_HOME/gradle"
|
|
export GRIPHOME="$XDG_CONFIG_HOME/grip"
|
|
export IMAPFILTER_HOME="$XDG_CONFIG_HOME/imapfilter"
|
|
export IPYTHONDIR="$XDG_CONFIG_HOME/ipython"
|
|
export KDEHOME="$XDG_CONFIG_HOME/kde"
|
|
export KODI_DATA="$XDG_DATA_HOME/kodi"
|
|
export LESSHISTFILE="XDG_STATE_HOME/lesshst"
|
|
export MPLAYER_HOME="$XDG_CONFIG_HOME/mplayer"
|
|
export NODE_REPL_HISTORY="$XDG_STATE_HOME/node_repl_history"
|
|
export NVM_DIR="$XDG_DATA_HOME/nvm"
|
|
if [ ! -e "$PYTHONSTARTUP" ]; then
|
|
mkdir -p "$XDG_CONFIG_HOME/python"
|
|
touch "$PYTHONSTARTUP"
|
|
fi
|
|
export PYTHONSTARTUP="$XDG_CONFIG_HOME/python/pythonrc"
|
|
export SQLITE_HISTORY="$XDG_STATE_HOME/sqlite_history"
|
|
export TEXMFVAR="$XDG_CACHE_HOME/texlive/texmf-var"
|
|
export TMUX_PLUGIN_MANAGER_PATH="$XDG_DATA_HOME/tmux"
|
|
export VAGRANT_HOME="$XDG_DATA_HOME/vagrant"
|
|
export WINEPREFIX="$XDG_DATA_HOME/wine"
|
|
export ZDOTDIR="$XDG_CONFIG_HOME/zsh"
|
|
export _JAVA_OPTIONS=-Djava.util.prefs.userRoot="$XDG_CONFIG_HOME"/java
|
|
|
|
alias yarn='yarn --use-yarnrc "$XDG_CONFIG_HOME/yarn/config"'
|
|
alias wget='wget --hsts-file="$XDG_STATE_HOME/wget-hsts"'
|