mirror of
				https://github.com/ohmyzsh/ohmyzsh.git
				synced 2025-11-04 21:31:19 +08:00 
			
		
		
		
	lib/termsupport.zsh creates titles for screen which take precedence over titles set by the screen plugin. Unsetting the title() function within the screen plugin prevent this "race-condition".
		
			
				
	
	
		
			59 lines
		
	
	
		
			2.2 KiB
		
	
	
	
		
			Bash
		
	
	
	
	
	
			
		
		
	
	
			59 lines
		
	
	
		
			2.2 KiB
		
	
	
	
		
			Bash
		
	
	
	
	
	
# if using GNU screen, let the zsh tell screen what the title and hardstatus
 | 
						|
# of the tab window should be.
 | 
						|
if [[ "$TERM" == screen* ]]; then
 | 
						|
  # Unset title() function defined in lib/termsupport.zsh to prevent
 | 
						|
  # overwriting our screen titles
 | 
						|
  title(){}
 | 
						|
 | 
						|
  if [[ $_GET_PATH == '' ]]; then
 | 
						|
    _GET_PATH='echo $PWD | sed "s/^\/Users\//~/;s/^\/home\//~/;s/^~$USERNAME/~/"'
 | 
						|
  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
 |