Set compromise XDG_RUNTIME_DIR if necessary
It's not ideal to set XDG_RUNTIME_DIR in your shell environment, rather than from your session manager (or systemd, or whatever), since then you can't reliably provide the same lifetime guarantees that XDG_RUNTIME_DIR is supposed to have? But this is still preferable to not having an XDG_RUNTIME_DIR at all, so I'm gonna go with it.
This commit is contained in:
parent
f00062ec1b
commit
690df57f00
1 changed files with 20 additions and 0 deletions
20
zshenv
20
zshenv
|
@ -6,6 +6,26 @@
|
|||
|
||||
export XDG_CONFIG_HOME XDG_CACHE_HOME XDG_DATA_HOME XDG_STATE_HOME
|
||||
|
||||
# The other four XDG directories are very easy, but XDG_RUNTIME_DIR is
|
||||
# complicated. It kinda needs to be managed by a systemwide supervisor, like
|
||||
# systemd, in order to meet all of the XDG Base Directory specification's
|
||||
# requirements? In particular, the directory is supposed to come into being
|
||||
# when you log in, live as long as you have any active sessions, and be
|
||||
# destroyed when you log out - none of this can easily be done from the shell
|
||||
# environment alone, especially on an operating system like macOS where your
|
||||
# graphical session wasn't spawned from a shell using something like .xinitrc.
|
||||
#
|
||||
# We're going to assume XDG_RUNTIME_DIR will have already be set by a
|
||||
# systemwide supervisor if it can possibly have been. If it hasn't - say,
|
||||
# because we're on macOS - we'll compromise by using TMPDIR. Since TMPDIR has
|
||||
# a different lifetime than XDG_RUNTIME_DIR is supposed to, this is an
|
||||
# imperfect solution, but it's the best we can do.
|
||||
if [[ ! -d $XDG_RUNTIME_DIR ]] && [[ -d $TMPDIR ]]; then
|
||||
export XDG_RUNTIME_DIR=${TMPDIR}xdg-$UID
|
||||
mkdir -p $XDG_RUNTIME_DIR
|
||||
chmod 0700 $XDG_RUNTIME_DIR
|
||||
fi
|
||||
|
||||
# The real zsh config lives in XDG_CONFIG_HOME! ;)
|
||||
: ${ZDOTDIR:=$XDG_CONFIG_HOME/zsh}
|
||||
source $ZDOTDIR/zshenv
|
||||
|
|
Loading…
Reference in a new issue