diff options
Diffstat (limited to 'plugins/screen')
| -rw-r--r-- | plugins/screen/screen.plugin.zsh | 54 | 
1 files changed, 54 insertions, 0 deletions
| diff --git a/plugins/screen/screen.plugin.zsh b/plugins/screen/screen.plugin.zsh new file mode 100644 index 000000000..98178e807 --- /dev/null +++ b/plugins/screen/screen.plugin.zsh @@ -0,0 +1,54 @@ +# 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
\ No newline at end of file | 
