diff --git a/board.theme b/board.theme deleted file mode 100644 index 3118013..0000000 --- a/board.theme +++ /dev/null @@ -1,160 +0,0 @@ -_lp_board_theme_activate() { - #0 5 10 15 20 25 30 35 40 45 50 55 60 65 70 75 80 85 - #|····|····|····|····|····|····|····|····|····|····|····|····|····|····|····|····|····| - readonly BOARD_TEMPLATE=( - '┌────┐ ┌───┐' # 0 - '│v2.2│ ╓┘ └─────────────────────────────╥──────────────────╥───────────┈' # 1 - '├────┴────────────╢ diff:[ ] hdst:[ ]║venv:[ ]║cmak:' # 2 - '│ ⎧ load:[ L]║comit:[ ] bkmk:[ ]║node:[ ]║' # 3 - '│snsr⎨ batt:[ %]║stash:[ ] vtag:[ ]║ruby:[ ]║' # 4 - '│ ⎩ temp:[ °]║utrak:[ ] brch:[ ]║kube:[ ]║' # 5 - '╞═════════════════╬═══════════╦══════════════════════╣trfm:[ ]║' # 6 - '│ ⎧suspd:[ z]║shlvl:[ ]║name:[ ]║cont:[ ]║' # 7 - '│jobs⎨bkgrd:[ &]║proxy:◌ ║rntm:[ ]║scls:[ ]║' # 8 - '│ ⎩dtchd:[ d]║ sudo:◌ ║user:[ ]║awsp:[ ]║' # 9 - '╞══════╦═┊════════╬═══════════╣host:[ ]║shel:[ ] ║' # 10 - '│ RSH:◌║mux:◌ ║ RO:◌ ⎫╚══════════════════════╩══════════════════╣' # 11 - '│ X11:◌║err:[ ]║drstk:[ ]⎬·path:[ ]║' # 12 - '├──────╨──────────╨─────────────────────────────────────────────────────╨───────────┈' # 13 - ) - declare -A -g BOARD_LOC - BOARD_LOC["load"]="3 13 3" - BOARD_LOC["batt"]="4 13 3" - BOARD_LOC["temp"]="5 13 3" - - BOARD_LOC["suspd"]="7 13 3" - BOARD_LOC["bkgrd"]="8 13 3" - BOARD_LOC["dtchd"]="9 13 3" - - BOARD_LOC["RSH"]="11 6 1" - BOARD_LOC["X11"]="12 6 1" - - BOARD_LOC["mux"]="11 12 1" - BOARD_LOC["err"]="12 13 4" - - BOARD_LOC["VCS"]="1 20 3" - BOARD_LOC["diff"]="2 26 7" - BOARD_LOC["comit"]="3 26 7" - BOARD_LOC["stash"]="4 26 7" - BOARD_LOC["utrak"]="5 26 7" - BOARD_LOC["hdst"]="2 41 11" - BOARD_LOC["bkmk"]="3 41 11" - BOARD_LOC["vtag"]="4 41 11" - BOARD_LOC["brch"]="5 41 11" - - BOARD_LOC["name"]="7 37 15" - BOARD_LOC["rntm"]="8 37 15" - BOARD_LOC["user"]="9 37 15" - BOARD_LOC["host"]="10 37 15" - - BOARD_LOC["shlvl"]="7 26 3" - BOARD_LOC["proxy"]="8 25 1" - BOARD_LOC["sudo"]="9 25 1" - - BOARD_LOC["RO"]="11 25 1" - BOARD_LOC["drstk"]="12 26 2" - BOARD_LOC["path"]="12 37 33" - - BOARD_LOC["venv"]="2 60 11" - BOARD_LOC["node"]="3 60 11" - BOARD_LOC["ruby"]="4 60 11" - BOARD_LOC["kube"]="5 60 11" - BOARD_LOC["trfm"]="6 60 11" - BOARD_LOC["cont"]="7 60 11" - BOARD_LOC["scls"]="8 60 11" - BOARD_LOC["awsp"]="9 60 11" - BOARD_LOC["shel"]="10 60 4" - - BOARD_LOC["cmak"]="2 78 0" - - _lp_default_theme_activate -} - -_lp_board_theme_directory() { - _lp_default_theme_directory -} - -__lp_board_put() { - local what="$1" - local row col len - IFS=" " read -r row col len <<<"${BOARD_LOC[$2]}" - __lp_strip_escapes "$what" - local raw_data="$ret" - local data_len=${#ret} - local total_len=${#BOARD_TEMPLATE[$row]} - local prefix="${BOARD_CURRENT[$row]:0:$col}" - local iafter=$((col+data_len)) - local after_len=$((len-data_len)) - local spaces="${BOARD_TEMPLATE[$row]:iafter:after_len}" - local iend=$((iafter+after_len)) - local endlen=$((total_len-iend)) - local suffix="${BOARD_CURRENT[$row]:$iend:$endlen}" - BOARD_CURRENT[$row]="${prefix}${raw_data}${spaces}${suffix}" - # printf "prefix:{${prefix}}\nwhat:{${what}}\nspaces:{${spaces}}\nsuffix:{${suffix}}\n" -} - -_lp_board_theme_prompt() { - _lp_default_theme_prompt_data - - BOARD_CURRENT=("${BOARD_TEMPLATE[@]}") - __lp_board_put "$LP_PWD" "path" - __lp_board_put "$LP_PS1_PREFIX" "name" - - __lp_board_put "$LP_LOAD" "load" - __lp_board_put "$LP_BATT" "batt" - __lp_board_put "$LP_TEMP" "temp" - - # __lp_board_put "$LP_" "suspd" - # __lp_board_put "$LP_" "bkgrd" - # __lp_board_put "$LP_" "dtchd" - - # __lp_board_put "$LP_" "RSH" - # __lp_board_put "$LP_" "X11" - - # __lp_board_put "$LP_" "mux" - __lp_board_put "$LP_ERR" "err" - - # __lp_board_put "$LP_" "VCS" - # __lp_board_put "$LP_" "diff" - # __lp_board_put "$LP_" "comit" - # __lp_board_put "$LP_" "stash" - # __lp_board_put "$LP_" "utrak" - # __lp_board_put "$LP_" "hdst" - # __lp_board_put "$LP_" "bkmk" - # __lp_board_put "$LP_" "vtag" - # __lp_board_put "$LP_" "brch" - - __lp_board_put "$LP_PS1_PREFIX" "name" - __lp_board_put "$LP_RUNTIME" "rntm" - __lp_board_put "$LP_USER" "user" - __lp_board_put "$LP_HOST" "host" - - __lp_board_put "$LP_SHLVL" "shlvl" - __lp_board_put "$LP_PROXY" "proxy" - # __lp_board_put "$LP_" "sudo" - - # __lp_board_put "$LP_" "RO" - __lp_board_put "$LP_DIRSTACK" "drstk" - __lp_board_put "$LP_PWD" "path" - - __lp_board_put "$LP_VENV" "venv" - __lp_board_put "$LP_NODE_VENV" "node" - __lp_board_put "$LP_RUBY_VENV" "ruby" - __lp_board_put "$LP_KUBECONTEXT" "kube" - __lp_board_put "$LP_TFSPACE" "trfm" - __lp_board_put "$LP_CONTAINER" "cont" - __lp_board_put "$LP_SCLS" "scls" - __lp_board_put "$LP_AWS_PROFILE" "awsp" - # __lp_board_put "$LP_" "shel" - - __lp_board_put "$LP_CMAKE" "cmak" - - local n=$'\n' - PS1= - for line in "${BOARD_CURRENT[@]}"; do - PS1+="$line${n}" - done - PS1+='└ ' -} - - diff --git a/solid.theme b/solid.theme new file mode 100644 index 0000000..204bef8 --- /dev/null +++ b/solid.theme @@ -0,0 +1,565 @@ +_lp_solid_theme_activate() { + + local lp_terminal_format + lp_terminal_format 63 -1 0 0 4 0 + SP_COLOR_BASE="$lp_terminal_format" + + lp_terminal_format 30 -1 0 0 6 0 + SP_COLOR_NOTE="$lp_terminal_format" + + lp_terminal_format 214 -1 0 0 11 0 + SP_COLOR_WARN="$lp_terminal_format" + + SP_MARK_HIDDEN="/" #·▨■✗✘✕✖X/░╱╳ + + LP_COLOR_PATH="$SP_COLOR_NOTE" + LP_COLOR_PATH_LAST_DIR="$SP_COLOR_WARN" + LP_COLOR_PATH_VCS_ROOT="$SP_COLOR_WARN" + LP_COLOR_PATH_SHORTENED="$SP_COLOR_BASE" + LP_COLOR_PATH_SEPARATOR="$SP_COLOR_BASE" + + #0 5 10 15 20 25 30 35 40 45 50 55 60 65 70 75 80 85 + #|····|····|····|····|····|····|····|····|····|····|····|····|····|····|····|····|····| + readonly BOARD_TEMPLATE=( + '┌────┐ ┌───┐' # 0 + '│v2.2│ ╓┘ └─────────────────────────────╥──────────────────╥───────────┄·' # 1 + '├────┴────────────╢ diff:[ ] hdst:[ ]║pyev:[ ]║cmak:' # 2 + '│ ⎧ load:[ ]║comit:[ ] bkmk:[ ]║node:[ ]║' # 3 + '│snsr⎨ batt:[ ]║stash:[ ] vers:[ ]║ruby:[ ]║' # 4 + '│ ⎩ temp:[ ]║utrak:[ ] brch:[ ]║kube:[ ]║' # 5 + '╞═════════════════╬═══════════╦══════════════════════╣trfm:[ ]║' # 6 + '│ ⎧suspd:[ ]║shlvl:[ ]║ptag:[ ]║cont:[ ]║' # 7 + '│jobs⎨bkgrd:[ ]║proxy:◌ ║rntm:[ ]║scls:[ ]║' # 8 + '│ ⎩dtchd:[ ]║mux:◌ su:◌║user:[ ]║awsp:[ ]║' # 9 + '╞══════╦══════════╩═══════════╣host:[ ]║shel:[ ] ║' # 10 + '│RSH:◌ ║error:[ ] sudo:◌ ╚══════════════════════╩══════════════════╣' # 11 + '│X11:◌ ║drstk:[ ] path:[ ] RO:◌ chroot:◌║' # 12 + '├──────╨────────────────────────────────────────────────────────────────╨───────────┄·' # 13 + #|····|····|····|····|····|····|····|····|····|····|····|····|····|····|····|····|····| + #0 5 10 15 20 25 30 35 40 45 50 55 60 65 70 75 80 85 + ) + + declare -A -g BOARD_LOC + BOARD_LOC["load"]="3 13 4" + BOARD_LOC["batt"]="4 13 4" + BOARD_LOC["temp"]="5 13 4" + + BOARD_LOC["suspd"]="7 13 3" + BOARD_LOC["bkgrd"]="8 13 3" + BOARD_LOC["dtchd"]="9 13 3" + + BOARD_LOC["RSH"]="11 5 1" + BOARD_LOC["X11"]="12 5 1" + + BOARD_LOC["mux"]="9 23 1" + BOARD_LOC["su"]="9 29 1" + BOARD_LOC["proxy"]="8 25 1" + + BOARD_LOC["VCS"]="1 20 3" + BOARD_LOC["diff"]="2 26 7" + BOARD_LOC["comit"]="3 26 7" + BOARD_LOC["stash"]="4 26 7" + BOARD_LOC["utrak"]="5 26 7" + BOARD_LOC["hdst"]="2 41 11" + BOARD_LOC["bkmk"]="3 41 11" + BOARD_LOC["vers"]="4 41 11" + BOARD_LOC["brch"]="5 41 11" + + BOARD_LOC["ptag"]="7 37 15" + BOARD_LOC["rntm"]="8 37 15" + BOARD_LOC["user"]="9 37 15" + BOARD_LOC["host"]="10 37 15" + + BOARD_LOC["shlvl"]="7 26 3" + BOARD_LOC["error"]="11 15 3" + BOARD_LOC["sudo"]="11 25 1" + + BOARD_LOC["RO"]="12 62 1" + BOARD_LOC["drstk"]="12 15 3" + LP_PATH_LENGTH=30 + BOARD_LOC["path"]="12 26 $LP_PATH_LENGTH" + BOARD_LOC["chroot"]="12 71 1" + + BOARD_LOC["pyev"]="2 60 11" + BOARD_LOC["node"]="3 60 11" + BOARD_LOC["ruby"]="4 60 11" + BOARD_LOC["kube"]="5 60 11" + BOARD_LOC["trfm"]="6 60 11" + BOARD_LOC["cont"]="7 60 11" + BOARD_LOC["scls"]="8 60 11" + BOARD_LOC["awsp"]="9 60 11" + BOARD_LOC["shel"]="10 60 4" + + BOARD_LOC["cmak"]="2 78 0" + + _lp_default_theme_activate +} + +_lp_solid_theme_directory() { + _lp_default_theme_directory +} + +__lp_board_put() { + # WARNING: this should be called on fields ordered from left to right in the board order. + local what="$1" + [[ -n "$what" ]] || return 1 + local field="$2" + [[ -n "$field" ]] || return 1 + local color="${3-}" + + # raw_col raw_after + # │ │ + #| inprefix:[1] | field:[raw_data ] | + #└──────────┬───────────┘└──┬───┘ + # raw_prefix_len raw_data_len + # └─────┬─────┘ + # raw_field_len + # └───┬──┘ + # raw_suffix_len + #└──────────────────┬───────────────────┘ + # raw_total_len + # + # delta col after + # ┌─┬──┬─┐ │ │ + #| inprefix:[\[\]1\[\]] | field:[\[\]raw_data\[\] ] | + #└───────────────┬──────────────┘└──────┬───────┘ + # prefix_len data_len + + # Read field's parameters. + local row raw_col raw_field_len + IFS=" " read -r row raw_col raw_field_len <<<"${BOARD_LOC[$field]}" + + # Remove any invisible characters (colors), + # to get a visible length. + __lp_strip_escapes "$what" + local raw_data="$ret" + local raw_data_len=${#ret} + local data="$what" + local data_len=${#data} + + # Replace any single character with the boolean mark. + if [[ "$raw_data" == "$SP_MARK_HIDDEN" ]]; then + local i + data="$SP_MARK_HIDDEN" + for (( i=1; i < raw_field_len; i++ )) ; do + data+="$SP_MARK_HIDDEN" + done + data_len=$raw_field_len + raw_data="$data" + raw_data_len=$data_len + elif [[ $raw_field_len -eq 1 ]]; then #|| $raw_data_len -eq 1 ]]; then + if [[ $raw_data != 0 && "$raw_data" != " " ]]; then + data="●" + data_len=1 + raw_data="$data" + raw_data_len=1 + fi + fi + # If the data is too large to fit the field. + if [[ $raw_field_len -ne 0 && $raw_data_len -gt $raw_field_len ]]; then + # Shorten to fit the field. + raw_data="${raw_data:0:$((raw_field_len-1))}…" + raw_data_len="$raw_field_len" + data="$raw_data" # FIXME this remove any color. + data_len="$raw_data_len" + fi + + local raw_total_len=${#BOARD_TEMPLATE[$row]} + + local delta=${BOARD_DELTA[$row]} + # local col=$((raw_col+delta)) + local raw_prefix_len=$raw_col + + local prefix_len=$((raw_prefix_len+delta)) + + local raw_after=$((raw_prefix_len+raw_data_len)) + # local after=$((prefix_len+data_len)) + + local raw_suffix_len=$((raw_total_len-raw_after)) + + local prefix="${BOARD_CURRENT[$row]:0:prefix_len}" + local suffix="${BOARD_TEMPLATE[$row]:raw_after:raw_suffix_len}" + local line="${prefix}${color}${data}${SP_COLOR_BASE}${suffix}" + BOARD_CURRENT[$row]="$line" + + # printf "##### $field: #####\n" + # printf "prefix«${prefix}»\ndelta«$delta»\ndata«${data}»\nsuffix«${suffix}»\n\n" + + local color_shift=$((data_len-raw_data_len+${#color}+${#SP_COLOR_BASE})) + BOARD_DELTA[$row]=$((delta+color_shift)) +} + +_lp_solid_theme_prompt() { + local color + + _lp_default_theme_prompt_data + + # Copy a fresh template. + BOARD_CURRENT=("${BOARD_TEMPLATE[@]}") + + BOARD_DELTA=( + 0 # 0 + 0 # 1 + 0 # 2 + 0 # 3 + 0 # 4 + 0 # 5 + 0 # 6 + 0 # 7 + 0 # 8 + 0 # 9 + 0 # 10 + 0 # 11 + 0 # 12 + 0 # 13 + ) + + # Prompt line # 0 : no data + + # Prompt line # 1 + if ! _lp_are_vcs_enabled; then + __lp_board_put "$SP_MARK_HIDDEN" "VCS" "$SP_COLOR_BASE" + else + _lp_find_vcs + local found_vcs="$?" + if [[ $found_vcs -eq 0 ]]; then + __lp_board_put "$lp_vcs_type" "VCS" "$SP_COLOR_NOTE" + + # Prompt line # 2 + if _lp_vcs_uncommitted_files; then + local ret has_lines= + _lp_vcs_unstaged_lines; ret=$? + # Only show unstaged changes if the VCS supports staging, otherwise + # show uncommitted changes + if (( ret == 0 )); then + has_lines="+$lp_vcs_unstaged_i_lines/-$lp_vcs_unstaged_d_lines" + elif (( ret == 1 )); then + has_lines="+0/-0" + else + _lp_vcs_uncommitted_lines + has_lines="+$lp_vcs_uncommitted_i_lines/-$lp_vcs_uncommitted_d_lines" + fi + __lp_board_put "$has_lines" "diff" "$SP_COLOR_NOTE" + fi + + if _lp_vcs_head_status; then + __lp_board_put "$lp_vcs_head_status" "hdst" "$SP_COLOR_NOTE" + # TODO lp_vcs_head_details + fi + fi + fi + + if (( LP_ENABLE_VIRTUALENV )); then + if _lp_python_env; then + __lp_board_put "$lp_python_env" "pyev" "$SP_COLOR_NOTE" + fi + else + __lp_board_put "$SP_MARK_HIDDEN" "pyev" "$SP_COLOR_BASE" + fi + + 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 # 3 + if (( LP_ENABLE_LOAD )); then + if _lp_load; then + color="$SP_COLOR_NOTE" + else + color="$SP_COLOR_BASE" + fi + __lp_board_put "${lp_load_adjusted}${NO_COL}" "load" "$color" + else + __lp_board_put "$SP_MARK_HIDDEN" "load" "$SP_COLOR_BASE" + fi + + if ! _lp_are_vcs_enabled; then + __lp_board_put "$SP_MARK_HIDDEN" "bkmk" "$SP_COLOR_BASE" + else + if [[ $found_vcs -eq 0 ]]; then + if _lp_vcs_commits_off_remote; then + local has_commit= + if [[ "$lp_vcs_commit_ahead" -ne "0" && "$lp_vcs_commit_behind" -ne "0" ]]; then + has_commit="${LP_COLOR_COMMITS}+$lp_vcs_commit_ahead${NO_COL}/${LP_COLOR_COMMITS_BEHIND}-$lp_vcs_commit_behind${NO_COL}" + elif [[ "$lp_vcs_commit_ahead" -ne "0" ]]; then + has_commit="${LP_COLOR_COMMITS}$lp_vcs_commit_ahead${NO_COL}" + elif [[ "$lp_vcs_commit_behind" -ne "0" ]]; then + has_commit="${LP_COLOR_COMMITS_BEHIND}-$lp_vcs_commit_behind${NO_COL}" + fi + __lp_board_put "$has_commit" "comit" "$SP_COLOR_NOTE" + fi + + if _lp_vcs_bookmark; then + __lp_board_put "$lp_vcs_bookmark" "bkmk" "$SP_COLOR_NOTE" + fi + fi + fi + + if (( LP_ENABLE_NODE_VENV )); then + __lp_board_put "$LP_NODE_VENV" "node" "$SP_COLOR_NOTE" + else + __lp_board_put "$SP_MARK_HIDDEN" "node" "$SP_COLOR_BASE" + fi + + # Prompt line # 4 + if (( LP_ENABLE_BATT )); then + if _lp_battery; then + color="$SP_COLOR_NOTE" + else + color="$SP_COLOR_BASE" + fi + __lp_board_put "$lp_battery%" "batt" "$color" + # __lp_board_put "$lp_battery" "batt" "$color" + else + __lp_board_put "$SP_MARK_HIDDEN" "batt" "$SP_COLOR_BASE" + fi + + if ! _lp_are_vcs_enabled; then + __lp_board_put "$SP_MARK_HIDDEN" "vers" "$SP_COLOR_BASE" + else + if [[ $found_vcs -eq 0 ]]; then + if _lp_vcs_stash_count; then + __lp_board_put "$lp_vcs_stash_count" "stash" "$SP_COLOR_NOTE" + fi + + if _lp_vcs_tag; then + __lp_board_put "$lp_vcs_tag" "vers" "$SP_COLOR_NOTE" + else + _lp_vcs_commit_id + __lp_board_put "$lp_vcs_commit_id" "vers" "$SP_COLOR_NOTE" + fi + fi + fi + + if (( LP_ENABLE_RUBY_VENV )); then + __lp_board_put "$LP_RUBY_VENV" "ruby" "$SP_COLOR_NOTE" + else + __lp_board_put "$SP_MARK_HIDDEN" "ruby" "$SP_COLOR_BASE" + fi + + # Prompt line # 5 + if (( LP_ENABLE_TEMP )); then + if _lp_temperature; then + color="$SP_COLOR_NOTE" + else + color="$SP_COLOR_BASE" + fi + __lp_board_put "$lp_temperature°" "temp" "$color" + else + __lp_board_put "$SP_MARK_HIDDEN" "temp" "$SP_COLOR_BASE" + fi + + if ! _lp_are_vcs_enabled; then + __lp_board_put "$SP_MARK_HIDDEN" "brch" "$SP_COLOR_BASE" + else + if [[ $found_vcs -eq 0 ]]; then + if _lp_vcs_untracked_files; then + __lp_board_put "$lp_vcs_untracked_files" "utrak" "$SP_COLOR_NOTE" + fi + if _lp_vcs_branch; then + __lp_board_put "$lp_vcs_branch" "brch" "$SP_COLOR_NOTE" + fi + fi + fi + + if (( LP_ENABLE_KUBECONTEXT )); then + __lp_board_put "$LP_KUBECONTEXT" "kube" "$SP_COLOR_NOTE" + else + __lp_board_put "$SP_MARK_HIDDEN" "kube" "$SP_COLOR_BASE" + fi + + # Prompt line # 6 + if (( LP_ENABLE_TERRAFORM )); then + __lp_board_put "$LP_TFSPACE" "trfm" "$SP_COLOR_NOTE" + else + __lp_board_put "$SP_MARK_HIDDEN" "trfm" "$SP_COLOR_BASE" + fi + + # Prompt line # 7 + if (( LP_ENABLE_JOBS )); then + _lp_jobcount + if [[ $lp_stopped_jobs -gt 0 ]]; then + color="$SP_COLOR_NOTE" + else + color="$SP_COLOR_BASE" + fi + __lp_board_put "$lp_stopped_jobs" "suspd" "$color" + else + __lp_board_put "$SP_MARK_HIDDEN" "suspd" "$SP_COLOR_BASE" + fi + + if (( LP_ENABLE_SHLVL )); then + if _lp_shell_level; then + color="$SP_COLOR_NOTE" + else + color="$SP_COLOR_BASE" + fi + __lp_board_put "$lp_shell_level" "shlvl" "$color" + else + __lp_board_put "$SP_MARK_HIDDEN" "shlvl" "$SP_COLOR_BASE" + fi + + __lp_board_put "$LP_PS1_PREFIX" "ptag" "$SP_COLOR_NOTE" + + 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_JOBS )); then + if [[ $lp_running_jobs -gt 0 ]]; then + color="$SP_COLOR_NOTE" + else + color="$SP_COLOR_BASE" + fi + __lp_board_put "$lp_running_jobs" "bkgrd" "$color" + 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 + + if (( LP_ENABLE_RUNTIME )); then + __lp_board_put "$LP_RUNTIME" "rntm" "$SP_COLOR_NOTE" + else + __lp_board_put "$SP_MARK_HIDDEN" "rntm" "$SP_COLOR_BASE" + fi + + if (( LP_ENABLE_SCLS )); then + __lp_board_put "$LP_SCLS" "scls" "$SP_COLOR_NOTE" + else + __lp_board_put "$SP_MARK_HIDDEN" "scls" "$SP_COLOR_BASE" + fi + + # Prompt line # 9 + if (( LP_ENABLE_DETACHED_SESSIONS )); then + _lp_detached_sessions + if [[ $lp_detached_sessions -gt 0 ]]; then + color="$SP_COLOR_NOTE" + else + color="$SP_COLOR_BASE" + fi + __lp_board_put "$lp_detached_sessions" "dtchd" "$color" + fi + + if (( _LP_ENABLE_TMUX )); then + if _lp_multiplexer; then + __lp_board_put "$lp_multiplexer" "mux" "$SP_COLOR_NOTE" + fi + else + __lp_board_put "$SP_MARK_HIDDEN" "mux" "$SP_COLOR_BASE" + 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. + __lp_board_put "$lp_hostname" "host" "$SP_COLOR_NOTE" + else + __lp_board_put "$SP_MARK_HIDDEN" "host" "$SP_COLOR_BASE" + fi + + if ((LP_SHELL_zsh)); then + __lp_board_put "zsh" "shel" "$SP_COLOR_NOTE" + else + __lp_board_put "bash" "shel" "$SP_COLOR_NOTE" + fi + + # Prompt line #11 + if _lp_hostname; then # FIXME alredy called for line 9. + case "$lp_connection" in + ssh) + __lp_board_put "1" "RSH" "$SP_COLOR_NOTE" + ;; + #su) # TODO + # ;; + tel) + __lp_board_put "1" "RSH" "$SP_COLOR_WARN" + ;; + esac + fi + + if (( LP_ENABLE_ERROR )); then + __lp_board_put "$LP_ERR" "err" "$SP_COLOR_NOTE" + else + __lp_board_put "$SP_MARK_HIDDEN" "err" "$SP_COLOR_BASE" + 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 + + # Prompt line #12 + # TODO add LP_ENABLE_DISPLAY in Liquid Prompt + if _lp_connected_display; then + __lp_board_put "$LP_" "X11" "$SP_COLOR_NOTE" + fi + + if (( LP_ENABLE_DIRSTACK )); then + if _lp_dirstack; then + __lp_board_put "$lp_dirstack" "drstk" "$SP_COLOR_NOTE" + fi + else + __lp_board_put "$SP_MARK_HIDDEN" "FIXME" "$SP_COLOR_BASE" + fi + + __lp_board_put "$LP_PWD" "path" # No forced color, already set as global config. + + if [[ ! -w "${PWD}" ]]; then + __lp_board_put "1" "RO" "$SP_COLOR_WARN" + fi + + # TODO add LP_ENABLE_CHROOT in Liquid Prompt + if _lp_chroot; then + __lp_board_put "1" "chroot" "$SP_COLOR_WARN" + fi + + # Prompt line #13 : no data + + local n=$'\n' + PS1="$n" + for line in "${BOARD_CURRENT[@]}"; do + PS1+="${SP_COLOR_BASE}${line}${n}" + done + PS1+="└ ${NO_COL}" +} + +