#!/bin/sh
DEFAULT_COLOR="#cccccc"
STATUS_WELL_COLOR="#31f53e"
STATUS_OK_COLOR="#f58c31"
STATUS_UNWELL_COLOR="#f53131"
BATTERY_NAME="BAT1"
BATTERY_EMPTY_THRESHOLD=20
BATTERY_FULL_THRESHOLD=80
WIFI_ADAPTER="wlan0"
DISK_ICON_COLOR="#48a3e8"
NOW_PLAYING_COLOR="#e647a1"
NOW_PLAYING_STATE_COLOR="#ccca4e"
readable_kib() {
data="${1:-}"
decimals="${2:-}"
[ -z "$data" ] || [ -z "$decimals" ] && exit
if [ "$data" -lt 1024 ]; then
amt="$1"
letter="K"
elif [ "$data" -lt 1048576 ]; then
amt="$(($1 / 1024))"
letter="M"
else
amt="$(($1 / 1048576))"
letter="G"
fi
printf "%.*f%s\n" "$decimals" "$amt" "$letter"
}
replace_substring() {
original="${1:-}"
pattern="${2:-}"
replacement="${3:-}"
[ -z "$original" ] || [ -z "$pattern" ] && exit
new="$original"
while :; do
case "$original" in
*"$pattern"*)
before_pattern="${original%%"$pattern"*}"
after_pattern="${original#*"$pattern"}"
new="$before_pattern$replacement$after_pattern"
;;
*) break ;;
esac
done
printf '%s\n' "$new"
}
monitor_battery() {
read -r capacity %s%% (%s)\n' "$icon" "$color" "$capacity" "$status"
}
monitor_cpu() {
while read -r _ user _ system idle _; do
initial_user_sys="$((user + system))"
initial_total="$((user + system + idle))"
break
done %i%%)\n' "$temp" "$color" "$usage_percent"
else
printf '%i%%\n' "$color" "$usage_percent"
fi
}
monitor_load() {
while read -r one five fifteen _; do
load_one="$one"
load_five="$five"
load_fifteen="$fifteen"
done %s %s %s\n' "$load_one_color" "$load_one" "$load_five_color" "$load_five" "$load_fifteen_color" "$load_fifteen"
}
monitor_memory() {
while read -r label size _; do
case "$label" in
"MemTotal:") total_mem="$size" ;;
"MemAvailable:") free_mem="$size" ;;
esac
done %s%%)\n' "$(readable_kib "$used_mem" 1)" "$color" "$usage_percent"
}
monitor_ssid() {
while read -r line; do
case $line in
*"Connected network"*) ssid="$line" ;;
esac
done <%s %s/%s (%s%%)\n' "$DISK_ICON_COLOR" "$icon" "$(readable_kib "$used_amt" 0)" "$(readable_kib "$size_amt" 0)" "$STATUS_WELL_COLOR" "$((used_amt * 100 / size_amt))"
}
monitor_now_playing() {
mpc_output="$(mpc)"
while read -r line; do
now_playing="$line"
break
done <%s [%s]\n' "$NOW_PLAYING_COLOR" "$now_playing" "$NOW_PLAYING_STATE_COLOR" "$play_state"
}
if command -v monitor_"$1" >/dev/null 2>&1; then
"monitor_$1" "$@"
else
exit 1
fi