From 91da2fc58383f5be52029ff5b117828eaf764a2a Mon Sep 17 00:00:00 2001 From: Eryn Wells Date: Sun, 18 Jan 2026 08:40:01 -0700 Subject: [PATCH] [zsh] A new env init function to set XDG path variables --- zsh/func/init-env-default-xdg-vars | 34 ++++++++++++++++++++++++++++++ zshenv | 1 + 2 files changed, 35 insertions(+) create mode 100644 zsh/func/init-env-default-xdg-vars diff --git a/zsh/func/init-env-default-xdg-vars b/zsh/func/init-env-default-xdg-vars new file mode 100644 index 0000000..ed5bb66 --- /dev/null +++ b/zsh/func/init-env-default-xdg-vars @@ -0,0 +1,34 @@ +#!/usr/bin/env zsh +# Eryn Wells + +# 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 + + 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} + + 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 "$@" diff --git a/zshenv b/zshenv index 5d6c1cb..bea316a 100644 --- a/zshenv +++ b/zshenv @@ -46,6 +46,7 @@ autoload -Uz do_init_functions typeset -a zsh_init_env_functions=( \ init-env \ + init-env-default-xdg-vars \ init-env-path \ init-env-tilde-paths \ init-env-python \