Primeiro, um comentário: em zsh (e btw. também em bash & friends) você não pode usar argumentos em um alias. Use uma função:
# function hello() { echo $1 $3 }
# hello one two three
one three
Você altera o título na função chpwd() , que é chamada sempre que você altera o diretório. Então, você precisa usar cd . para atualizar seu título. Ou - seguindo sua abordagem -, sobrecarregue '' o comando ssh com esta função para executar chpwd() após o término da sessão ssh:
function ssh() { command ssh "$@"; chpwd }
Uma solução que eu prefiro é colocar o comando para alterar o título em precmd() , que é executado antes que o prompt seja exibido. Eu defino por exemplo no meu ~/.zshrc
precmd () {
[[ -t 1 ]] && print -Pn "\e]0;%n@%m:%~\a"
}
para obter um título como user@host:/current/dir , que é atualizado imediatamente ao se conectar a uma máquina remota (desde que haja um código semelhante em ~/.zshrc ) e ao retornar à sessão local.
(O [[ -t 1 ]] verifica se a sessão está conectada a um terminal - não é tão importante.)