From d1f31bb8b2ee5971f0acfe942c1a85e830f5896a Mon Sep 17 00:00:00 2001
From: Luca Bilke <luca@snaile.de>
Date: Wed, 24 May 2023 18:33:43 +0200
Subject: [PATCH] rework printfs in statusbar scripts for better compatibility

---
 .local/bin/statusbar/sb-battery   | 14 +++++++-------
 .local/bin/statusbar/sb-cpu       |  2 +-
 .local/bin/statusbar/sb-cpubars   | 26 +++++++++++++++++---------
 .local/bin/statusbar/sb-disk      |  6 +++++-
 .local/bin/statusbar/sb-forecast  | 24 +++++++++++++++---------
 .local/bin/statusbar/sb-internet  | 11 +++++++----
 .local/bin/statusbar/sb-nettraf   | 11 ++++++-----
 .local/bin/statusbar/sb-packages  |  8 +++++---
 .local/bin/statusbar/sb-playerctl |  4 ++--
 .local/bin/statusbar/sb-volume    |  7 +++++--
 .local/bin/statusbar/sb-xkbmap    |  4 +++-
 11 files changed, 73 insertions(+), 44 deletions(-)

diff --git a/.local/bin/statusbar/sb-battery b/.local/bin/statusbar/sb-battery
index aa579582..7de345b8 100755
--- a/.local/bin/statusbar/sb-battery
+++ b/.local/bin/statusbar/sb-battery
@@ -1,10 +1,10 @@
 #!/bin/sh
-red="\e[31m"
-orange="\e[33m"
-cyan="\e[36m"
-green="\e[32m"
-white="\e[37m"
-reset="\e[0m"
+red="\033[31m"
+orange="\033[33m"
+cyan="\033[36m"
+green="\033[32m"
+white="\033[37m"
+reset="\033[0m"
 for battery in /sys/class/power_supply/BAT?*; do
 	pidof -x sbd-battery >/dev/null 2>&1 || sbd-battery "$battery" >/dev/null 2>&1 &
 	[ -n "${capacity+x}" ] && printf " "
@@ -65,5 +65,5 @@ for battery in /sys/class/power_supply/BAT?*; do
 		;;
 	*) exit 1 ;;
 	esac
-	printf "$color%s$reset %d" "$icon" "$capacity"
+	printf "%b" "$color$icon$reset $capacity"
 done && printf "\\n"
diff --git a/.local/bin/statusbar/sb-cpu b/.local/bin/statusbar/sb-cpu
index fc2f8795..0e9e3e80 100755
--- a/.local/bin/statusbar/sb-cpu
+++ b/.local/bin/statusbar/sb-cpu
@@ -1,3 +1,3 @@
 #!/bin/sh
 # TODO: Add color
-sensors | awk '/Core 0/ {print "\e[11m🌔\e[10m" $3}'
+sensors | awk '/Core 0/ {print "\033[11m🌔\033[10m" $3}'
diff --git a/.local/bin/statusbar/sb-cpubars b/.local/bin/statusbar/sb-cpubars
index 5e54d3ec..342b6710 100755
--- a/.local/bin/statusbar/sb-cpubars
+++ b/.local/bin/statusbar/sb-cpubars
@@ -1,9 +1,17 @@
 #!/bin/sh
+
+reset="\033[0m"
+normal="\033[10m"
+big="\033[11m"
+red="\033[31m"
+green="\033[32m"
+orange="\033[33m"
+
 cache=/tmp/cpubarscache
 stats=$(awk '/cpu[0-9]+/ {printf "%d %d %d\n", substr($1,4), ($2 + $3 + $4 + $5), $5 }' /proc/stat)
 [ ! -f $cache ] && echo "$stats" >"$cache"
 old=$(cat "$cache")
-printf "\e[11m﬙\e[10m "
+printf "%b" "$big﬙$normal "  
 echo "$stats" | while read -r row; do
 	id=${row%% *}
 	rest=${row#* }
@@ -12,15 +20,15 @@ echo "$stats" | while read -r row; do
 	case "$(echo "$old" | awk '{if ($1 == id)
 		printf "%d\n", (1 - (idle - $3)  / (total - $2))*100 /12.5}' \
 		id="$id" total="$total" idle="$idle")" in
