Use XDG base dir vars instead of defaults
This commit is contained in:
parent
1e53581d17
commit
8812ef8544
1
.gitignore
vendored
1
.gitignore
vendored
@ -1,3 +1,4 @@
|
|||||||
# Ignore all plugin files in subdirectories
|
# Ignore all plugin files in subdirectories
|
||||||
zsh-*/
|
zsh-*/
|
||||||
local
|
local
|
||||||
|
zsh*.local
|
||||||
|
@ -137,16 +137,22 @@ zmodload -F zsh/stat b:zstat
|
|||||||
|
|
||||||
# Check if the given file is authorized, if not prompt the user to authorize,
|
# Check if the given file is authorized, if not prompt the user to authorize,
|
||||||
# ignore, or view the file. Authorized files and their modified times are
|
# ignore, or view the file. Authorized files and their modified times are
|
||||||
# stored in the ~/.cache/autoenv/authorized file to make authorization
|
# stored in the $XDG_STATE_HOME/autoenv/authorized file to make authorization
|
||||||
# persistent.
|
# persistent.
|
||||||
_autoenv_authorized() {
|
_autoenv_authorized() {
|
||||||
local file=$1 yes=$2
|
local file=$1 yes=$2
|
||||||
# If autoenv cache directory does not exist, create it.
|
# If autoenv state directory does not exist, create it.
|
||||||
! [ -d ~/.cache/autoenv ] && mkdir -p ~/.cache/autoenv
|
! [ -d ${XDG_STATE_HOME:-$HOME/.local/state}/autoenv ] && \
|
||||||
|
mkdir -p ${XDG_STATE_HOME:-$HOME/.local/state}/autoenv
|
||||||
|
# Migrate from cache to state directory
|
||||||
|
[ -f $HOME/.cache/autoenv/authorized ] && \
|
||||||
|
mv $HOME/.cache/autoenv/authorized \
|
||||||
|
${XDG_STATE_HOME:-$HOME/.local/state}/autoenv/authorized
|
||||||
# If the authorized file does not exist, create it.
|
# If the authorized file does not exist, create it.
|
||||||
! [ -f ~/.cache/autoenv/authorized ] && touch ~/.cache/autoenv/authorized
|
! [ -f ${XDG_STATE_HOME:-$HOME/.local/state}/autoenv/authorized ] && \
|
||||||
|
touch ${XDG_STATE_HOME:-$HOME/.local/state}/autoenv/authorized
|
||||||
# Load the authorized file into a map of authorized key value pairs.
|
# Load the authorized file into a map of authorized key value pairs.
|
||||||
typeset -A authorized=(`cat ~/.cache/autoenv/authorized`)
|
typeset -A authorized=(`cat ${XDG_STATE_HOME:-$HOME/.local/state}/autoenv/authorized`)
|
||||||
# If the file has been removed, return.
|
# If the file has been removed, return.
|
||||||
! [ -f $file ] && return 1
|
! [ -f $file ] && return 1
|
||||||
# If the given file has been authorized, i.e. the modified time matches that
|
# If the given file has been authorized, i.e. the modified time matches that
|
||||||
@ -168,7 +174,7 @@ _autoenv_authorized() {
|
|||||||
# Add file to the authorized map.
|
# Add file to the authorized map.
|
||||||
authorized[$file]=$modified_time
|
authorized[$file]=$modified_time
|
||||||
# Store authorized map in authorized file.
|
# Store authorized map in authorized file.
|
||||||
echo ${(kv)authorized} > ~/.cache/autoenv/authorized
|
echo ${(kv)authorized} > ${XDG_STATE_HOME:-$HOME/.local/state}/autoenv/authorized
|
||||||
}
|
}
|
||||||
|
|
||||||
# Source an enter script and add its directory to the global entered
|
# Source an enter script and add its directory to the global entered
|
||||||
|
@ -56,7 +56,8 @@ prompt_fresh_setup() {
|
|||||||
}
|
}
|
||||||
|
|
||||||
prompt_cleanup() {
|
prompt_cleanup() {
|
||||||
[ -f ~/.cache/zsh/git-prompt ] && rm ~/.cache/zsh/git-prompt
|
[ -f ${XDG_CACHE_HOME:-$HOME/.cache}/zsh/git-prompt ] && \
|
||||||
|
rm ${XDG_CACHE_HOME:-$HOME/.cache}/zsh/git-prompt
|
||||||
}
|
}
|
||||||
|
|
||||||
fresh_line_one() {
|
fresh_line_one() {
|
||||||
@ -76,7 +77,7 @@ fresh_line_one() {
|
|||||||
local directory="%{%F{37}%}%~%{%f%}"
|
local directory="%{%F{37}%}%~%{%f%}"
|
||||||
|
|
||||||
# Check we are in a git repository
|
# Check we are in a git repository
|
||||||
local git=`~/.cache/zsh/git-prompt`
|
local git=`${XDG_CACHE_HOME:-$HOME/.cache}/zsh/git-prompt`
|
||||||
|
|
||||||
# If the last command failed, display its error code at the right
|
# If the last command failed, display its error code at the right
|
||||||
if [[ $exit_code -ne 0 ]]; then
|
if [[ $exit_code -ne 0 ]]; then
|
||||||
@ -178,10 +179,12 @@ fresh_almostontop_preexec() {
|
|||||||
fresh_compile_git_prompt() {
|
fresh_compile_git_prompt() {
|
||||||
# Compile a simple C program which parses the output of `git status
|
# Compile a simple C program which parses the output of `git status
|
||||||
# --procelain` to greatly decrease the time taken to draw the prompt
|
# --procelain` to greatly decrease the time taken to draw the prompt
|
||||||
[ ! -d ~/.cache/zsh ] && mkdir -p ~/.cache/zsh
|
[ ! -d ${XDG_CACHE_HOME:-$HOME/.cache}/zsh ] && \
|
||||||
if [ ! -f ~/.cache/zsh/git-prompt ]; then
|
mkdir -p ${XDG_CACHE_HOME:-$HOME/.cache}/zsh
|
||||||
|
if [ ! -f ${XDG_CACHE_HOME:-$HOME/.cache}/zsh/git-prompt ]; then
|
||||||
cc -std=gnu99 -O3 -DNDEBUG -Wno-unused-result \
|
cc -std=gnu99 -O3 -DNDEBUG -Wno-unused-result \
|
||||||
~/.config/zsh/git-prompt.c -o ~/.cache/zsh/git-prompt
|
${XDG_CONFIG_HOME:-$HOME/.config}/zsh/git-prompt.c \
|
||||||
|
-o ${XDG_CACHE_HOME:-$HOME/.cache}/zsh/git-prompt
|
||||||
if [ $? -ne 0 ]; then
|
if [ $? -ne 0 ]; then
|
||||||
echo "git-prompt was not compiled, is a C99 toolchain installed?"
|
echo "git-prompt was not compiled, is a C99 toolchain installed?"
|
||||||
fi
|
fi
|
||||||
|
42
zshenv
42
zshenv
@ -2,12 +2,24 @@
|
|||||||
# contain commands that produce output or assume the shell is attached to a
|
# contain commands that produce output or assume the shell is attached to a
|
||||||
# tty. This file will always be sourced.
|
# tty. This file will always be sourced.
|
||||||
|
|
||||||
|
[ -f ~/.config/zsh/zshenv.local ] && source ~/.config/zsh/zshenv.local
|
||||||
|
|
||||||
|
# Ensure cache and state directories exist
|
||||||
|
[ ! -d -${XDG_CACHE_HOME:-$HOME/.cache}/zsh ] && \
|
||||||
|
mkdir -p ${XDG_CACHE_HOME:-$HOME/.cache}/zsh
|
||||||
|
[ ! -d -${XDG_STATE_HOME:-$HOME/.local/state}/zsh ] && \
|
||||||
|
mkdir -p ${XDG_STATE_HOME:-$HOME/.local/state}/zsh
|
||||||
|
|
||||||
# Enable saving command history to file
|
# Enable saving command history to file
|
||||||
[ ! -d $HOME/.cache/zsh ] && mkdir -p $HOME/.cache/zsh
|
HISTFILE=${XDG_STATE_HOME:-$HOME/.local/state}/zsh/histfile
|
||||||
HISTFILE=$HOME/.cache/zsh/histfile
|
|
||||||
HISTSIZE=20000
|
HISTSIZE=20000
|
||||||
SAVEHIST=20000
|
SAVEHIST=20000
|
||||||
|
|
||||||
|
# Migrate histfile from cache to state directory
|
||||||
|
[ -f $HOME/.cache/zsh/histfile ] && \
|
||||||
|
mv $HOME/.cache/zsh/histfile \
|
||||||
|
${XDG_STATE_HOME:-$HOME/.local/state}/zsh/histfile
|
||||||
|
|
||||||
# Remove vi mode switch delay
|
# Remove vi mode switch delay
|
||||||
KEYTIMEOUT=1
|
KEYTIMEOUT=1
|
||||||
|
|
||||||
@ -40,8 +52,8 @@ elif [ -f /usr/bin/ccache ]; then
|
|||||||
PATH=/usr/lib/ccache:$PATH
|
PATH=/usr/lib/ccache:$PATH
|
||||||
fi
|
fi
|
||||||
fi
|
fi
|
||||||
export CCACHE_CONFIGPATH=$HOME/.config/ccache
|
export CCACHE_CONFIGPATH=${XDG_CONFIG_HOME:-$HOME/.config}/ccache
|
||||||
export CCACHE_DIR=$HOME/.cache/ccache
|
export CCACHE_DIR=${XDG_CACHE_HOME:-$HOME/.cache}/ccache
|
||||||
|
|
||||||
# Add default CMake generator
|
# Add default CMake generator
|
||||||
command -v ninja &> /dev/null && \
|
command -v ninja &> /dev/null && \
|
||||||
@ -103,27 +115,27 @@ command -v pinentry-curses &> /dev/null && \
|
|||||||
export LPASS_PINENTRY=pinentry-curses
|
export LPASS_PINENTRY=pinentry-curses
|
||||||
|
|
||||||
# Teach these some XDG Base Directory Spec manners
|
# Teach these some XDG Base Directory Spec manners
|
||||||
export IPYTHONDIR=$HOME/.config/ipython
|
export IPYTHONDIR=${XDG_CONFIG_HOME:-$HOME/.config}/ipython
|
||||||
command -v cargo &> /dev/null && \
|
command -v cargo &> /dev/null && \
|
||||||
export CARGO_HOME=$HOME/.local/share/cargo
|
export CARGO_HOME=$HOME/.local/share/cargo
|
||||||
if command -v ccache &> /dev/null; then
|
if command -v ccache &> /dev/null; then
|
||||||
export CCACHE_CONFIGPATH=$HOME/.config/ccache.conf
|
export CCACHE_CONFIGPATH=${XDG_CONFIG_HOME:-$HOME/.config}/ccache.conf
|
||||||
export CCACHE_DIR=$HOME/.cache/ccache
|
export CCACHE_DIR=${XDG_CACHE_HOME:-$HOME/.cache}/ccache
|
||||||
fi
|
fi
|
||||||
command -v conan &> /dev/null && \
|
command -v conan &> /dev/null && \
|
||||||
export CONAN_USER_HOME=$HOME/.local/share/conan
|
export CONAN_USER_HOME=$HOME/.local/share/conan
|
||||||
command -v docker &> /dev/null && \
|
command -v docker &> /dev/null && \
|
||||||
export DOCKER_CONFIG=$HOME/.local/share/docker
|
export DOCKER_CONFIG=$HOME/.local/share/docker
|
||||||
export GTK_RC_FILES=$HOME/.config/gtk/gtkrc
|
export GTK_RC_FILES=${XDG_CONFIG_HOME:-$HOME/.config}/gtk/gtkrc
|
||||||
export GTK2_RC_FILES=$HOME/.config/gtk-2.0/gtkrc
|
export GTK2_RC_FILES=${XDG_CONFIG_HOME:-$HOME/.config}/gtk-2.0/gtkrc
|
||||||
export PYLINTHOME=$HOME/.cache/pylint
|
export PYLINTHOME=${XDG_CACHE_HOME:-$HOME/.cache}/pylint
|
||||||
command -v rustup &> /dev/null && \
|
command -v rustup &> /dev/null && \
|
||||||
export RUSTUP_HOME=$HOME/.local/share/rustup
|
export RUSTUP_HOME=$HOME/.local/share/rustup
|
||||||
[ -f $HOME/.config/wget/rc ] && \
|
[ -f ${XDG_CONFIG_HOME:-$HOME/.config}/wget/rc ] && \
|
||||||
export WGETRC=$HOME/.config/wget/rc
|
export WGETRC=${XDG_CONFIG_HOME:-$HOME/.config}/wget/rc
|
||||||
# TODO: terminfo
|
# TODO: terminfo
|
||||||
export GOBIN=$HOME/.local/bin
|
export GOBIN=$HOME/.local/bin
|
||||||
export GOPATH=$HOME/.local/share/go
|
export GOPATH=$HOME/.local/share/go
|
||||||
export GOCACHE=$HOME/.cache/go/build
|
export GOCACHE=${XDG_CACHE_HOME:-$HOME/.cache}/go/build
|
||||||
export GOMODCACHE=$HOME/.cache/go/pkg/mod
|
export GOMODCACHE=${XDG_CACHE_HOME:-$HOME/.cache}/go/pkg/mod
|
||||||
export GOTMPDIR=$HOME/.cache/go/tmp
|
export GOTMPDIR=${XDG_CACHE_HOME:-$HOME/.cache}/go/tmp
|
||||||
|
21
zshrc
21
zshrc
@ -3,8 +3,8 @@
|
|||||||
|
|
||||||
# Load plugin scripts
|
# Load plugin scripts
|
||||||
source-plugin() {
|
source-plugin() {
|
||||||
local shared_plugin=~/.local/share/zsh/plugins/$1/$1.plugin.zsh
|
local shared_plugin=${XDG_DATA_HOME:-$HOME/.local/share}/zsh/plugins/$1/$1.plugin.zsh
|
||||||
local local_plugin=~/.config/zsh/$1/$1.plugin.zsh
|
local local_plugin=${XDG_CONFIG_HOME:-$HOME/.config}/zsh/$1/$1.plugin.zsh
|
||||||
if [ -f $shared_plugin ]; then
|
if [ -f $shared_plugin ]; then
|
||||||
source $shared_plugin
|
source $shared_plugin
|
||||||
elif [ -f $local_plugin ]; then
|
elif [ -f $local_plugin ]; then
|
||||||
@ -76,7 +76,7 @@ setopt completeinword
|
|||||||
|
|
||||||
# Initialize completions
|
# Initialize completions
|
||||||
autoload -U compinit
|
autoload -U compinit
|
||||||
compinit -d ~/.cache/zsh/compdump
|
compinit -d ${XDG_CACHE_HOME:-$HOME/.cache}/zsh/compdump
|
||||||
|
|
||||||
# Add pip to the old completion engine if present
|
# Add pip to the old completion engine if present
|
||||||
if command -v pip &> /dev/null; then
|
if command -v pip &> /dev/null; then
|
||||||
@ -192,14 +192,19 @@ frequent-directory Documents "$HOME/Documents"
|
|||||||
frequent-directory Downloads "$HOME/Downloads"
|
frequent-directory Downloads "$HOME/Downloads"
|
||||||
frequent-directory Projects "$HOME/Projects"
|
frequent-directory Projects "$HOME/Projects"
|
||||||
frequent-directory Sandbox "$HOME/Sandbox"
|
frequent-directory Sandbox "$HOME/Sandbox"
|
||||||
frequent-directory cache "$HOME/.cache"
|
frequent-directory cache "${XDG_CACHE_HOME:-$HOME/.cache}"
|
||||||
frequent-directory config "$HOME/.config"
|
frequent-directory config "${XDG_CONFIG_HOME:-$HOME/.config}"
|
||||||
frequent-directory local "$HOME/.local"
|
frequent-directory local "$HOME/.local"
|
||||||
|
|
||||||
# Load work related config
|
# Load work related config
|
||||||
[ -f ~/.config/work/zshrc ] && source ~/.config/work/zshrc
|
[ -f ${XDG_CONFIG_HOME:-$HOME/.config}/work/zshrc ] && \
|
||||||
[ -f ~/.config/private/zshrc ] && source ~/.config/private/zshrc
|
source ${XDG_CONFIG_HOME:-$HOME/.config}/work/zshrc
|
||||||
[ -f ~/.config/zsh/local ] && source ~/.config/zsh/local
|
[ -f ${XDG_CONFIG_HOME:-$HOME/.config}/private/zshrc ] && \
|
||||||
|
source ${XDG_CONFIG_HOME:-$HOME/.config}/private/zshrc
|
||||||
|
[ -f ${XDG_CONFIG_HOME:-$HOME/.config}/zsh/local ] && \
|
||||||
|
source ${XDG_CONFIG_HOME:-$HOME/.config}/zsh/local
|
||||||
|
[ -f ${XDG_CONFIG_HOME:-$HOME/.config}/zsh/zshrc.local ] && \
|
||||||
|
source ${XDG_CONFIG_HOME:-$HOME/.config}/zsh/zshrc.local
|
||||||
|
|
||||||
# Aliases
|
# Aliases
|
||||||
alias grep='grep --color=always'
|
alias grep='grep --color=always'
|
||||||
|
Loading…
x
Reference in New Issue
Block a user