summaryrefslogtreecommitdiff
path: root/app-shells/bash/files
diff options
context:
space:
mode:
Diffstat (limited to 'app-shells/bash/files')
-rw-r--r--app-shells/bash/files/bashrc.d/10-gentoo-title.bash49
1 files changed, 29 insertions, 20 deletions
diff --git a/app-shells/bash/files/bashrc.d/10-gentoo-title.bash b/app-shells/bash/files/bashrc.d/10-gentoo-title.bash
index 1fbf17c26327..0246d4fa36f0 100644
--- a/app-shells/bash/files/bashrc.d/10-gentoo-title.bash
+++ b/app-shells/bash/files/bashrc.d/10-gentoo-title.bash
@@ -1,5 +1,31 @@
# /etc/bash/bashrc.d/10-gentoo-title.bash
+genfun_set_win_title() {
+ # Assigns the basename of the current working directory, having
+ # sanitised it with @Q parameter expansion. Useful for paths containing
+ # newlines and such. As a special case, names consisting entirely of
+ # graphemes shall not undergo the expansion, for reasons of cleanliness.
+ genfun_sanitise_cwd() {
+ _cwd=${PWD##*/}
+ if [[ ! ${_cwd} ]]; then
+ _cwd=${PWD}
+ elif [[ ${_cwd} == *[![:graph:]]* ]]; then
+ _cwd=${_cwd@Q}
+ fi
+ }
+
+ # Sets the window title with the Set Text Parameters sequence. For
+ # screen, the sequence defines the hardstatus (%h) and for tmux, the
+ # window_name (#W). For graphical terminal emulators, it is normal for
+ # the title bar be affected.
+ genfun_set_win_title() {
+ genfun_sanitise_cwd
+ printf '\033]2;%s@%s - %s\007' "${USER}" "${HOSTNAME%%.*}" "${_cwd}"
+ }
+
+ genfun_set_win_title
+}
+
# Set window title with the Title Definition String sequence. For screen, the
# sequence defines the window title (%t) and for tmux, the pane_title (#T).
# For tmux to be affected requires that its allow-rename option be enabled.
@@ -15,27 +41,14 @@ case ${TERM} in
# If the TTY is that of sshd(8) then proceed no further. Alas,
# there exist many operating environments in which the window
# title would otherwise not be restored upon ssh(1) exiting.
+ # Users wishing to coerce the historical behaviour have the
+ # option of setting PROMPT_COMMAND=(genfun_set_win_title).
if [[ ${SSH_TTY} && ${SSH_TTY} == "$(tty)" ]]; then
return
fi
esac
-# Assigns the basename of the current working directory, having sanitised it
-# with @Q parameter expansion. Useful for paths containing newlines and such.
-# As a special case, names consisting entirely of graphemes shall not undergo
-# the parameter expansion, for reasons of cleanliness.
-genfun_sanitise_cwd() {
- _cwd=${PWD##*/}
- if [[ ! ${_cwd} ]]; then
- _cwd=${PWD}
- elif [[ ${_cwd} == *[![:graph:]]* ]]; then
- _cwd=${_cwd@Q}
- fi
-}
-
-# Set window title with the Set Text Parameters sequence. For screen, the
-# sequence defines the hardstatus (%h) and for tmux, the window_name (#W).
-# For graphical terminal emulators, it is normal for the title bar be affected.
+# Determine whether the terminal can handle the Set Text Parameters sequence.
# The only terminals permitted here are those for which there is empirical
# evidence that the sequence is supported and that the UTF-8 character encoding
# is handled correctly. Quite rightly, this precludes many vintage terminals.
@@ -48,9 +61,5 @@ case ${TERM} in
st-256color |\
tmux* |\
xterm* )
- genfun_set_win_title() {
- genfun_sanitise_cwd
- printf '\033]2;%s@%s - %s\007' "${USER}" "${HOSTNAME%%.*}" "${_cwd}"
- }
PROMPT_COMMAND+=('genfun_set_win_title')
esac