61 lines
1.1 KiB
Bash
61 lines
1.1 KiB
Bash
|
#!/bin/zsh
|
||
|
|
||
|
setopt extended_glob
|
||
|
|
||
|
function print_title() {
|
||
|
if [ -n "$SSH_CONNECTION" ]; then
|
||
|
print -Pn "(%n@%m) "
|
||
|
fi
|
||
|
|
||
|
print -Pn "$*"
|
||
|
}
|
||
|
|
||
|
# Define a title function per terminal
|
||
|
case "$TERM" in
|
||
|
# GNU Screen:
|
||
|
( screen | screen.* | screen-* )
|
||
|
function title {
|
||
|
print -Pn "\ek"
|
||
|
print_title $*
|
||
|
print -Pn "\e\\"
|
||
|
print -Pn "\e]2;"
|
||
|
print_title $*
|
||
|
print -Pn "\a"
|
||
|
}
|
||
|
;;
|
||
|
|
||
|
# X terminals
|
||
|
( *xterm* | *rxvt )
|
||
|
function title {
|
||
|
print -Pn "\e]2;"
|
||
|
print_title $*
|
||
|
print -Pn "\a"
|
||
|
}
|
||
|
;;
|
||
|
* )
|
||
|
function title {
|
||
|
# Unknown terminal, do nothing.
|
||
|
}
|
||
|
esac
|
||
|
|
||
|
# Override precmd function to display status code if non-zero and update title
|
||
|
# with path, and hostname if remote
|
||
|
function precmd {
|
||
|
# Get return code and display it if non-zero
|
||
|
retcode=$?
|
||
|
if [ $retcode -ne 0 ]; then
|
||
|
# TODO check termcap to see if we can use color
|
||
|
print -P "\e[01;31m -- Non zero exit: $retcode --\e[0m"
|
||
|
fi
|
||
|
|
||
|
# Show the current directory in title.
|
||
|
title "%~"
|
||
|
}
|
||
|
|
||
|
function preexec () {
|
||
|
emulate -L zsh
|
||
|
local -a cmd; cmd=(${(z)1})
|
||
|
title $cmd[1]:t "$cmd[2,-1]"
|
||
|
}
|
||
|
|