-	"0") printf "\e[32m▁" ;;
-	"1") printf "\e[32mā–‚" ;;
-	"2") printf "\e[32mā–ƒ" ;;
-	"3") printf "\e[33mā–„" ;;
-	"4") printf "\e[33mā–…" ;;
-	"5") printf "\e[33mā–†" ;;
-	"6" | "7" | "8") printf "\e[31mā–‡" ;;
+	"0") printf "%b" "$green▁" ;;
+	"1") printf "%b" "$greenā–‚" ;;
+	"2") printf "%b" "$greenā–ƒ" ;;
+	"3") printf "%b" "$orangeā–„" ;;
+	"4") printf "%b" "$orangeā–…" ;;
+	"5") printf "%b" "$orangeā–†" ;;
+	"6" | "7" | "8") printf "%b" "$redā–‡" ;;
 
 	esac
 done
-printf "\e[0m\n"
+printf "%b" "$reset\n"
 echo "$stats" >"$cache"
diff --git a/.local/bin/statusbar/sb-disk b/.local/bin/statusbar/sb-disk
index d4aa6499..e2a48b8d 100755
--- a/.local/bin/statusbar/sb-disk
+++ b/.local/bin/statusbar/sb-disk
@@ -1,5 +1,9 @@
 #!/bin/sh
 # $1 should be drive mountpoint, otherwise assumed /.
+
+reset="\033[0m"
+big="\033[11m"
+
 location=${1:-/}
 [ -d "$location" ] || exit
-printf "\e[11mļŸ‰\e[10m %s\n" "$(df -h "$location" | awk ' /[0-9]/ {print $3 "/" $2}')"
+printf "%b" "$bigļŸ‰$reset $(df -h "$location" | awk ' /[0-9]/ {print $3 "/" $2}')\n"
diff --git a/.local/bin/statusbar/sb-forecast b/.local/bin/statusbar/sb-forecast
index deb924ec..7922066f 100755
--- a/.local/bin/statusbar/sb-forecast
+++ b/.local/bin/statusbar/sb-forecast
@@ -3,6 +3,12 @@
 # NOTE: This script takes its dwmblocks update signal as an argument so that it can refresh itself (defaults to 5)
 # Options can be found at https://wttr.in/:help
 
+reset="\033[0m"
+big="\033[11m"
+verybig="\033[12m"
+red="\033[31m"
+blue="\033[34m"
+
 weatherfile="$XDG_CACHE_HOME/weatherreport"
 emojifile="$XDG_CACHE_HOME/weatheremoji"
 url="wttr.in/$LOCATION"
@@ -17,19 +23,19 @@ fresh() {
 	[ -s "$weatherfile" ] && [ "$(stat -c %y "$weatherfile" 2>/dev/null | cut -d' ' -f1)" = "$(date '+%Y-%m-%d')" ]
 }
 readfile() {
-    weather="$(cat "$weatherfile")"
-    precipitation="$(echo "$weather" | sed '16q;d' | grep -wo "[0-9]*%" | sort -rn | head -1q)"
-    highlow="$(echo "$weather" | sed '13q;d' | grep -o "m\\([-+]\\)*[0-9]\\+" | sed 's/[+m]//g' | sort -g | sed -e 1b -e '$!d')"
-    emoji="$(cat "$emojifile")"
+	weather="$(cat "$weatherfile")"
+	precipitation="$(echo "$weather" | sed '16q;d' | grep -wo "[0-9]*%" | sort -rn | head -1q)"
+	highlow="$(echo "$weather" | sed '13q;d' | grep -o "m\\([-+]\\)*[0-9]\\+" | sed 's/[+m]//g' | sort -g | sed -e 1b -e '$!d')"
+	emoji="$(cat "$emojifile")"
 }
 output() {
-    readfile
-    printf "\e[12m%s\e[10m %s \e[34;11mļ•…\e[0m %s° \e[31;11mļ•\e[0m %s°\n" "$emoji" "$precipitation" $highlow
+	readfile
+	printf "%b" "$verybig$emoji$reset $precipitation $big$blueļ•…$reset $(echo $highlow | cut -d" " -f1)° $big$redļ•$reset $(echo $highlow | cut -d" " -f2)°\n"
 }
 
 if fresh; then
