# if using GNU screen, let the zsh tell screen what the title and hardstatus # of the tab window should be. if [[ "$TERM" == screen* ]]; then if [[ $_GET_PATH == '' ]]; then _GET_PATH='echo $PWD | sed "s/^\/Users\//~/;s/^\/home\//~/;s/^~$USER/~/"' fi if [[ $_GET_HOST == '' ]]; then _GET_HOST='echo $HOST | sed "s/\..*//"' fi # use the current user as the prefix of the current tab title TAB_TITLE_PREFIX='"`'$_GET_HOST'`:`'$_GET_PATH' | sed "s:..*/::"`$PROMPT_CHAR"' # when at the shell prompt, show a truncated version of the current path (with # standard ~ replacement) as the rest of the title. TAB_TITLE_PROMPT='$SHELL:t' # when running a command, show the title of the command as the rest of the # title (truncate to drop the path to the command) TAB_TITLE_EXEC='$cmd[1]:t' # use the current path (with standard ~ replacement) in square brackets as the # prefix of the tab window hardstatus. TAB_HARDSTATUS_PREFIX='"[`'$_GET_PATH'`] "' # when at the shell prompt, use the shell name (truncated to remove the path to # the shell) as the rest of the title TAB_HARDSTATUS_PROMPT='$SHELL:t' # when running a command, show the command name and arguments as the rest of # the title TAB_HARDSTATUS_EXEC='$cmd' # tell GNU screen what the tab window title ($1) and the hardstatus($2) should be function screen_set() { # set the tab window title (%t) for screen print -nR $'\033k'$1$'\033'\\\ # set hardstatus of tab window (%h) for screen print -nR $'\033]0;'$2$'\a' } # called by zsh before executing a command function preexec() { local -a cmd; cmd=(${(z)1}) # the command string eval "tab_title=$TAB_TITLE_PREFIX:$TAB_TITLE_EXEC" eval "tab_hardstatus=$TAB_HARDSTATUS_PREFIX:$TAB_HARDSTATUS_EXEC" screen_set $tab_title $tab_hardstatus } # called by zsh before showing the prompt function precmd() { eval "tab_title=$TAB_TITLE_PREFIX:$TAB_TITLE_PROMPT" eval "tab_hardstatus=$TAB_HARDSTATUS_PREFIX:$TAB_HARDSTATUS_PROMPT" screen_set $tab_title $tab_hardstatus } fi function screen_prompt_info() { r="" # I'm not thrilled about this method of testing if [ x"$TERM" = x"screen" ] ;then if [ x"$STY" != x"" ] ; then r="$STY" fi fi if [ x"$r" = x"" ] ; then echo "" else pre=$1 post=$2 echo "$pre$r$post" fi }