diff options
Diffstat (limited to '.config/login.d/02_tmpdir.sh')
-rw-r--r-- | .config/login.d/02_tmpdir.sh | 24 |
1 files changed, 21 insertions, 3 deletions
diff --git a/.config/login.d/02_tmpdir.sh b/.config/login.d/02_tmpdir.sh index d0079aa..293064e 100644 --- a/.config/login.d/02_tmpdir.sh +++ b/.config/login.d/02_tmpdir.sh @@ -1,3 +1,21 @@ -mkdir -p -- "$XDG_RUNTIME_DIR/tmpdir" -export TMPDIR="$XDG_RUNTIME_DIR/tmpdir" -ln -sfT -- "$TMPDIR" "$HOME/tmp" +if [[ ! -d "$HOME/tmp/$HOSTNAME" ]]; then + tmp="$(mktemp --tmpdir -d "$USER@$HOSTNAME-tmpdir.XXXXXXXXXXXXXXXXXXX")" + mkdir -p -- "$HOME/tmp" + ln -sf "$tmp" "$HOME/tmp/$HOSTNAME" + unset tmp +fi +export TMPDIR="$HOME/tmp/$HOSTNAME" +if type flock &>/dev/null; then + if [[ "$(readlink -f /dev/fd/7)" != "$(readlink -f "$TMPDIR/.uselock")" ]]; then + exec 7>"$TMPDIR/.uselock" + fi + if flock -sn 7; then + _logout_tmpdir_cleanup() { + if flock -xn 7; then + rm -rf -- "$(readlink -f "$TMPDIR")" + rm -- "$TMPDIR" + fi + } + trap _logout_tmpdir_cleanup EXIT + fi +fi |