-    output
+	output
 else
-    getforecast && pkill -RTMIN+${1:-5} dwmblocks &
-    printf " Getting Weather\n"
+	getforecast && pkill -RTMIN+${1:-5} dwmblocks &
+	printf "%b" "$big$reset Getting Weather\n"
 fi
diff --git a/.local/bin/statusbar/sb-internet b/.local/bin/statusbar/sb-internet
index 47639e2b..d9be7977 100755
--- a/.local/bin/statusbar/sb-internet
+++ b/.local/bin/statusbar/sb-internet
@@ -1,11 +1,14 @@
 #!/bin/sh
 shift=""
 
+reset="\033[0m"
+big="\033[11m"
+
 if ls /sys/class/net/w*/operstate 1>/dev/null 2>&1; then
 	for w in /sys/class/net/w*/; do
 		percent="$(cat /proc/net/wireless | grep "$(basename "$(dirname $w/operstate)")" | tr -s ' ' | cut -d ' ' -f3 | tr -dc "[:digit:]")"
 		grep -vxq '0x1003' "$w/flags" && wifi_icon="ļ”" || wifi_icon="$(sed "s/up/ļŖØ/;s/down/ļŖ©/;s/dormant/ļŖ©/" $w/operstate | tr -d "[:space:]")"
-		printf "$shift\e[11m%s\e[10m %s" "$wifi_icon" "$percent"
+		printf "%b" "$shift$big$wifi$icon$reset $percent"
 		shift=" "
 	done
 fi
@@ -13,16 +16,16 @@ fi
 if ls /sys/class/net/e*/operstate 1>/dev/null 2>&1; then
 	for e in /sys/class/net/e*/operstate; do
 		if_icon="$(sed "s/down//;s/up/ļœ€/" $e)"
-		printf "$shift\e[11m%s\e[10m" "$if_icon"
+		printf "%b" "$shift$big$if_icon$reset"
 		shift=" "
 	done
 fi
 
 if ls /sys/class/net/tun*/operstate 1>/dev/null 2>&1; then
 	for _ in /sys/class/net/tun*/operstate; do
-		printf "$shift\e[11m%s\e[10m" "嬨"
+		printf "%b" "$shift$big嬨$reset"
 		shift=" "
 	done
 fi
 
-printf "\n"
+printf "%b" "\n"
diff --git a/.local/bin/statusbar/sb-nettraf b/.local/bin/statusbar/sb-nettraf
index 0e5f82ca..b093b074 100755
--- a/.local/bin/statusbar/sb-nettraf
+++ b/.local/bin/statusbar/sb-nettraf
@@ -1,7 +1,7 @@
 #!/bin/sh
 
