mirror of https://github.com/akelge/zsh
SSH title support
This commit is contained in:
parent
1a4362c446
commit
ac211c4db0
|
@ -621,6 +621,51 @@ prompt_pure_reset_vim_prompt_widget() {
|
|||
}
|
||||
|
||||
prompt_pure_state_setup() {
|
||||
setopt localoptions noshwordsplit
|
||||
|
||||
# Check SSH_CONNECTION and the current state.
|
||||
local ssh_connection=${SSH_CONNECTION:-$PROMPT_PURE_SSH_CONNECTION}
|
||||
local username hostname
|
||||
|
||||
if [[ -z $ssh_connection ]] && (( $+commands[who] )); then
|
||||
# When changing user on a remote system, the $SSH_CONNECTION
|
||||
# environment variable can be lost. Attempt detection via `who`.
|
||||
local who_out
|
||||
who_out=$(who -m 2>/dev/null)
|
||||
if (( $? )); then
|
||||
# Who am I not supported, fallback to plain who.
|
||||
local -a who_in
|
||||
who_in=( ${(f)"$(who 2>/dev/null)"} )
|
||||
who_out="${(M)who_in:#*[[:space:]]${TTY#/dev/}[[:space:]]*}"
|
||||
fi
|
||||
|
||||
local reIPv6='(([0-9a-fA-F]+:)|:){2,}[0-9a-fA-F]+' # Simplified, only checks partial pattern.
|
||||
local reIPv4='([0-9]{1,3}\.){3}[0-9]+' # Simplified, allows invalid ranges.
|
||||
# Here we assume two non-consecutive periods represents a
|
||||
# hostname. This matches `foo.bar.baz`, but not `foo.bar`.
|
||||
local reHostname='([.][^. ]+){2}'
|
||||
|
||||
# Usually the remote address is surrounded by parenthesis, but
|
||||
# not on all systems (e.g. busybox).
|
||||
local -H MATCH MBEGIN MEND
|
||||
if [[ $who_out =~ "\(?($reIPv4|$reIPv6|$reHostname)\)?\$" ]]; then
|
||||
ssh_connection=$MATCH
|
||||
|
||||
# Export variable to allow detection propagation inside
|
||||
# shells spawned by this one (e.g. tmux does not always
|
||||
# inherit the same tty, which breaks detection).
|
||||
export PROMPT_PURE_SSH_CONNECTION=$ssh_connection
|
||||
fi
|
||||
unset MATCH MBEGIN MEND
|
||||
fi
|
||||
|
||||
hostname='%F{$prompt_pure_colors[host]}@%m%f'
|
||||
# Show `username@host` if logged in through SSH.
|
||||
[[ -n $ssh_connection ]] && username='%F{$prompt_pure_colors[user]}%n%f'"$hostname"
|
||||
|
||||
# # Show `username@host` if root, with username in default color.
|
||||
# [[ $UID -eq 0 ]] && username='%F{$prompt_pure_colors[user:root]}%n%f'"$hostname"
|
||||
|
||||
typeset -gA prompt_pure_state
|
||||
prompt_pure_state[version]="1.11.0"
|
||||
prompt_pure_state+=(
|
||||
|
|
Loading…
Reference in New Issue