+# NOTE: for the cleanups below, even if our shell is not the one that spawned
+# the directory, SHLVL == 1 means that it should be safe to clean it up.
+# since .zlogout isn't guaranteed to have been run in the same shell as
+# our .zprofile was (since we source it in .zshenv) it has to be done
+# like this.
+
+### 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 tmp runtime if our shell spawned it
+if [[ $SHLVL == 1 && $TMPDIR =~ '/.session.\d+/*$' ]] {
+ rm -rf $TMPDIR 2>/dev/null
+}
+
+if [[ -o interactive ]] {
+ echo logout
+ clear
+}