296 lines
7.6 KiB
Text
296 lines
7.6 KiB
Text
|
|
_lp_liquidship_theme_activate() {
|
|
local lp_terminal_format
|
|
local lp_terminal_format af_color='' ab_color=''
|
|
|
|
__lp_foreground_color 6
|
|
local CYAN="${_LP_OPEN_ESC}${af_color}${_LP_CLOSE_ESC}"
|
|
local BOLD_CYAN="${_LP_OPEN_ESC}${_LP_TI_BOLD-}${af_color}${_LP_CLOSE_ESC}"
|
|
|
|
__lp_foreground_color 11
|
|
local YELLOW="${_LP_OPEN_ESC}${af_color}${_LP_CLOSE_ESC}"
|
|
|
|
__lp_foreground_color 9
|
|
local RED="${_LP_OPEN_ESC}${af_color}${_LP_CLOSE_ESC}"
|
|
|
|
NO_COL="${_LP_OPEN_ESC}${_LP_TI_RESET-}${_LP_CLOSE_ESC}"
|
|
|
|
# Liquid Prompt reconfig
|
|
LP_MARK_SHLVL="↕️ "
|
|
LP_MARK_KUBECONTEXT="☸ "
|
|
LP_MARK_PERM=""
|
|
LP_COLOR_NOWRITE="${RED}🔒"
|
|
lp_terminal_format 105 -1 1 0 15 -1
|
|
# LP_MARK_TERRAFORM="💠" # TODO in LP
|
|
LP_MARK_ADAPTER=" "
|
|
LP_MARK_BATTERY=" "
|
|
|
|
LP_COLOR_PATH="$CYAN" # Starship use bold cyan, but that hides LP's hint on directories.
|
|
LP_COLOR_PATH_LAST_DIR="$BOLD_CYAN"
|
|
LP_COLOR_PATH_SEPARATOR="$CYAN"
|
|
LP_COLOR_PATH_SHORTENED="$BOLD_CYAN"
|
|
LP_COLOR_PATH_VCS_ROOT="$BOLD_CYAN"
|
|
LP_COLOR_MARK_SUDO="$YELLOW"
|
|
|
|
# Starship Config
|
|
LP_LIQUIDSHIP_MARK_SSH="🌐"
|
|
LP_LIQUIDSHIP_MARK_SUDO="!"
|
|
LP_LIQUIDSHIP_MARK_MUX="🖽 "
|
|
|
|
_lp_user
|
|
local -i user_type="$?"
|
|
|
|
if (( user_type < 2 )); then # if user is not root
|
|
if (( LP_ENABLE_SUDO )); then
|
|
LP_COLOR_MARK_NO_SUDO="$LP_COLOR_MARK"
|
|
fi
|
|
else # root!
|
|
if (( ! LP_ENABLE_VCS_ROOT )); then
|
|
LP_MARK_DISABLED="$LP_MARK_DEFAULT"
|
|
fi
|
|
fi
|
|
|
|
# The user or connection type is not expected to change from inside the
|
|
# shell, so we build this just once.
|
|
if _lp_username_color; then
|
|
LP_USER="$lp_username_color"
|
|
else
|
|
LP_USER=
|
|
fi
|
|
|
|
_lp_liquidship_hostname_color
|
|
LP_HOST="$lp_hostname_color "
|
|
|
|
# If we are running in a terminal multiplexer, brackets are colored
|
|
if _lp_multiplexer; then
|
|
LP_LIQUIDSHIP_MUX="in ${LP_COLOR_IN_MULTIPLEXER}${LP_LIQUIDSHIP_MARK_MUX}${NO_COL} "
|
|
else
|
|
LP_LIQUIDSHIP_MUX=
|
|
fi
|
|
|
|
_lp_terminal_device
|
|
# shellcheck disable=SC2034
|
|
LP_TTYN=$lp_terminal_device
|
|
}
|
|
|
|
_lp_liquidship_theme_directory() {
|
|
_lp_default_theme_directory
|
|
}
|
|
|
|
_lp_liquidship_theme_prompt() {
|
|
_lp_liquidship_theme_prompt_data
|
|
_lp_liquidship_theme_prompt_template
|
|
}
|
|
|
|
_lp_liquidship_theme_prompt_data() {
|
|
# left of main prompt: space at right
|
|
if _lp_jobcount_color; then
|
|
LP_JOBS="$lp_jobcount_color "
|
|
else
|
|
LP_JOBS=
|
|
fi
|
|
if _lp_temperature_color; then
|
|
LP_TEMP="$lp_temperature_color "
|
|
else
|
|
LP_TEMP=
|
|
fi
|
|
if _lp_load_color; then
|
|
LP_LOAD="$lp_load_color "
|
|
else
|
|
LP_LOAD=
|
|
fi
|
|
if _lp_battery_color; then
|
|
LP_BATT="$lp_battery_color "
|
|
else
|
|
LP_BATT=
|
|
fi
|
|
if _lp_wifi_signal_strength_color; then
|
|
LP_WIFI="$lp_wifi_signal_strength_color "
|
|
else
|
|
LP_WIFI=
|
|
fi
|
|
|
|
if _lp_time_color; then
|
|
LP_TIME="$lp_time_color "
|
|
elif _lp_analog_time_color; then
|
|
LP_TIME="$lp_analog_time_color "
|
|
else
|
|
LP_TIME=
|
|
fi
|
|
|
|
if _lp_sudo_active_color; then
|
|
# LP_COLOR_MARK="$lp_sudo_active_color"
|
|
LP_LIQUIDSHIP_SUDO="${LP_COLOR_MARK_SUDO}${LP_LIQUIDSHIP_MARK_SUDO}${NO_COL} "
|
|
else
|
|
LP_LIQUIDSHIP_SUDO=
|
|
fi
|
|
|
|
if _lp_dirstack_color; then
|
|
LP_DIRSTACK="$lp_dirstack_color "
|
|
else
|
|
LP_DIRSTACK=
|
|
fi
|
|
|
|
# in main prompt: no space
|
|
if _lp_http_proxy_color; then
|
|
LP_PROXY="through $lp_http_proxy_color "
|
|
else
|
|
LP_PROXY=
|
|
fi
|
|
|
|
if _lp_shell_level_color; then
|
|
LP_SHLVL="under $lp_shell_level_color "
|
|
else
|
|
LP_SHLVL=
|
|
fi
|
|
|
|
if _lp_python_env_color ; then
|
|
LP_VENV="via $lp_python_env_color "
|
|
else
|
|
LP_VENV=
|
|
fi
|
|
|
|
if _lp_node_env_color; then
|
|
LP_NODE_VENV="via $lp_node_env_color "
|
|
else
|
|
LP_NODE_VENV=
|
|
fi
|
|
|
|
if _lp_ruby_env_color; then
|
|
LP_RUBY_VENV="via $lp_ruby_env_color "
|
|
else
|
|
LP_RUBY_VENV=
|
|
fi
|
|
|
|
if _lp_kubernetes_context_color; then
|
|
LP_KUBECONTEXT="via $lp_kubernetes_context_color "
|
|
else
|
|
LP_KUBECONTEXT=
|
|
fi
|
|
|
|
if _lp_terraform_env_color; then
|
|
LP_TFSPACE="via $lp_terraform_env_color "
|
|
else
|
|
LP_TFSPACE=
|
|
fi
|
|
|
|
if _lp_container_color; then
|
|
LP_CONTAINER="via $lp_container_color "
|
|
else
|
|
LP_CONTAINER=
|
|
fi
|
|
|
|
if _lp_software_collections_color; then
|
|
LP_SCLS="via $lp_software_collections_color "
|
|
else
|
|
LP_SCLS=
|
|
fi
|
|
|
|
if _lp_aws_profile_color; then
|
|
LP_AWS_PROFILE="via $lp_aws_profile_color "
|
|
else
|
|
LP_AWS_PROFILE=
|
|
fi
|
|
|
|
if _lp_cmake_color; then
|
|
LP_CMAKE="via $lp_cmake_color "
|
|
else
|
|
LP_CMAKE=
|
|
fi
|
|
|
|
if _lp_runtime_color; then
|
|
LP_RUNTIME="took $lp_runtime_color "
|
|
else
|
|
LP_RUNTIME=
|
|
fi
|
|
|
|
if _lp_error_color; then
|
|
LP_ERR="got $lp_error_color "
|
|
else
|
|
LP_ERR=
|
|
fi
|
|
|
|
if _lp_find_vcs && _lp_vcs_details_color; then
|
|
LP_VCS="on $lp_vcs_details_color "
|
|
else
|
|
LP_VCS=
|
|
fi
|
|
|
|
# Should be called after the dev env group above.
|
|
# if _lp_dev_env_color ; then
|
|
# LP_DEV_ENV="$lp_dev_env_color"
|
|
# else
|
|
# LP_DEV_ENV=
|
|
# fi
|
|
|
|
_lp_smart_mark
|
|
LP_MARK="${lp_smart_mark}${NO_COL} "
|
|
}
|
|
|
|
|
|
_lp_liquidship_theme_prompt_template() {
|
|
|
|
|
|
if [[ -f "${LP_PS1_FILE-}" ]]; then
|
|
# shellcheck source=liquid.ps1
|
|
source "$LP_PS1_FILE"
|
|
fi
|
|
|
|
if [[ -z "${LP_PS1-}" ]]; then
|
|
# Docker is displayed along with Singularity and Kubernetes (strange that it is not the case in Starship…),
|
|
# in the container section, which is not duplicated at the end, like in Starship (WTF?).
|
|
local n=$'\n'
|
|
PS1="${LP_USER}${LP_HOST}${LP_LIQUIDSHIP_MUX}${LP_SHLVL}${LP_DIRSTACK}at ${LP_PWD}${LP_PERM} ${LP_VCS}${LP_CONTAINER}${LP_KUBECONTEXT}${LP_CMAKE}${LP_NODE_VENV}${LP_VENV}${LP_TFSPACE}${LP_AWS_PROFILE}${LP_PROXY}${LP_PS1_POSTFIX}${LP_RUNTIME}${n}"
|
|
PS1+="${LP_TIME}${LP_WIFI}${LP_TEMP}${LP_LOAD}${LP_BATT}${LP_JOBS}${LP_LIQUIDSHIP_SUDO}${LP_ERR}${LP_COLOR_MARK}${LP_MARK}"
|
|
|
|
# Get the core sections without prompt escapes and make them into a title.
|
|
_lp_formatted_title "${LP_PS1_PREFIX}${LP_BRACKET_OPEN}${LP_USER}${LP_HOST}${LP_MARK_PERM}${lp_path-}${LP_BRACKET_CLOSE}${LP_MARK_PREFIX}${LP_SHLVL}${LP_MARK}${LP_PS1_POSTFIX}"
|
|
else
|
|
PS1=$LP_PS1
|
|
fi
|
|
|
|
}
|
|
|
|
|
|
_lp_liquidship_hostname_color() {
|
|
if _lp_connected_display; then
|
|
lp_hostname_color=" with ${LP_COLOR_X11_ON}X${NO_COL}"
|
|
else
|
|
lp_hostname_color=" with ${LP_COLOR_X11_OFF}CLI${NO_COL}"
|
|
fi
|
|
|
|
if _lp_chroot; then
|
|
lp_hostname_color+="(within ${lp_chroot})"
|
|
fi
|
|
|
|
if _lp_hostname; then
|
|
case "$lp_connection" in
|
|
lcl)
|
|
lp_hostname_color+=" in ${LP_COLOR_HOST}${lp_hostname}${NO_COL}"
|
|
;;
|
|
ssh)
|
|
# If we want a different color for each host
|
|
(( LP_ENABLE_SSH_COLORS )) && LP_COLOR_SSH="$LP_COLOR_HOST_HASH"
|
|
lp_hostname_color+=" in ${LP_COLOR_SSH}${lp_hostname}${NO_COL}"
|
|
;;
|
|
su)
|
|
lp_hostname_color+=" in ${LP_COLOR_SU}${lp_hostname}${NO_COL}"
|
|
;;
|
|
tel)
|
|
lp_hostname_color+=" IN ${LP_COLOR_TELNET}${lp_hostname}${NO_COL}"
|
|
;;
|
|
*)
|
|
lp_hostname_color+=" in ${NO_COL}${lp_hostname}" # defaults to no color
|
|
;;
|
|
esac
|
|
else
|
|
if [[ -n ${lp_chroot-} ]]; then
|
|
# End the color of the chroot
|
|
lp_hostname_color+=${NO_COL}
|
|
else
|
|
# Nothing to display
|
|
lp_hostname_color=""
|
|
return 1
|
|
fi
|
|
fi
|
|
}
|