_lp_solid_theme_activate() { if ! _lp_version_greatereq 2 2 0 ; then _lp_join "." ${_LP_VERSION[@]} printf "WARNING: the Solid theme requires Liquid Prompt >= 2.2.0, but you have version $lp_join, some features will not work and the prompt may crash.\n" fi 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=( '┌────────────────┐┌──────────────────────────────────┐ SOLID PROMPT ┌─────┐' # 0 '│2.2.0 vs [ ]││ VCS:[ ] remt:[ ]├──────────────────╥┘ OS:◌└────┄·' # 1 '├────────────────┴┤ diff:[ ] hdst:[ ]║pyev:[ ]║krnl:' # 2 '│ ⎧load:[ ]║comit:[ ] bkmk:[ ]║node:[ ]║fmly:' # 3 '│ ⎪mram:[ ]║stash:[ ] vers:[ ]║ruby:[ ]║dstr:' # 4 '│snsr⎨batt:[ ]║utrak:[ ] brch:[ ]║kube:[ ]║vers:' # 5 '│ ⎪disk:[ ]╠══════════════════════════════════╣trfm:[ ]║arch:' # 6 '│ ⎩temp:[ ]║X11:◌ su:◌ sudo:◌ proxy:◌ chroot:◌║cont:[ ]╚═══════════┄·' # 7 '╞═════════════════╬═══════════╦══════════════════════╣awsp:[ ] modl:' # 8 '│ ⎧suspd:[ ]║shlvl:[ ]║ptag:[ ]║scls:[ ] envv:' # 9 '│jobs⎨bkgrd:[ ]║ RSH:◌ ║user:[ ]║shel:[ ]╔═════╗ cmak:' # 10 '│ ⎩dtchd:[ ]║ mux:◌ ║host:[ ]╠═══════════╝ RO:◌╚╦═══════════┄·' # 11 '╞═════════════════╩═══════════╩══════════════════════╝rntm:[ ]║erro:[ ]' # 12 '│drstk:[ ] path:[ ]║emng:' # 13 '├───────────────────────────────────────────────────────────────────────╨───────────┄·' # 14 #|····|····|····|····|····|····|····|····|····|····|····|····|····|····|····|····|····| #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["lp_version"]="1 11 5" BOARD_LOC["load"]="3 12 5" BOARD_LOC["mram"]="4 12 5" BOARD_LOC["batt"]="5 12 5" BOARD_LOC["disk"]="6 12 5" BOARD_LOC["temp"]="7 12 5" BOARD_LOC["suspd"]="9 13 4" BOARD_LOC["bkgrd"]="10 13 4" BOARD_LOC["dtchd"]="11 13 4" BOARD_LOC["shlvl"]="9 26 3" BOARD_LOC["RSH"]="10 25 1" BOARD_LOC["mux"]="11 25 1" 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["comit"]="3 26 7" BOARD_LOC["stash"]="4 26 7" BOARD_LOC["utrak"]="5 26 7" BOARD_LOC["remt"]="1 41 11" 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"]="9 37 15" BOARD_LOC["user"]="10 37 15" BOARD_LOC["host"]="11 37 15" BOARD_LOC["rntm"]="12 60 11" BOARD_LOC["RO"]="11 70 1" BOARD_LOC["drstk"]="13 15 3" LP_PATH_LENGTH=51 BOARD_LOC["path"]="13 19 $LP_PATH_LENGTH" 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["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_solid_theme_directory() { _lp_default_theme_directory } __lp_board_put() { # what field color # 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-}" # printf "\n##### ${field} #####\n" # __lp_escape "$what" # local ewhat="$ret" # # printf "ewhat:«%s${NO_COL}»\n" "$ewhat" # # printf "ewhat:«%q»\n" "$ewhat" # 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"]}" if (( _LP_SHELL_zsh )); then # 1-indexing row=$((row+1)) raw_col=$((raw_col+1)) fi # Remove any invisible characters (colors), # to get a visible length. __lp_strip_escapes "$what" local raw_data="$ret" # printf "ZERO raw_data:«%s»\n" "${raw_data}" # printf "ZERO raw_data:«%q»\n" "${raw_data}" local raw_data_len=${#raw_data} # __lp_escape "$what" # local data="$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" if [[ $raw_field_len -eq 0 ]]; then data="$SP_MARK_HIDDEN" else for (( i=1; i < raw_field_len; i++ )) ; do data+="$SP_MARK_HIDDEN" done fi data_len=$raw_field_len raw_data="$data" raw_data_len=$data_len elif [[ $raw_field_len -eq 1 ]]; then if [[ $raw_data != 0 && "$raw_data" != " " ]]; then data="●" data_len=1 raw_data="$data" raw_data_len=1 fi fi # printf "FIRST raw_data:«${raw_data}»\n" # printf "$raw_field_len -ne 0 && $raw_data_len -gt $raw_field_len\n" # If the data is too large to fit the field. if [[ $raw_field_len -ne 0 && $raw_data_len -gt $raw_field_len ]]; then if (( _LP_SHELL_zsh )); then #Here, raw_field_len == 1+raw_field_len-1 raw_data="${raw_data[1,raw_field_len]}…" else # Shorten to fit the field. raw_data="${raw_data:0:$((raw_field_len-1))}…" fi raw_data_len="$raw_field_len" data="$raw_data" # FIXME this remove any color. data_len="$raw_data_len" fi # printf "SECOND raw_data:«${raw_data}»\n" 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)) if (( _LP_SHELL_zsh )); then local prefix="${BOARD_CURRENT[$row][1,prefix_len-1]}" local suffix="${BOARD_TEMPLATE[$row][raw_after,raw_after+raw_suffix_len]}" else local prefix="${BOARD_CURRENT[$row]:0:prefix_len}" local suffix="${BOARD_TEMPLATE[$row]:raw_after:raw_suffix_len}" fi # printf "what:«${what}»\nraw_data:«${raw_data}»\n" # printf "prefix:«${prefix}\ncolor:«${color}color»\ndata:«${data}»\nsuffix:«${suffix}»\n" local line="${prefix}${color}${data}${SP_COLOR_BASE}${suffix}" BOARD_CURRENT[$row]="$line" local color_shift=$((data_len-raw_data_len+${#color}+${#SP_COLOR_BASE})) BOARD_DELTA[$row]=$((delta+color_shift)) } # __sp_strip_escapes() { # if ! shopt -q extglob ; then # local _lp_no_extglob=true # shopt -s extglob # fi # ret="${1//"${_LP_OPEN_ESC}"!(*"${_LP_CLOSE_ESC}"*)"${_LP_CLOSE_ESC}"}" # if [[ -n ${_lp_no_extglob-} ]]; then # shopt -u extglob # fi # ret="${ret//\\\\/\\}" # if shopt -q promptvars ; then # ret="${ret//\\\$/\$}" # ret="${ret//\\\`/\`}" # fi # } _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_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 __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" 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 if _lp_are_vcs_enabled; then _lp_find_vcs local found_vcs="$?" if [[ $found_vcs -eq 0 ]]; then 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_OS )); then _lp_os # No need to call it later again. if (( LP_ENABLE_OS_KERNEL )); then __lp_board_put "$lp_os_kernel" "krnl" "$SP_COLOR_NOTE" else __lp_board_put "$SP_MARK_HIDDEN" "krnl" "$SP_COLOR_BASE" fi else __lp_board_put "$SP_MARK_HIDDEN" "krnl" "$SP_COLOR_BASE" fi # Prompt line #3 if (( LP_ENABLE_LOAD )); then if _lp_load; then color="$SP_COLOR_WARN" else color="$SP_COLOR_NOTE" fi __lp_board_put "${lp_load_adjusted}" "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}" has_commit="+$lp_vcs_commit_ahead/-$lp_vcs_commit_behind" elif [[ "$lp_vcs_commit_ahead" -ne "0" ]]; then # has_commit="${LP_COLOR_COMMITS}$lp_vcs_commit_ahead${NO_COL}" has_commit="$lp_vcs_commit_ahead" elif [[ "$lp_vcs_commit_behind" -ne "0" ]]; then # has_commit="${LP_COLOR_COMMITS_BEHIND}-$lp_vcs_commit_behind${NO_COL}" has_commit="-$lp_vcs_commit_behind" 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 if (( LP_ENABLE_OS )); then if (( LP_ENABLE_OS_FAMILY )); then __lp_board_put "$lp_os_family" "fmly" "$SP_COLOR_NOTE" else __lp_board_put "$SP_MARK_HIDDEN" "fmly" "$SP_COLOR_BASE" fi else __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 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_branch; then 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 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 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 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" else # discharging and under threshold sp_batt="↓${lp_battery}" color="$SP_COLOR_WARN" fi __lp_board_put "${sp_batt}${_LP_PERCENT}" "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" "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 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 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 __lp_board_put "$LP_TFSPACE" "trfm" "$SP_COLOR_NOTE" else __lp_board_put "$SP_MARK_HIDDEN" "trfm" "$SP_COLOR_BASE" 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 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 _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_SCLS )); then __lp_board_put "$LP_SCLS" "scls" "$SP_COLOR_NOTE" else __lp_board_put "$SP_MARK_HIDDEN" "scls" "$SP_COLOR_BASE" fi 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_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_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_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_SHELL_zsh)); then __lp_board_put "zsh" "shel" "$SP_COLOR_NOTE" else __lp_board_put "bash" "shel" "$SP_COLOR_NOTE" 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 #11 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" else __lp_board_put "$SP_MARK_HIDDEN" "dtchd" "$SP_COLOR_BASE" fi # TODO: add LP_ENABLE_TMUX todo Liquid Prompt if _lp_multiplexer; then __lp_board_put "$lp_multiplexer" "mux" "$SP_COLOR_NOTE" fi 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 [[ ! -w "${PWD}" ]]; then __lp_board_put "1" "RO" "$SP_COLOR_WARN" fi # Prompt line #12 if (( LP_ENABLE_RUNTIME )); then if _lp_runtime_format; then local color="$SP_COLOR_NOTE" if (( _LP_RUNTIME_SECONDS >= LP_RUNTIME_THRESHOLD )); then color="$SP_COLOR_WARN" fi __lp_board_put "$lp_runtime_format" "rntm" "$color" fi else __lp_board_put "$SP_MARK_HIDDEN" "rntm" "$SP_COLOR_BASE" fi if (( LP_ENABLE_ERROR )); then if _lp_error; then __lp_board_put "$lp_error" "error" "$SP_COLOR_NOTE" fi else __lp_board_put "$SP_MARK_HIDDEN" "error" "$SP_COLOR_BASE" fi # Prompt line #13 : no data 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" "drstk" "$SP_COLOR_BASE" fi # local lp_path_format # _lp_path_format "$LP_COLOR_PATH" "$LP_COLOR_PATH_LAST_DIR" "$LP_COLOR_PATH_VCS_ROOT" "$LP_COLOR_PATH_SHORTENED" "/" "$LP_COLOR_PATH_SEPARATOR" # __sp_strip_escapes "$lp_path_format" # __lp_board_put "<$ret>" "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. if (( LP_ENABLE_ERROR )); then 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 else __lp_board_put "$SP_MARK_HIDDEN" "emng" "$SP_COLOR_BASE" fi else __lp_board_put "$SP_MARK_HIDDEN" "emng" "$SP_COLOR_BASE" fi local n=$'\n' PS1="$n" for line in "${BOARD_CURRENT[@]}"; do PS1+="${SP_COLOR_BASE}${line}${n}" done PS1+="└ ${NO_COL}" }