#!/bin/sh
# see sway-bar(5) and swaybar-protocol(7)
-KILO=1000
COL_WHITE=ffffff
+COL_RED=ff0000
COL_YELLOW=ffff00
COL_GREEN=00ff00
COL_GREY=aaaaaa
-
-BAT_DIR=/sys/class/power_supply/BAT0
+SYSCLASS_DIR=/sys/class
print_bar_element() {
- printf '{"full_text": "%s", "separator_block_width": %d, "color": "%s"},\n' "$1" "$2" "$3"
+ if [ -z "$3" ]; then
+ SEP_WIDTH=20
+ else
+ SEP_WIDTH="$3"
+ fi
+ if [ -z "$2" ]; then
+ COLOR="${COL_WHITE}"
+ else
+ COLOR="$2"
+ fi
+ printf '{"full_text": "%s", ' "$1"
+ printf '"color": "%s", ', "${COLOR}"
+ printf '"separator_block_width": %d},\n' "${SEP_WIDTH}"
}
print_online() {
- print_bar_element "$(ip -4 addr show scope global | grep -oP '(?<=inet\s)\d+(\.\d+){3}')" 20 "${COL_WHITE}"
+ print_bar_element "$(ip -4 addr show scope global | grep -oP '(?<=inet\s)\d+(\.\d+){3}' | head -1)"
}
print_battery() {
+ BAT_DIR="${SYSCLASS_DIR}/power_supply/BAT0"
COLOR="${COL_WHITE}"
STATUS=$(cat "${BAT_DIR}/status")
CHARGING=?
CHARGING=v
COLOR="${COL_YELLOW}"
fi
- NOW=$(printf "%d" $(calc "100 * $(cat ${BAT_DIR}/energy_now) // $(cat ${BAT_DIR}/energy_full)"))
- MAX=$(printf "%d" $(calc "100 * $(cat ${BAT_DIR}/energy_full) // $(cat ${BAT_DIR}/energy_full_design)"))
- print_bar_element "${NOW}${CHARGING}${MAX}" 20 "${COLOR}"
+ percent_of() {
+ printf "%d" $(calc "100 * $(cat $1) // $(cat $2)")
+ }
+ NOW=$(percent_of "${BAT_DIR}/energy_now" "${BAT_DIR}/energy_full")
+ MAX=$(percent_of "${BAT_DIR}/energy_full" "${BAT_DIR}/energy_full_design")
+ if [ $NOW -lt 25 ]; then
+ COLOR="${COL_RED}"
+ fi
+ print_bar_element "${NOW}${CHARGING}${MAX}" "${COLOR}"
}
print_temperature() {
- print_bar_element $(calc "$(cat /sys/class/thermal/thermal_zone0/temp) // ${KILO}")'°C' 20 "${COL_WHITE}"
+ COLOR="${COL_WHITE}"
+ TEMPERATURE=$(cat ${SYSCLASS_DIR}/thermal/thermal_zone0/temp)
+ TEMPERATURE_IN_C=$(calc "${TEMPERATURE} // 1000")
+ if [ $TEMPERATURE -gt 85 ]; then
+ COLOR="${COL_RED}"
+ elif [ $TEMPERATURE -gt 65 ]; then
+ COLOR="${COL_YELLOW}"
+ fi
+ print_bar_element "${TEMPERATURE_IN_C}°C" "${COLOR}"
}
print_datetime() {
- print_bar_element "$(date +'%Y-%m-%d')" 10 "${COL_GREY}"
- print_bar_element "$(date +'%H:%M:%S/%Z')" 0 "${COL_WHITE}"
+ DATE=$(date +'%Y-%m-%d')
+ TIME=$(date +'%H:%M:%S/%Z')
+ print_bar_element "${DATE}" "${COL_GREY}" 10
+ print_bar_element "${TIME}"
}
printf '{"version": 1}\n['