feat: supports LP 2.2.0

This commit is contained in:
Johann Dreo 2023-10-29 17:28:51 +01:00
commit 60e3f57745
2 changed files with 336 additions and 154 deletions

View file

@ -12,6 +12,8 @@ So far, *Solid* works for modern shells, supporting associative arrays
Note that Liquid Prompt does not have this requirement, Note that Liquid Prompt does not have this requirement,
so it may work on your system, while *Solid* does not. so it may work on your system, while *Solid* does not.
WARNING: this theme is for debugging/didactic purpose only, it is ***EXTREMELY*** slow.
Preview Preview
------- -------

View file

@ -22,64 +22,69 @@ _lp_solid_theme_activate() {
#|····|····|····|····|····|····|····|····|····|····|····|····|····|····|····|····|····| #|····|····|····|····|····|····|····|····|····|····|····|····|····|····|····|····|····|
#readonly #readonly
BOARD_TEMPLATE=( BOARD_TEMPLATE=(
'┌────┐ ┌───┐' # 0 '┌────────────────┐┌──────────────────────────────────┐ SOLID PROMPT ┌─────┐' # 0
'│v2.2│ ╓┘ └─────────────────────────────╥──────────────────╥───────────┄·' # 1 '│2.2.0 vs [ ]││ VCS:[ ] remt:[ ]├──────────────────╥┘ OS:◌└────┄·' # 1
'├────┴────────────╢ diff:[ ] hdst:[ ]║pyev:[ ]║cmak:' # 2 '├────────────────┴┤ diff:[ ] hdst:[ ]║pyev:[ ]║krnl:' # 2
'│ ⎧ load:[ ]║comit:[ ] bkmk:[ ]║node:[ ]║' # 3 '│ ⎧load:[ ]║comit:[ ] bkmk:[ ]║node:[ ]║fmly:' # 3
'│snsr⎨ batt:[ ]║stash:[ ] vers:[ ]║ruby:[ ]║' # 4 '│ ⎪mram:[ ]║stash:[ ] vers:[ ]║ruby:[ ]║dstr:' # 4
'│ ⎩ temp:[ ]║utrak:[ ] brch:[ ]║kube:[ ]║' # 5 '│snsr⎨batt:[ ]║utrak:[ ] brch:[ ]║kube:[ ]║vers:' # 5
'╞═════════════════╬═══════════╦══════════════════════╣trfm:[ ]║' # 6 '│ ⎪disk:[ ]╠══════════════════════════════════╣trfm:[ ]║arch:' # 6
'│ ⎧suspd:[ ]║shlvl:[ ]║ptag:[ ]║cont:[ ]║' # 7 '│ ⎩temp:[ ]║X11:◌ su:◌ sudo:◌ proxy:◌ chroot:◌║cont:[ ]╚═══════════┄·' # 7
'│jobs⎨bkgrd:[ ]║proxy:◌ ║rntm:[ ]║scls:[ ]║' # 8 '╞═════════════════╬═══════════╦══════════════════════╣awsp:[ ] modl:' # 8
'│ ⎩dtchd:[ ]║mux:◌ su:◌║user:[ ]║awsp:[ ]║' # 9 '│ ⎧suspd:[ ]║shlvl:[ ]║ptag:[ ]║scls:[ ] envv:' # 9
'╞══════╦══════════╩═══════════╣host:[ ]║shel:[ ] ║' # 10 '│jobs⎨bkgrd:[ ]║ RSH:◌ ║user:[ ]║shel:[ ]╔═════╗ cmak:' # 10
'│RSH:◌ ║error:[ ] sudo:◌ ╚══════════════════════╩══════════════════╣' # 11 '│ ⎩dtchd:[ ]║ mux:◌ ║host:[ ]╠═══════════╝ RO:◌╚╦═══════════┄·' # 11
'│X11:◌ ║drstk:[ ] path:[ ] RO:◌ chroot:◌║' # 12 '╞═════════════════╩═══════════╩══════════════════════╝rntm:[ ]║erro:[ ]' # 12
'├──────╨────────────────────────────────────────────────────────────────╨───────────┄·' # 13 '│drstk:[ ] path:[ ]║emng:' # 13
'├───────────────────────────────────────────────────────────────────────╨───────────┄·' # 14
#|····|····|····|····|····|····|····|····|····|····|····|····|····|····|····|····|····| #|····|····|····|····|····|····|····|····|····|····|····|····|····|····|····|····|····|
#0 5 10 15 20 25 30 35 40 45 50 55 60 65 70 75 80 85 #0 5 10 15 20 25 30 35 40 45 50 55 60 65 70 75 80 85
) )
declare -A -g BOARD_LOC declare -A -g BOARD_LOC
BOARD_LOC["load"]="3 13 4" BOARD_LOC["lp_version"]="1 11 5"
BOARD_LOC["batt"]="4 13 4"
BOARD_LOC["temp"]="5 13 4"
BOARD_LOC["suspd"]="7 13 4" BOARD_LOC["load"]="3 12 5"
BOARD_LOC["bkgrd"]="8 13 4" BOARD_LOC["mram"]="4 12 5"
BOARD_LOC["dtchd"]="9 13 4" BOARD_LOC["batt"]="5 12 5"
BOARD_LOC["disk"]="6 12 5"
BOARD_LOC["temp"]="7 12 5"
BOARD_LOC["RSH"]="11 5 1" BOARD_LOC["suspd"]="9 13 4"
BOARD_LOC["X11"]="12 5 1" BOARD_LOC["bkgrd"]="10 13 4"
BOARD_LOC["dtchd"]="11 13 4"
BOARD_LOC["mux"]="9 23 1" BOARD_LOC["shlvl"]="9 26 3"
BOARD_LOC["su"]="9 29 1" BOARD_LOC["RSH"]="10 25 1"
BOARD_LOC["proxy"]="8 25 1" BOARD_LOC["mux"]="11 25 1"
BOARD_LOC["VCS"]="1 20 3" BOARD_LOC["X11"]="7 23 1"
BOARD_LOC["su"]="7 28 1"
BOARD_LOC["sudo"]="7 35 1"
BOARD_LOC["proxy"]="7 43 1"
BOARD_LOC["chroot"]="7 52 1"
BOARD_LOC["VCS"]="1 26 7"
BOARD_LOC["diff"]="2 26 7" BOARD_LOC["diff"]="2 26 7"
BOARD_LOC["comit"]="3 26 7" BOARD_LOC["comit"]="3 26 7"
BOARD_LOC["stash"]="4 26 7" BOARD_LOC["stash"]="4 26 7"
BOARD_LOC["utrak"]="5 26 7" BOARD_LOC["utrak"]="5 26 7"
BOARD_LOC["remt"]="1 41 11"
BOARD_LOC["hdst"]="2 41 11" BOARD_LOC["hdst"]="2 41 11"
BOARD_LOC["bkmk"]="3 41 11" BOARD_LOC["bkmk"]="3 41 11"
BOARD_LOC["vers"]="4 41 11" BOARD_LOC["vers"]="4 41 11"
BOARD_LOC["brch"]="5 41 11" BOARD_LOC["brch"]="5 41 11"
BOARD_LOC["ptag"]="7 37 15" BOARD_LOC["ptag"]="9 37 15"
BOARD_LOC["rntm"]="8 37 15" BOARD_LOC["user"]="10 37 15"
BOARD_LOC["user"]="9 37 15" BOARD_LOC["host"]="11 37 15"
BOARD_LOC["host"]="10 37 15"
BOARD_LOC["shlvl"]="7 26 3" BOARD_LOC["rntm"]="12 60 11"
BOARD_LOC["error"]="11 15 3" BOARD_LOC["RO"]="11 70 1"
BOARD_LOC["sudo"]="11 25 1"
BOARD_LOC["RO"]="12 62 1" BOARD_LOC["drstk"]="13 15 3"
BOARD_LOC["drstk"]="12 15 3" LP_PATH_LENGTH=51
LP_PATH_LENGTH=30 BOARD_LOC["path"]="13 19 $LP_PATH_LENGTH"
BOARD_LOC["path"]="12 26 $LP_PATH_LENGTH"
BOARD_LOC["chroot"]="12 71 1"
BOARD_LOC["pyev"]="2 60 11" BOARD_LOC["pyev"]="2 60 11"
BOARD_LOC["node"]="3 60 11" BOARD_LOC["node"]="3 60 11"
@ -91,7 +96,19 @@ _lp_solid_theme_activate() {
BOARD_LOC["awsp"]="9 60 11" BOARD_LOC["awsp"]="9 60 11"
BOARD_LOC["shel"]="10 60 4" BOARD_LOC["shel"]="10 60 4"
BOARD_LOC["cmak"]="2 78 0" BOARD_LOC["os"]="1 78 1"
BOARD_LOC["krnl"]="2 78 0"
BOARD_LOC["fmly"]="3 78 0"
BOARD_LOC["dstr"]="4 78 0"
BOARD_LOC["osvers"]="5 78 0"
BOARD_LOC["arch"]="6 78 0"
BOARD_LOC["modl"]="8 78 0"
BOARD_LOC["envv"]="9 78 0"
BOARD_LOC["cmak"]="10 78 0"
BOARD_LOC["error"]="12 79 3"
BOARD_LOC["emng"]="13 79 0"
_lp_default_theme_activate _lp_default_theme_activate
} }
@ -158,9 +175,13 @@ __lp_board_put() { # what field color
if [[ "$raw_data" == "$SP_MARK_HIDDEN" ]]; then if [[ "$raw_data" == "$SP_MARK_HIDDEN" ]]; then
local i local i
data="$SP_MARK_HIDDEN" data="$SP_MARK_HIDDEN"
if [[ $raw_field_len -eq 0 ]]; then
data="$SP_MARK_HIDDEN"
else
for (( i=1; i < raw_field_len; i++ )) ; do for (( i=1; i < raw_field_len; i++ )) ; do
data+="$SP_MARK_HIDDEN" data+="$SP_MARK_HIDDEN"
done done
fi
data_len=$raw_field_len data_len=$raw_field_len
raw_data="$data" raw_data="$data"
raw_data_len=$data_len raw_data_len=$data_len
@ -268,6 +289,17 @@ _lp_solid_theme_prompt() {
# Prompt line # 0 : no data # Prompt line # 0 : no data
# Prompt line #1 # Prompt line #1
if [[ "${#_LP_VERSION[@]}" -gt 0 ]]; then
local lp_version="${_LP_VERSION[_LP_FIRST_INDEX+0]}.${_LP_VERSION[_LP_FIRST_INDEX+1]}.${_LP_VERSION[_LP_FIRST_INDEX+2]}"
if _lp_version_greatereq 2 2 0; then
__lp_board_put "$lp_version" "lp_version" "$SP_COLOR_NOTE"
else
__lp_board_put "$lp_version" "lp_version" "$SP_COLOR_WARN"
fi
else
__lp_board_put "?.?.?" "lp_version" "$SP_COLOR_BASE"
fi
if ! _lp_are_vcs_enabled; then if ! _lp_are_vcs_enabled; then
__lp_board_put "$SP_MARK_HIDDEN" "VCS" "$SP_COLOR_BASE" __lp_board_put "$SP_MARK_HIDDEN" "VCS" "$SP_COLOR_BASE"
else else
@ -276,7 +308,24 @@ _lp_solid_theme_prompt() {
if [[ $found_vcs -eq 0 ]]; then if [[ $found_vcs -eq 0 ]]; then
__lp_board_put "$lp_vcs_type" "VCS" "$SP_COLOR_NOTE" __lp_board_put "$lp_vcs_type" "VCS" "$SP_COLOR_NOTE"
if _lp_vcs_remote; then
__lp_board_put "$lp_vcs_remote" "remt" "$SP_COLOR_NOTE"
fi
fi
fi
if (( LP_ENABLE_OS )); then
__lp_board_put "1" "os" "$SP_COLOR_NOTE"
else
__lp_board_put "$SP_MARK_HIDDEN" "os" "$SP_COLOR_BASE"
fi
# Prompt line #2 # Prompt line #2
if _lp_are_vcs_enabled; then
_lp_find_vcs
local found_vcs="$?"
if [[ $found_vcs -eq 0 ]]; then
if _lp_vcs_uncommitted_files; then if _lp_vcs_uncommitted_files; then
local ret has_lines= local ret has_lines=
_lp_vcs_unstaged_lines; ret=$? _lp_vcs_unstaged_lines; ret=$?
@ -308,25 +357,23 @@ _lp_solid_theme_prompt() {
__lp_board_put "$SP_MARK_HIDDEN" "pyev" "$SP_COLOR_BASE" __lp_board_put "$SP_MARK_HIDDEN" "pyev" "$SP_COLOR_BASE"
fi fi
if (( LP_ENABLE_CMAKE )); then if (( LP_ENABLE_OS )); then
if _lp_cmake; then _lp_os # No need to call it later again.
local cm= if (( LP_ENABLE_OS_KERNEL )); then
[[ -n "${lp_cmake_c_compiler}" ]] && cm+="[${SP_COLOR_NOTE}${lp_cmake_c_compiler}${SP_COLOR_BASE}]" __lp_board_put "$lp_os_kernel" "krnl" "$SP_COLOR_NOTE"
[[ -n "${lp_cmake_cxx_compiler}" ]] && cm+="[${SP_COLOR_NOTE}${lp_cmake_cxx_compiler}${SP_COLOR_BASE}]" else
[[ -n "${lp_cmake_generator}" ]] && cm+="[${SP_COLOR_NOTE}${lp_cmake_generator}${SP_COLOR_BASE}]" __lp_board_put "$SP_MARK_HIDDEN" "krnl" "$SP_COLOR_BASE"
[[ -n "${lp_cmake_buildtype}" ]] && cm+="[${SP_COLOR_NOTE}${lp_cmake_buildtype}${SP_COLOR_BASE}]"
__lp_board_put "$cm" "cmak"
fi fi
else else
__lp_board_put "$SP_MARK_HIDDEN" "cmak" "$SP_COLOR_BASE" __lp_board_put "$SP_MARK_HIDDEN" "krnl" "$SP_COLOR_BASE"
fi fi
# Prompt line #3 # Prompt line #3
if (( LP_ENABLE_LOAD )); then if (( LP_ENABLE_LOAD )); then
if _lp_load; then if _lp_load; then
color="$SP_COLOR_NOTE" color="$SP_COLOR_WARN"
else else
color="$SP_COLOR_BASE" color="$SP_COLOR_NOTE"
fi fi
__lp_board_put "${lp_load_adjusted}" "load" "$color" __lp_board_put "${lp_load_adjusted}" "load" "$color"
else else
@ -364,17 +411,26 @@ _lp_solid_theme_prompt() {
__lp_board_put "$SP_MARK_HIDDEN" "node" "$SP_COLOR_BASE" __lp_board_put "$SP_MARK_HIDDEN" "node" "$SP_COLOR_BASE"
fi fi
# Prompt line # 4 if (( LP_ENABLE_OS )); then
if (( LP_ENABLE_BATT )); then if (( LP_ENABLE_OS_FAMILY )); then
if _lp_battery; then __lp_board_put "$lp_os_family" "fmly" "$SP_COLOR_NOTE"
color="$SP_COLOR_NOTE"
else else
color="$SP_COLOR_BASE" __lp_board_put "$SP_MARK_HIDDEN" "fmly" "$SP_COLOR_BASE"
fi fi
__lp_board_put "${lp_battery}${_LP_PERCENT}" "batt" "$color"
else else
__lp_board_put "$SP_MARK_HIDDEN" "batt" "$SP_COLOR_BASE" __lp_board_put "$SP_MARK_HIDDEN" "fmly" "$SP_COLOR_BASE"
fi
# Prompt line #4
if (( LP_ENABLE_RAM )); then
if _lp_ram; then
color="$SP_COLOR_WARN"
else
color="$SP_COLOR_NOTE"
fi
__lp_board_put "${lp_ram_perc}${_LP_PERCENT}" "mram" "$color"
else
__lp_board_put "$SP_MARK_HIDDEN" "mram" "$SP_COLOR_BASE"
fi fi
if ! _lp_are_vcs_enabled; then if ! _lp_are_vcs_enabled; then
@ -402,16 +458,51 @@ _lp_solid_theme_prompt() {
__lp_board_put "$SP_MARK_HIDDEN" "ruby" "$SP_COLOR_BASE" __lp_board_put "$SP_MARK_HIDDEN" "ruby" "$SP_COLOR_BASE"
fi fi
if (( LP_ENABLE_OS )); then
if (( LP_ENABLE_OS_DISTRIB )); then
__lp_board_put "$lp_os_distrib" "dstr" "$SP_COLOR_NOTE"
else
__lp_board_put "$SP_MARK_HIDDEN" "dstr" "$SP_COLOR_BASE"
fi
else
__lp_board_put "$SP_MARK_HIDDEN" "dstr" "$SP_COLOR_BASE"
fi
# Prompt line #5 # Prompt line #5
if (( LP_ENABLE_TEMP )); then
if _lp_temperature; then if (( LP_ENABLE_BATT )); then
_lp_battery
local -i _status="$?"
local sp_batt
if (( _status >= 4 )); then
# no battery support or battery full
if (( lp_battery == 100 )); then
# battery full
sp_batt="${lp_battery}"
color="$SP_COLOR_NOTE"
fi
elif (( _status == 3 )); then
# charging and above threshold and not 100%
sp_batt="↑${lp_battery}"
color="$SP_COLOR_NOTE"
elif (( _status == 2 )); then
# charging but under threshold
sp_batt="↑${lp_battery}"
color="$SP_COLOR_WARN"
elif (( _status == 1 )); then
# discharging but above threshold
sp_batt="↓${lp_battery}"
color="$SP_COLOR_NOTE" color="$SP_COLOR_NOTE"
else else
color="$SP_COLOR_BASE" # discharging and under threshold
sp_batt="↓${lp_battery}"
color="$SP_COLOR_WARN"
fi fi
__lp_board_put "$lp_temperature°" "temp" "$color"
__lp_board_put "${sp_batt}${_LP_PERCENT}" "batt" "$color"
else else
__lp_board_put "$SP_MARK_HIDDEN" "temp" "$SP_COLOR_BASE" __lp_board_put "$SP_MARK_HIDDEN" "batt" "$SP_COLOR_BASE"
fi fi
if ! _lp_are_vcs_enabled; then if ! _lp_are_vcs_enabled; then
@ -433,14 +524,109 @@ _lp_solid_theme_prompt() {
__lp_board_put "$SP_MARK_HIDDEN" "kube" "$SP_COLOR_BASE" __lp_board_put "$SP_MARK_HIDDEN" "kube" "$SP_COLOR_BASE"
fi fi
if (( LP_ENABLE_OS )); then
if (( LP_ENABLE_OS_VERSION )); then
__lp_board_put "$lp_os_vers" "osvers" "$SP_COLOR_NOTE"
else
__lp_board_put "$SP_MARK_HIDDEN" "osvers" "$SP_COLOR_BASE"
fi
else
__lp_board_put "$SP_MARK_HIDDEN" "osvers" "$SP_COLOR_BASE"
fi
# Prompt line #6 # Prompt line #6
if (( LP_ENABLE_DISK )); then
if _lp_disk; then
color="$SP_COLOR_WARN"
else
color="$SP_COLOR_NOTE"
fi
__lp_board_put "${lp_disk_perc}${_LP_PERCENT}" "disk" "$color"
else
__lp_board_put "$SP_MARK_HIDDEN" "disk" "$SP_COLOR_BASE"
fi
if (( LP_ENABLE_TERRAFORM )); then if (( LP_ENABLE_TERRAFORM )); then
__lp_board_put "$LP_TFSPACE" "trfm" "$SP_COLOR_NOTE" __lp_board_put "$LP_TFSPACE" "trfm" "$SP_COLOR_NOTE"
else else
__lp_board_put "$SP_MARK_HIDDEN" "trfm" "$SP_COLOR_BASE" __lp_board_put "$SP_MARK_HIDDEN" "trfm" "$SP_COLOR_BASE"
fi fi
if (( LP_ENABLE_OS )); then
if (( LP_ENABLE_OS_ARCH )); then
__lp_board_put "$lp_os_arch" "arch" "$SP_COLOR_NOTE"
else
__lp_board_put "$SP_MARK_HIDDEN" "arch" "$SP_COLOR_BASE"
fi
else
__lp_board_put "$SP_MARK_HIDDEN" "arch" "$SP_COLOR_BASE"
fi
# Prompt line #7 # Prompt line #7
if (( LP_ENABLE_TEMP )); then
if _lp_temperature; then
color="$SP_COLOR_WARN"
else
color="$SP_COLOR_NOTE"
fi
__lp_board_put "$lp_temperature°" "temp" "$color"
else
__lp_board_put "$SP_MARK_HIDDEN" "temp" "$SP_COLOR_BASE"
fi
# TODO add LP_ENABLE_DISPLAY in Liquid Prompt
if _lp_connected_display; then
__lp_board_put "1" "X11" "$SP_COLOR_NOTE"
fi
if _lp_hostname; then
if [[ "$lp_connection" == "su" ]]; then
__lp_board_put "1" "su" "$SP_COLOR_WARN"
fi
fi
if (( LP_ENABLE_SUDO )); then
if _lp_sudo_active; then
__lp_board_put "1" "sudo" "$SP_COLOR_WARN"
fi
else
__lp_board_put "$SP_MARK_HIDDEN" "sudo" "$SP_COLOR_BASE"
fi
if (( LP_ENABLE_PROXY )); then
__lp_board_put "$LP_PROXY" "proxy" "$SP_COLOR_NOTE"
else
__lp_board_put "$SP_MARK_HIDDEN" "proxy" "$SP_COLOR_BASE"
fi
# TODO add LP_ENABLE_CHROOT in Liquid Prompt
if _lp_chroot; then
__lp_board_put "1" "chroot" "$SP_COLOR_WARN"
fi
if (( LP_ENABLE_CONTAINER )); then
__lp_board_put "$LP_CONTAINER" "cont" "$SP_COLOR_NOTE"
else
__lp_board_put "$SP_MARK_HIDDEN" "cont" "$SP_COLOR_BASE"
fi
# Prompt line #8
if (( LP_ENABLE_AWS_PROFILE )); then
__lp_board_put "$LP_AWS_PROFILE" "awsp" "$SP_COLOR_NOTE"
else
__lp_board_put "$SP_MARK_HIDDEN" "awsp" "$SP_COLOR_BASE"
fi
if (( LP_ENABLE_MODULES )); then
__lp_board_put "$LP_MODULES" "modl" "$SP_COLOR_NOTE"
else
__lp_board_put "$SP_MARK_HIDDEN" "modl" "$SP_COLOR_BASE"
fi
# Prompt line #9
if (( LP_ENABLE_JOBS )); then if (( LP_ENABLE_JOBS )); then
_lp_jobcount _lp_jobcount
if [[ $lp_stopped_jobs -gt 0 ]]; then if [[ $lp_stopped_jobs -gt 0 ]]; then
@ -466,13 +652,23 @@ _lp_solid_theme_prompt() {
__lp_board_put "$LP_PS1_PREFIX" "ptag" "$SP_COLOR_NOTE" __lp_board_put "$LP_PS1_PREFIX" "ptag" "$SP_COLOR_NOTE"
if (( LP_ENABLE_CONTAINER )); then if (( LP_ENABLE_SCLS )); then
__lp_board_put "$LP_CONTAINER" "cont" "$SP_COLOR_NOTE" __lp_board_put "$LP_SCLS" "scls" "$SP_COLOR_NOTE"
else else
__lp_board_put "$SP_MARK_HIDDEN" "cont" "$SP_COLOR_BASE" __lp_board_put "$SP_MARK_HIDDEN" "scls" "$SP_COLOR_BASE"
fi fi
# Prompt line # 8 if (( LP_ENABLE_ENV_VARS )); then
if _lp_env_vars; then
_lp_join "${SP_COLOR_BASE}][${SP_COLOR_NOTE}" ${lp_env_vars[@]}
__lp_board_put "${SP_COLOR_BASE}[${SP_COLOR_NOTE}$lp_join${SP_COLOR_BASE}]${NO_COL}" "envv" "${SP_COLOR_NOTE}"
fi
else
__lp_board_put "$SP_MARK_HIDDEN" "envv" "$SP_COLOR_BASE"
fi
# Prompt line #10
if (( LP_ENABLE_JOBS )); then if (( LP_ENABLE_JOBS )); then
if [[ $lp_running_jobs -gt 0 ]]; then if [[ $lp_running_jobs -gt 0 ]]; then
color="$SP_COLOR_NOTE" color="$SP_COLOR_NOTE"
@ -481,31 +677,53 @@ _lp_solid_theme_prompt() {
fi fi
__lp_board_put "$lp_running_jobs" "bkgrd" "$color" __lp_board_put "$lp_running_jobs" "bkgrd" "$color"
fi fi
if (( LP_ENABLE_PROXY )); then
__lp_board_put "$LP_PROXY" "proxy" "$SP_COLOR_NOTE" if _lp_hostname; then # FIXME alredy called for line 9.
else case "$lp_connection" in
__lp_board_put "$SP_MARK_HIDDEN" "proxy" "$SP_COLOR_BASE" ssh)
__lp_board_put "1" "RSH" "$SP_COLOR_NOTE"
;;
#su) # TODO
# ;;
tel)
__lp_board_put "1" "RSH" "$SP_COLOR_WARN"
;;
esac
fi fi
if (( LP_ENABLE_RUNTIME )); then if _lp_username; then
if _lp_runtime_format; then _lp_user
local color="$SP_COLOR_NOTE" if [[ $? -eq 2 ]]; then # Root
if (( _LP_RUNTIME_SECONDS >= LP_RUNTIME_THRESHOLD )); then
color="$SP_COLOR_WARN" color="$SP_COLOR_WARN"
fi
__lp_board_put "$lp_runtime_format" "rntm" "$color"
fi
else else
__lp_board_put "$SP_MARK_HIDDEN" "rntm" "$SP_COLOR_BASE" color="$SP_COLOR_NOTE"
fi
__lp_board_put "$lp_username" "user" "$color"
else
__lp_board_put "$SP_MARK_HIDDEN" "user" "$SP_COLOR_BASE"
fi fi
if (( LP_ENABLE_SCLS )); then if ((_LP_SHELL_zsh)); then
__lp_board_put "$LP_SCLS" "scls" "$SP_COLOR_NOTE" __lp_board_put "zsh" "shel" "$SP_COLOR_NOTE"
else else
__lp_board_put "$SP_MARK_HIDDEN" "scls" "$SP_COLOR_BASE" __lp_board_put "bash" "shel" "$SP_COLOR_NOTE"
fi fi
# Prompt line # 9 if (( LP_ENABLE_CMAKE )); then
if _lp_cmake; then
local cm=
[[ -n "${lp_cmake_c_compiler}" ]] && cm+="[${SP_COLOR_NOTE}${lp_cmake_c_compiler}${SP_COLOR_BASE}]"
[[ -n "${lp_cmake_cxx_compiler}" ]] && cm+="[${SP_COLOR_NOTE}${lp_cmake_cxx_compiler}${SP_COLOR_BASE}]"
[[ -n "${lp_cmake_generator}" ]] && cm+="[${SP_COLOR_NOTE}${lp_cmake_generator}${SP_COLOR_BASE}]"
[[ -n "${lp_cmake_buildtype}" ]] && cm+="[${SP_COLOR_NOTE}${lp_cmake_buildtype}${SP_COLOR_BASE}]"
__lp_board_put "$cm" "cmak"
fi
else
__lp_board_put "$SP_MARK_HIDDEN" "cmak" "$SP_COLOR_BASE"
fi
# Prompt line #11
if (( LP_ENABLE_DETACHED_SESSIONS )); then if (( LP_ENABLE_DETACHED_SESSIONS )); then
_lp_detached_sessions _lp_detached_sessions
if [[ $lp_detached_sessions -gt 0 ]]; then if [[ $lp_detached_sessions -gt 0 ]]; then
@ -523,55 +741,28 @@ _lp_solid_theme_prompt() {
__lp_board_put "$lp_multiplexer" "mux" "$SP_COLOR_NOTE" __lp_board_put "$lp_multiplexer" "mux" "$SP_COLOR_NOTE"
fi fi
if _lp_hostname; then
if [[ "$lp_connection" == "su" ]]; then
__lp_board_put "1" "su" "$SP_COLOR_WARN"
fi
fi
if _lp_username; then
_lp_user
if [[ $? -eq 2 ]]; then # Root
color="$SP_COLOR_WARN"
else
color="$SP_COLOR_NOTE"
fi
__lp_board_put "$lp_username" "user" "$color"
else
__lp_board_put "$SP_MARK_HIDDEN" "user" "$SP_COLOR_BASE"
fi
if (( LP_ENABLE_AWS_PROFILE )); then
__lp_board_put "$LP_AWS_PROFILE" "awsp" "$SP_COLOR_NOTE"
else
__lp_board_put "$SP_MARK_HIDDEN" "awsp" "$SP_COLOR_BASE"
fi
# Prompt line #10
if _lp_hostname; then # FIXME alredy called for line 9. if _lp_hostname; then # FIXME alredy called for line 9.
__lp_board_put "$lp_hostname" "host" "$SP_COLOR_NOTE" __lp_board_put "$lp_hostname" "host" "$SP_COLOR_NOTE"
else else
__lp_board_put "$SP_MARK_HIDDEN" "host" "$SP_COLOR_BASE" __lp_board_put "$SP_MARK_HIDDEN" "host" "$SP_COLOR_BASE"
fi fi
if ((_LP_SHELL_zsh)); then if [[ ! -w "${PWD}" ]]; then
__lp_board_put "zsh" "shel" "$SP_COLOR_NOTE" __lp_board_put "1" "RO" "$SP_COLOR_WARN"
else
__lp_board_put "bash" "shel" "$SP_COLOR_NOTE"
fi fi
# Prompt line #11 # Prompt line #12
if _lp_hostname; then # FIXME alredy called for line 9.
case "$lp_connection" in if (( LP_ENABLE_RUNTIME )); then
ssh) if _lp_runtime_format; then
__lp_board_put "1" "RSH" "$SP_COLOR_NOTE" local color="$SP_COLOR_NOTE"
;; if (( _LP_RUNTIME_SECONDS >= LP_RUNTIME_THRESHOLD )); then
#su) # TODO color="$SP_COLOR_WARN"
# ;; fi
tel) __lp_board_put "$lp_runtime_format" "rntm" "$color"
__lp_board_put "1" "RSH" "$SP_COLOR_WARN" fi
;; else
esac __lp_board_put "$SP_MARK_HIDDEN" "rntm" "$SP_COLOR_BASE"
fi fi
if (( LP_ENABLE_ERROR )); then if (( LP_ENABLE_ERROR )); then
@ -582,19 +773,7 @@ _lp_solid_theme_prompt() {
__lp_board_put "$SP_MARK_HIDDEN" "error" "$SP_COLOR_BASE" __lp_board_put "$SP_MARK_HIDDEN" "error" "$SP_COLOR_BASE"
fi fi
if (( LP_ENABLE_SUDO )); then # Prompt line #13 : no data
if _lp_sudo_active; then
__lp_board_put "1" "sudo" "$SP_COLOR_WARN"
fi
else
__lp_board_put "$SP_MARK_HIDDEN" "sudo" "$SP_COLOR_BASE"
fi
# Prompt line #12
# TODO add LP_ENABLE_DISPLAY in Liquid Prompt
if _lp_connected_display; then
__lp_board_put "1" "X11" "$SP_COLOR_NOTE"
fi
if (( LP_ENABLE_DIRSTACK )); then if (( LP_ENABLE_DIRSTACK )); then
if _lp_dirstack; then if _lp_dirstack; then
@ -610,16 +789,17 @@ _lp_solid_theme_prompt() {
# __lp_board_put "<$lp_path_format>" "path" # No forced color, already set as global config. # __lp_board_put "<$lp_path_format>" "path" # No forced color, already set as global config.
__lp_board_put "$LP_PWD" "path" # No forced color, already set as global config. __lp_board_put "$LP_PWD" "path" # No forced color, already set as global config.
if [[ ! -w "${PWD}" ]]; then if (( LP_ENABLE_ERROR )); then
__lp_board_put "1" "RO" "$SP_COLOR_WARN" if (( LP_ENABLE_ERROR_MEANING )); then
if _lp_error; then
__lp_board_put "${SP_COLOR_BASE}[${SP_COLOR_NOTE}$lp_error_meaning${SP_COLOR_BASE}]" "emng" "$SP_COLOR_NOTE"
fi fi
else
# TODO add LP_ENABLE_CHROOT in Liquid Prompt __lp_board_put "$SP_MARK_HIDDEN" "emng" "$SP_COLOR_BASE"
if _lp_chroot; then fi
__lp_board_put "1" "chroot" "$SP_COLOR_WARN" else
__lp_board_put "$SP_MARK_HIDDEN" "emng" "$SP_COLOR_BASE"
fi fi
# Prompt line #13 : no data
local n=$'\n' local n=$'\n'
PS1="$n" PS1="$n"