-# gpg forward cleanup
-if [[ $SHLVL == 1 && $GNUPGHOME =~ '.ssh_forward/\d+$' ]] {
- x=$GNUPGHOME
- # reset GNUPGHOME
- [[ -o GLOB_ASSIGN ]]; y=$?
- setopt GLOB_ASSIGN
- GNUPGHOME=$GNUPGHOME/../..(:a)
- [[ $y != 0 ]] && unsetopt GLOB_ASSIGN
- # clean dir if it exists
- if [[ -d $x ]] {
- find $x -mindepth 1 -maxdepth 1 | while read -r y; do
- unlink $y
- done
- rmdir -p $x 2>/dev/null
- }
- # clean up any remaining sockets from gpg forwarding
- rm -f $_GNUPG_SOCK_DEST_BASE*(N=)
-}
-
-# remove xdg runtime
-rm -rf $XDG_RUNTIME_DIR 2>/dev/null
+### cleanup
+# XXX: since .zlogout isn't guaranteed to have been run in the same shell as
+# our .zprofile was (since we source it in .zshenv for SHLVL=1 among other
+# situations) we are not guaranteed to clean up our current session's tmp,
+# but it should be cleared out on next session launch
+_sev_zcleanup
+## unset vars that use our tmp since above will remove them
+unset XDG_CACHE_HOME XDG_RUNTIME_DIR
+## clean up any remaining sockets from gpg forwarding
+[[ -v _GNUPG_SOCK_DEST_BASE ]] && rm -f $_GNUPG_SOCK_DEST_BASE*(N=)