]> git.sev.monster Git - dotfiles.git/blobdiff - etc/zsh/.zlogout
zsh: fix PINENTRY_USER_DATA
[dotfiles.git] / etc / zsh / .zlogout
index cac79397d22d14ad8c98a93a0b64c4d5e008f91e..c91a070ef057ef8906945d1fa4f5c8210dba9c00 100644 (file)
@@ -1,19 +1,39 @@
 ### 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
-    clear
 }
 
 ### load site-specific
-if [[ -f ${ZDOTDIR:-~}/.zlogout.local ]] { source ${ZDOTDIR:-~}/.zlogout.local }
+load-site-dotfile zlogout
This page took 0.044008 seconds and 4 git commands to generate.