lp-solid/board.theme
2022-10-20 22:12:58 +02:00

160 lines
6.2 KiB
Text

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