Compare commits

..

2 commits

Author SHA1 Message Date
Danielle McLean
f06071e7c7
Drop fragile XDG_RUNTIME_DIR support
An XDG runtime directory cannot be provided reliably by the shell,
because it's supposed to have the same lifetime as the user's login
session, and the shell doesn't have a reliable way to keep track of that
lifetime. There are probably nonportable ways to get a conforming
directory, such as making a request to PAM, but PAM is supposed to set
XDG_RUNTIME_DIR itself anyway and also doesn't exist on Macs, which I
use most of the time.

My configuration isn't actually using XDG_RUNTIME_DIR anyway, so I don't
want to provide the misleading impression that a runtime directory with
proper behaviour conforming to the specification is definitely
available.
2021-09-22 10:27:09 +10:00
Danielle McLean
2018821e9f
Add support for XDG_STATE_HOME 2021-09-22 10:27:08 +10:00
2 changed files with 2 additions and 14 deletions

View file

@ -1,2 +0,0 @@
#! zsh
(( $SHLVL == 1 && $(w -h $LOGNAME | wc -l) == 1 )) && rm -rf $XDG_RUNTIME_DIR 2>/dev/null

14
zshenv
View file

@ -2,19 +2,9 @@
: ${XDG_CACHE_HOME:=~/.cache} : ${XDG_CACHE_HOME:=~/.cache}
: ${XDG_CONFIG_HOME:=~/.config} : ${XDG_CONFIG_HOME:=~/.config}
: ${XDG_DATA_HOME:=~/.local/share} : ${XDG_DATA_HOME:=~/.local/share}
: ${XDG_STATE_HOME:=~/.local/state}
# For XDG_RUNTIME_DIR, pick a temporary directory - the spec actually export XDG_CONFIG_HOME XDG_CACHE_HOME XDG_DATA_HOME XDG_STATE_HOME
# *requires* that it's destroyed when the user logs out, so that's handled by a
# file in zlogout. The reason for suffixing /xdg-$UID is that TMPDIR does not
# necessarily belong to the current user exclusively (although it does under
# MacOS and PAM). This is especially true if $TMPDIR isn't set at all and /tmp
# is used!
[[ -z $XDG_RUNTIME_DIR ]] && XDG_RUNTIME_DIR=${${TMPDIR-/tmp}%/}/xdg-$UID
if ! [[ -d $XDG_RUNTIME_DIR ]]; then
mkdir -p $XDG_RUNTIME_DIR
chmod 0700 $XDG_RUNTIME_DIR
fi
export XDG_CONFIG_HOME XDG_CACHE_HOME XDG_DATA_HOME XDG_RUNTIME_DIR
# The real zsh config lives in XDG_CONFIG_HOME! ;) # The real zsh config lives in XDG_CONFIG_HOME! ;)
: ${ZDOTDIR:=$XDG_CONFIG_HOME/zsh} : ${ZDOTDIR:=$XDG_CONFIG_HOME/zsh}