home · contact · privacy
Minor improvements.
authorChristian Heller <c.heller@plomlompom.de>
Wed, 12 Mar 2025 06:38:58 +0000 (07:38 +0100)
committerChristian Heller <c.heller@plomlompom.de>
Wed, 12 Mar 2025 06:38:58 +0000 (07:38 +0100)
testing/home/t490s/.nonpath_bins/status.sh

index 8b532f7defe01a2770429afbf4eb05e72747c1c9..180aa395bccc7ad9c2456049f4844c5a142f255b 100755 (executable)
@@ -1,22 +1,34 @@
 #!/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=?
@@ -29,18 +41,34 @@ print_battery() {
         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['