diff --git a/lib/termsupport.zsh b/lib/termsupport.zsh index 7470110b6..6876b0845 100644 --- a/lib/termsupport.zsh +++ b/lib/termsupport.zsh @@ -2,12 +2,23 @@ #http://www.faqs.org/docs/Linux-mini/Xterm-Title.html#ss3.1 #Fully support screen, iterm, and probably most modern xterm and rxvt #Limited support for Apple Terminal (Terminal can't set window or tab separately) + +ZSH_SCREEN_PLUGIN_ACTIVE=false +for i in $plugins; do + if [[ "$i" == "screen" ]]; then + ZSH_SCREEN_PLUGIN_ACTIVE=true + fi +done + function title { if [[ "$DISABLE_AUTO_TITLE" == "true" ]] || [[ "$EMACS" == *term* ]]; then return fi if [[ "$TERM" == screen* ]]; then - print -Pn "\ek$1:q\e\\" #set screen hardstatus, usually truncated at 20 chars + # do not set the screen hardstatus, if screen plugin is active + if [[ "$ZSH_SCREEN_PLUGIN_ACTIVE" != "true" ]]; then + print -Pn "\ek$1:q\e\\" #set screen hardstatus, usually truncated at 20 chars + fi elif [[ "$TERM_PROGRAM" == "Apple_Terminal" ]]; then print -Pn "\e]1;$1:q\a" #set icon (=tab) name (will override window name on broken terminal) elif [[ "$TERM" == xterm* ]] || [[ $TERM == rxvt* ]] || [[ "$TERM_PROGRAM" == "iTerm.app" ]]; then diff --git a/plugins/screen/screen.plugin.zsh b/plugins/screen/screen.plugin.zsh index 0ca3e211e..ee746ddd7 100644 --- a/plugins/screen/screen.plugin.zsh +++ b/plugins/screen/screen.plugin.zsh @@ -31,10 +31,10 @@ if [[ "$TERM" == screen* ]]; then function screen_set() { # set the tab window title (%t) for screen - print -nR $'\033k'$1$'\033'\\\ + print -nR $'\033k'"$1"$'\033'\\\ # set hardstatus of tab window (%h) for screen - print -nR $'\033]0;'$2$'\a' + print -nR $'\033_'"$2"$'\033'\\\ } # called by zsh before executing a command function preexec() @@ -42,8 +42,8 @@ if [[ "$TERM" == screen* ]]; then local -a cmd; cmd=(${(z)3}) # the command string if [ "$TITLE" != "" ] then - eval "tab_title=$TITLE:$TAB_TITLE_EXEC" - eval "tab_hardstatus=$TITLE:$TAB_HARDSTATUS_EXEC" + eval "tab_title=\"$TITLE\":$TAB_TITLE_EXEC" + eval "tab_hardstatus=\"$TITLE\":$TAB_HARDSTATUS_EXEC" else eval "tab_title=$TAB_TITLE_PREFIX:$TAB_TITLE_EXEC" eval "tab_hardstatus=$TAB_HARDSTATUS_PREFIX:$TAB_HARDSTATUS_EXEC" @@ -55,8 +55,8 @@ if [[ "$TERM" == screen* ]]; then { if [ "$TITLE" != "" ] then - eval "tab_title=$TITLE:$TAB_TITLE_PROMPT" - eval "tab_hardstatus=$TITLE:$TAB_HARDSTATUS_PROMPT" + eval "tab_title=\"$TITLE\":$TAB_TITLE_PROMPT" + eval "tab_hardstatus=\"$TITLE\":$TAB_HARDSTATUS_PROMPT" else eval "tab_title=$TAB_TITLE_PREFIX:$TAB_TITLE_PROMPT" eval "tab_hardstatus=$TAB_HARDSTATUS_PREFIX:$TAB_HARDSTATUS_PROMPT"