Commit 6fc810e
Eric Bower
·
2026-08-11 12:27:34 -0400 EDT
parent 6e94820
fix: window title changes
1 files changed,
+26,
-25
+26,
-25
1@@ -76,41 +76,42 @@ PS1='${LOGNAME}@${HOSTNAME%%.*} '$PS1
2
3 # find escape sequence to change terminal window title
4 case "$TERM" in
5- (xterm|xterm[+-]*|gnome|gnome[+-]*|putty|putty[+-]*|cygwin)
6- _tsl='\033];' _fsl='\a' ;;
7+ (xterm*|gnome*|putty*|cygwin*|alacritty*|foot*|kitty*|wezterm*|ghostty*|rxvt*|st*|tmux*|screen*|rio*|contour*)
8+ _tsl='\033]0;' _fsl='\a' ;;
9 (*)
10 _tsl=$( (tput tsl 0; echo) 2>/dev/null |
11 sed -e 's/\\/\\\\/g' -e 's/%/%%/g')
12 _fsl=$( (tput fsl ; echo) 2>/dev/null |
13- sed -e 's/\\/\\\\/g' -e 's/%/%%/g') ;;
14+ sed -e 's/\\/\\\\/g' -e 's/%/%%/g')
15+ if [ -z "$_tsl" ] || [ -z "$_fsl" ]; then
16+ if [ "${TERM:-dumb}" != "dumb" ] && [ "${TERM:-dumb}" != "linux" ]; then
17+ _tsl='\033]0;' _fsl='\a'
18+ fi
19+ fi
20+ ;;
21 esac
22 # if terminal window title can be changed...
23 if [ "$_tsl" ] && [ "$_fsl" ]; then
24 # set terminal window title on each prompt
25- _set_term_title()
26- if [ -t 2 ]; then
27- printf "$_tsl"'%s@%s:%s'"$_fsl" "${LOGNAME}" "${HOSTNAME%%.*}" \
28- "${${PWD:/$HOME/\~}/#$HOME\//\~\/}" >&2
29- fi
30- PROMPT_COMMAND=("$PROMPT_COMMAND" '_set_term_title')
31-
32- # reset window title when changing host or user
33- ssh() {
34- if [ -t 2 ]; then printf "$_tsl"'ssh %s'"$_fsl" "$*" >&2; fi
35- command ssh "$@"
36+ _set_term_title() {
37+ if [ -t 2 ]; then
38+ printf "$_tsl"'%s@%s:%s'"$_fsl" "${LOGNAME}" "${HOSTNAME%%.*}" \
39+ "${${PWD:/$HOME/\~}/#$HOME\//\~\/}" >&2
40+ fi
41 }
42- su() {
43- if [ -t 2 ]; then printf "$_tsl"'su %s'"$_fsl" "$*" >&2; fi
44- command su "$@"
45- }
46- sudo() {
47- if [ -t 2 ]; then printf "$_tsl"'sudo %s'"$_fsl" "$*" >&2; fi
48- command sudo "$@"
49- }
50- doas() {
51- if [ -t 2 ]; then printf "$_tsl"'doas %s'"$_fsl" "$*" >&2; fi
52- command doas "$@"
53+ # set terminal window title when executing a command
54+ _set_cmd_title() {
55+ if [ -t 2 ] && [ -n "${COMMAND-}" ]; then
56+ local nl="
57+"
58+ local cmd="${COMMAND%%"$nl"*}"
59+ if [ -n "$cmd" ]; then
60+ printf "$_tsl"'%s'"$_fsl" "$cmd" >&2
61+ fi
62+ fi
63 }
64+ PROMPT_COMMAND=("$PROMPT_COMMAND" '_set_term_title')
65+ POST_PROMPT_COMMAND=("$POST_PROMPT_COMMAND" '_set_cmd_title')
66 fi
67
68 _osc7_cwd() {