#!/data/data/com.termux/files/usr/bin/bash
# btop: memory, swap and disk as btop style bars.
# Android does not let apps read cpu load, so there is no cpu bar.
# termux.zanoski.com/widgets
e=$'\e'; R="${e}[0m"
bar() { local n=$(( $1 * $2 / 100 )) s="" i
  for ((i = 0; i < $2; i++)); do if [ $i -lt $n ]; then s+="█"; else s+="░"; fi; done
  printf "%s%s%s" "${e}[$3m" "$s" "$R"; }
m() { awk -v k="$1:" '$1 == k {print $2}' /proc/meminfo; }
mt=$(m MemTotal); ma=$(m MemAvailable); st=$(m SwapTotal); sf=$(m SwapFree)
mem=$(( (mt - ma) * 100 / mt )); swap=$(( st > 0 ? (st - sf) * 100 / st : 0 ))
disk=$(df /data 2>/dev/null | awk 'NR==2{gsub("%", "", $5); print $5}'); disk=${disk:-0}
printf "${e}[1mmem ${R} %3s%% " $mem; bar $mem 16 32; echo
printf "${e}[1mswap${R} %3s%% " $swap; bar $swap 16 33; echo
printf "${e}[1mdisk${R} %3s%% " $disk; bar $disk 16 35; echo
echo "${e}[90m$(nproc) cores · $(( mt / 1024 )) MiB ram$R"
