### 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 [[ XDG_CACHE_HOME = $_sev_tmp/.xdg.cache ]] && unset XDG_CACHE_DIR [[ XDG_RUNTIME_DIR = $TMPDIR/.xdg.runtime ]] && unset XDG_RUNTIME_DIR ## clean up any remaining sockets from gpg forwarding [[ -v _GNUPG_SOCK_DEST_BASE ]] && rm -f $_GNUPG_SOCK_DEST_BASE*(=N) ## manually reset terminal for interactive logout if [[ -o interactive ]] { # send xterm scrollback clear extension just in case: # - TERM may not be set correctly # - terminfo/termcap database entry for reset may be buggy echo -en '\e[3J' # use terminfo/termcap directly instead of relying on system clear/reset: # - often they are just wrappers for ncurses tput or other tools # - they may not even exist on lightweight systems # - provided scripts/binaries may be buggy or broken y=1 if [[ -v terminfo ]] { for x (rs1 rs2 rs3) { [[ -v terminfo[$x] ]] || continue echoti $x y=0 } } if { (( y )) && -v termcap ]] } { for x (rs r1 r2 r3) { [[ -v termcap[$x] ]] || continue echotc $x y=0 } } if (( y )) { # fallback, send ECMA-48 clear echo -en '\e[2J' } echo logout } ### load site-specific load-site-dotfile zlogout