#!/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