#!/bin/sh
# see sway-bar(5) and swaybar-protocol(7)
KILO=1000
+WHITE=ffffff
BAT_DIR=/sys/class/power_supply/BAT0
-print_battery () {
- COLOR=ffffff
- printf ' {"separator_block_width": 20, "full_text": "'
+print_bar_element() {
+ printf '{"full_text": "%s", "separator_block_width": %d, "color": "%s"},\n' "$1" "$2" "$3"
+}
+
+print_online() {
+ print_bar_element "$(ip -4 addr show scope global | grep -oP '(?<=inet\s)\d+(\.\d+){3}')" 20 "${WHITE}"
+}
+
+print_battery() {
+ COLOR="${WHITE}"
STATUS=$(cat "${BAT_DIR}/status")
+ CHARGING=?
if [ "${STATUS}" = "Not charging" ]; then
- printf "_"
+ CHARGING=_
elif [ "${STATUS}" = "Charging" ]; then
- printf "^"
+ CHARGING=^
COLOR=00ff00
elif [ "${STATUS}" = "Discharging" ]; then
- printf "v"
+ CHARGING=v
COLOR=ffff00
- else
- printf "?"
fi
- printf ":%d" $(calc "100 * $(cat ${BAT_DIR}/energy_full) // $(cat ${BAT_DIR}/energy_full_design)")
- printf ":%d" $(calc "100 * $(cat ${BAT_DIR}/energy_now) // $(cat ${BAT_DIR}/energy_full)")
- printf '", "color": "%s"},\n' "${COLOR}"
+ 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}"
+}
+
+print_temperature() {
+ print_bar_element $(calc "$(cat /sys/class/thermal/thermal_zone0/temp) // ${KILO}") 20 "${WHITE}"
+}
+
+print_datetime() {
+ print_bar_element "$(date +'%Y-%m-%d')" 10 "aaaaaa"
+ print_bar_element "$(date +'%H:%M:%S/%Z')" 0 "${WHITE}"
}
-printf '{ "version": 1 }\n[\n'
+printf '{"version": 1}\n['
while true; do
- printf ' [\n'
- printf ' {"separator_block_width": 20, "full_text": "%s"},\n' "$(ip -4 addr show scope global | grep -oP '(?<=inet\s)\d+(\.\d+){3}')"
- print_battery
- printf ' {"separator_block_width": 20, "full_text": "%d° C"},\n' $(calc "$(cat /sys/class/thermal/thermal_zone0/temp) // ${KILO}")
- printf ' {"separator_block_width": 20, "full_text": "%s"},\n' "$(date +'%Y-%m-%d %H:%M:%S/%Z')"
- printf ' ],\n'
- sleep 1
+ printf '['
+ print_online
+ print_battery
+ print_temperature
+ print_datetime
+ printf '],'
+ sleep 0.5
done