_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+='└ ' }