first working version

This commit is contained in:
Johann Dreo 2024-12-15 20:18:22 +01:00
commit c21e700e03

View file

@ -2,6 +2,19 @@
_lp_boxed_theme_activate() {
LP_MARK_DEV_OPEN=
LP_MARK_DEV_CLOSE=
LP_MARK_DEV_MID=
LP_MARK_MODULES_OPEN=
LP_MARK_MODULES_SEP=
LP_MARK_MODULES_CLOSE=
LP_MARK_ENV_VARS_OPEN=
LP_MARK_ENV_VARS_SEP=
LP_MARK_ENV_VARS_CLOSE=
# BOXED_MULTIPLEXER=
# if _lp_multiplexer ; then
# BOXED_MULTIPLEXER="$lp_multiplexer"
# fi
_lp_default_theme_activate
}
@ -17,34 +30,79 @@ _lp_boxed_theme_prompt() {
_box() {
local name="$1"
name_len=${#name}
# printf "$name\n"
local what="$2"
__lp_strip_escapes "$what"
local raw_data="$ret"
local raw_data_len=${#raw_data}
box_top=""
box_mid=""
box_bot=""
local color="$3"
if [[ -n "$what" ]]; then
local i
box_top="┬"
box_hyp+=" "
box_sup+=" "
box_top+="┬"
box_mid+="${color}│${NO_COL}$what"
box_bot+="┴"
if (( name_len > raw_data_len )); then
name="${name:0:raw_data_len}"
# printf "On sup/hyp line\n"
local btlen=${#box_top}
local cursor="${box_sup:btlen:1}"
# printf "${btlen}«${cursor}»\n"
# Fill in hyp if it's missing spaces.
if (( ${#box_hyp} < ${#box_top} )) ; then
for (( i=${#box_hyp}; i < ${#box_top}; i++ )) ; do
box_hyp+=" "
done
fi
if [[ "$cursor" != " " && "$cursor" != "" ]] ; then
# printf "On hyp line\n"
box_hyp+="┌$name"
box_top+="┴"
else
# printf "On sup line\n"
box_sup+="┌$name"
box_top+="┴"
fi
else
# printf "On top line\n"
box_top+="$name"
fi
box_top+="$name"
for (( i=0; i < raw_data_len-name_len; i++ )) ; do
# Fill in missing spaces, using box_mid as reference.
__lp_strip_escapes "$box_mid"
local mid="$ret"
for (( i=${#box_hyp}; i < ${#mid}; i++ )) ; do
box_hyp+=" "
done
for (( i=${#box_sup}; i < ${#mid}; i++ )) ; do
box_sup+=" "
done
for (( i=${#box_top}; i < ${#mid}; i++ )) ; do
box_top+="─"
done
box_mid="│$what"
box_bot="┴"
for (( i=0; i < raw_data_len; i++ )) ; do
# printf "${#box_bot}->${#mid}"
for (( i=${#box_bot}; i < ${#mid}; i++ )) ; do
box_bot+="─"
done
fi
# __lp_strip_escapes "$box_hyp"
# printf "$ret\n"
# __lp_strip_escapes "$box_sup"
# printf "$ret\n"
# __lp_strip_escapes "$box_top"
# printf "$ret\n"
# __lp_strip_escapes "$box_mid"
# printf "$ret\n"
# __lp_strip_escapes "$box_bot"
# printf "$ret\n"
}
@ -55,150 +113,58 @@ _lp_boxed_theme_prompt_template() {
fi
if [[ -z "${LP_PS1-}" ]]; then
top=""
mid=""
bot=""
box_hyp=""
box_sup=""
box_top=""
box_mid=""
box_bot=""
lp_terminal_format 243
boxed_color="$lp_terminal_format"
# Add title escape time, battery, load, temperature, RAM, disk, wifi, jobs.
_box "ps1_prefix" "${LP_PS1_PREFIX}"
top+="$box_top"
mid+="$box_mid"
bot+="$box_bot"
_box "time" "${LP_TIME}"
top+="$box_top"
mid+="$box_mid"
bot+="$box_bot"
_box "batt" "${LP_BATT}"
top+="$box_top"
mid+="$box_mid"
bot+="$box_bot"
_box "load" "${LP_LOAD}"
top+="$box_top"
mid+="$box_mid"
bot+="$box_bot"
_box "temp" "${LP_TEMP}"
top+="$box_top"
mid+="$box_mid"
bot+="$box_bot"
_box "ram" "${LP_RAM}"
top+="$box_top"
mid+="$box_mid"
bot+="$box_bot"
_box "disk" "${LP_DISK}"
top+="$box_top"
mid+="$box_mid"
bot+="$box_bot"
_box "wifi" "${LP_WIFI}"
top+="$box_top"
mid+="$box_mid"
bot+="$box_bot"
_box "jobs" "${LP_JOBS}"
top+="$box_top"
mid+="$box_mid"
bot+="$box_bot"
_box "ps1_prefix" "${LP_PS1_PREFIX}" "$boxed_color"
_box "time" "${LP_TIME}" "$boxed_color"
_box "batt" "${LP_BATT}" "$boxed_color"
_box "load" "${LP_LOAD}" "$boxed_color"
_box "temp" "${LP_TEMP}" "$boxed_color"
_box "ram" "${LP_RAM}" "$boxed_color"
_box "disk" "${LP_DISK}" "$boxed_color"
_box "wifi" "${LP_WIFI}" "$boxed_color"
_box "jobs" "${LP_JOBS}" "$boxed_color"
# Add multiplexer brackets, user, host, permissions colon, working directory, dirstack, proxy, watched environment variables and nested shell level.
_box "bracket_open" "${LP_BRACKET_OPEN}"
top+="$box_top"
mid+="$box_mid"
bot+="$box_bot"
_box "bracket_close" "${LP_BRACKET_CLOSE}"
top+="$box_top"
mid+="$box_mid"
bot+="$box_bot"
_box "user" "${LP_USER}"
top+="$box_top"
mid+="$box_mid"
bot+="$box_bot"
_box "host" "${LP_HOST}"
top+="$box_top"
mid+="$box_mid"
bot+="$box_bot"
_box "perm" "${LP_PERM}"
top+="$box_top"
mid+="$box_mid"
bot+="$box_bot"
_box "pwd" "${LP_PWD}"
top+="$box_top"
mid+="$box_mid"
bot+="$box_bot"
_box "dirstack" "${LP_DIRSTACK}"
top+="$box_top"
mid+="$box_mid"
bot+="$box_bot"
_box "proxy" "${LP_PROXY}"
top+="$box_top"
mid+="$box_mid"
bot+="$box_bot"
_box "envvars" "${LP_ENVVARS}"
top+="$box_top"
mid+="$box_mid"
bot+="$box_bot"
_box "shlvl" "${LP_SHLVL}"
top+="$box_top"
mid+="$box_mid"
bot+="$box_bot"
# _box "multiplexer" "${BOXED_MULTIPLEXER}" "$boxed_color"
_box "bracket_open" "${LP_BRACKET_OPEN}" "$boxed_color"
_box "user" "${LP_USER}" "$boxed_color"
_box "host" "${LP_HOST}" "$boxed_color"
_box "perm" "${LP_PERM}" "$boxed_color"
_box "pwd" "${LP_PWD}" "$boxed_color"
_box "dirstack" "${LP_DIRSTACK}" "$boxed_color"
_box "bracket_close" "${LP_BRACKET_CLOSE}" "$boxed_color"
_box "proxy" "${LP_PROXY}" "$boxed_color"
_box "envvars" "${LP_ENVVARS}" "$boxed_color"
_box "shlvl" "${LP_SHLVL}" "$boxed_color"
# Add the list of development environments/config/etc.
_box "dev_env" "${LP_DEV_ENV}"
top+="$box_top"
mid+="$box_mid"
bot+="$box_bot"
_box "dev_env" "${LP_DEV_ENV}" "$boxed_color"
# Add VCS infos
# If root, the info has not been collected unless LP_ENABLE_VCS_ROOT
# is set.
_box "vcs" "${LP_VCS}"
top+="$box_top"
mid+="$box_mid"
bot+="$box_bot"
_box "vcs" "${LP_VCS}" "$boxed_color"
# Add last runtime, return code & meaning, prompt mark and user-defined postfix.
_box "runtime" "${LP_RUNTIME}"
top+="$box_top"
mid+="$box_mid"
bot+="$box_bot"
_box "runtime" "${LP_RUNTIME}" "$boxed_color"
_box "err" "${LP_ERR}" "$boxed_color"
_box "err_meaning" "${LP_ERR_MEANING}" "$boxed_color"
_box "err" "${LP_ERR}"
top+="$box_top"
mid+="$box_mid"
bot+="$box_bot"
box_hyp+=" "
box_sup+=" "
box_top+="┐"
box_mid+="${boxed_color}│${NO_COL}"
box_bot+="┘"
_box "err_meaning" "${LP_ERR_MEANING}"
top+="$box_top"
mid+="$box_mid"
bot+="$box_bot"
_box "mark_prefix" "${LP_MARK_PREFIX}"
top+="$box_top"
mid+="$box_mid"
bot+="$box_bot"
_box "color_mark" "${LP_COLOR_MARK}"
top+="$box_top"
mid+="$box_mid"
bot+="$box_bot"
PS1="$top\n$mid\n$bot\n${LP_MARK}${LP_PS1_POSTFIX}"
PS1="${boxed_color}${box_hyp}\n${box_sup}\n${box_top}${NO_COL}\n${box_mid}\n${boxed_color}${box_bot}${NO_COL}\n${LP_MARK_PREFIX}${LP_MARK}${LP_PS1_POSTFIX}"
# 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_MARK}${LP_PS1_POSTFIX}"