-big="\e[11m"
-reset="\e[10m"
+big="\033[11m"
+reset="\033[0m"
 
 update() {
 	sum=0
@@ -11,9 +11,10 @@ update() {
 	done
 	cache=/tmp/${1##*/}
 	[ -f "$cache" ] && read -r old <"$cache" || old=0
-	printf %d\\n "$sum" >"$cache"
-	printf %d\\n $((sum - old))
+	printf "%b" "$sum\n" >"$cache"
+	printf "%b" "$((sum - old))\n"
 }
+
 rx=$(update /sys/class/net/[ew]*/statistics/rx_bytes)
 tx=$(update /sys/class/net/[ew]*/statistics/tx_bytes)
-printf "$bigļ•…$reset%5sB $bigļ•$reset%5sB\\n" $(numfmt --to=iec "$rx" "$tx")
+printf "%b%5sB %b%5sB%b" "$bigļ•…$reset" "$(numfmt --to=iec "$rx")" "$bigļ•$reset" "$(numfmt --to=iec "$tx")" "\n"
diff --git a/.local/bin/statusbar/sb-packages b/.local/bin/statusbar/sb-packages
index 3cc45eed..bc551873 100755
--- a/.local/bin/statusbar/sb-packages
+++ b/.local/bin/statusbar/sb-packages
@@ -1,10 +1,12 @@
 #!/bin/sh
 
-icon="\e[11m\e[10m"
+big="\033[11m"
+reset="\033[0m"
+icon=""
 
 if command -v pacman 1>/dev/null 2>&1; then
     num="$(pacman -Qu | grep -Fcv "[ignored]")"
-    [ "$num" -gt 0 ] && printf "%b %i" "$icon" "$num"
+    [ "$num" -gt 0 ] && printf "%b" "$big$icon$reset$num"
 fi
 
 if command -v apt 1>/dev/null 2>&1; then
@@ -15,5 +17,5 @@ if command -v apt 1>/dev/null 2>&1; then
         out="$out$i/"
     done
 
-    [ -n "$updates_available" ] && printf "%b %s" "$icon" "$(echo "$out" | sed 's/\/$//')"
+    [ -n "$updates_available" ] && printf "%b" "$big$icon$reset $(echo "$out" | sed 's/\/$//')"
 fi
diff --git a/.local/bin/statusbar/sb-playerctl b/.local/bin/statusbar/sb-playerctl
index ca87dacd..a017d19e 100755
--- a/.local/bin/statusbar/sb-playerctl
+++ b/.local/bin/statusbar/sb-playerctl
@@ -1,7 +1,7 @@
 #!/bin/sh
 
-big="\e[11m"
-reset="\e[10m"
+big="\033[11m"
+reset="\033[0m"
 
 pidof -x sbd-playerctl >/dev/null 2>&1 || sbd-playerctl >/dev/null 2>&1 &
 [ "$(playerctl status 2>&1)" = "No players found" ] && printf "%bļ±™%b" "$big" "$reset" && exit 1
diff --git a/.local/bin/statusbar/sb-volume b/.local/bin/statusbar/sb-volume
index 1459f107..a2a6cb01 100755
--- a/.local/bin/statusbar/sb-volume
+++ b/.local/bin/statusbar/sb-volume
@@ -1,4 +1,7 @@
 #!/bin/sh
+big="\033[11m"
+reset="\033[0m"
+
 # Prints the current volume or ļ± if muted.
 [ "$(pamixer --get-mute)" = true ] && echo "\e[11mļ±\e[10m" && exit
 vol="$(pamixer --get-volume)"
@@ -12,6 +15,6 @@ elif [ "$vol" -gt "0" ]; then
 elif [ "$vol" -eq "0" ]; then
 	icon=""
 else
-	printf "\e[11m\e[10m " && exit
+	printf "%b%b " "\e[11m" "\e[0m" && exit
 fi
-printf "\e[11m%s\e[10m %s\n" "$icon" "$vol"
+printf "%b" "$big$icon$reset $vol\n"
diff --git a/.local/bin/statusbar/sb-xkbmap b/.local/bin/statusbar/sb-xkbmap
index db9306e4..a0888006 100755
--- a/.local/bin/statusbar/sb-xkbmap
+++ b/.local/bin/statusbar/sb-xkbmap
@@ -1,3 +1,5 @@
 #!/bin/sh
 # pidof -x sbd-xkbmap >/dev/null 2>&1 || sbd-xkbmap >/dev/null 2>&1 &
-printf "\e[11mļ ‹\e[10m %s\n" "$(setxkbmap -query | grep -oP '(layout|variant):\s*\K\w+' | sed ':a;N;s/\n/:/')"
+big="\033[11m"
+reset="\033[0m"
+printf "%b" "$bigļ ‹$reset $(setxkbmap -query | grep -oP '(layout|variant):\s*\K\w+' | sed ':a;N;s/\n/:/')\n"