50 lines
1.4 KiB
Bash
50 lines
1.4 KiB
Bash
#!/bin/bash
|
|
|
|
# Function to update terminal/tmux title
|
|
_update_terminal_title() {
|
|
local kubecontext dir gitrepo gitremote icon title
|
|
|
|
# Detect Kubernetes context (if kubectl is available)
|
|
if [ -n "${KUBECONFIG}" ]; then
|
|
if command -v kubectl >/dev/null 2>&1; then
|
|
kubecontext=$(kubectl config current-context 2>/dev/null)
|
|
if [ -n "$kubecontext" ]; then
|
|
title=" ${kubecontext}"
|
|
fi
|
|
fi
|
|
fi
|
|
|
|
# If no title is already set, check if we're in $HOME
|
|
if [ -z "${title}" ] && [ "$PWD" = "$HOME" ]; then
|
|
title=" ~"
|
|
fi
|
|
|
|
# If we're in a git repo display repo name with a nice icon
|
|
if [ -z "${title}" ] && gitrepo=$(git rev-parse --show-toplevel 2>/dev/null); then
|
|
dir=$(basename "${gitrepo}")
|
|
|
|
# Detect host from remote URL
|
|
gitremote=$(git remote get-url origin 2>/dev/null)
|
|
case "${gitremote}" in
|
|
*github.com*) icon="" ;; # nf-fa-github
|
|
*gitlab.com*) icon="" ;; # nf-fa-gitlab
|
|
*gitea*) icon="" ;; # nf-linux-gitea
|
|
*) icon="" ;; # nf-dev-git
|
|
esac
|
|
|
|
title="${icon} ${dir}"
|
|
fi
|
|
|
|
# Set the title in tmux or terminal window
|
|
if [ -n "${title}" ]; then
|
|
if [ -n "$TMUX" ]; then
|
|
tmux rename-window "${title}"
|
|
else
|
|
printf '\033]0;%s\007' "${title}"
|
|
fi
|
|
fi
|
|
}
|
|
|
|
# Add the function to the PROMPT_COMMAND variable to have regular updates
|
|
if [ "$TERM" != "linux" ]; then _prompt_command_add "_update_terminal_title"; fi
|