summaryrefslogtreecommitdiff
path: root/zsh/title.zsh
blob: 911d53a88863326b81c605571a70396e4c6b8d54 (plain) (blame)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
function title {
	emulate -L zsh
	setopt prompt_subst

	[[ "$EMACS" == *term* ]] && return

	# if $2 is unset use $1 as default
	# if it is set and empty, leave it as is
	: ${2=$1}

	case "$TERM" in
	 xterm*|putty*|rxvt*|konsole*|ansi|mlterm*|alacritty|kitty|wezterm|st*)
		 print -Pn "\e]2;${2:q}\a" # set window name
		 print -Pn "\e]1;${1:q}\a" # set tab name
		 ;;
	 screen*|tmux*)
		 print -Pn "\ek${1:q}\e\\" # set screen hardstatus
		 ;;
	 *)
	 # Try to use terminfo to set the title
	 # If the feature is available set title
	 if [[ -n "$terminfo[fsl]" ]] && [[ -n "$terminfo[tsl]" ]]; then
		 echoti tsl
		 print -Pn "$1"
		 echoti fsl
	 fi
		 ;;
	esac
}