home · contact · privacy
Imporove sway status bar script. master
authorChristian Heller <c.heller@plomlompom.de>
Wed, 14 Jan 2026 15:07:04 +0000 (16:07 +0100)
committerChristian Heller <c.heller@plomlompom.de>
Wed, 14 Jan 2026 15:07:04 +0000 (16:07 +0100)
trixie/copy/t490s/home/plom/.nonpath_bins/status.sh

index 7cb3691aa08ed689c9e6d1b7c3e426034b9ec50b..2a9d1104d6be197e558fe3bc3c3070c24a6a242f 100755 (executable)
@@ -13,13 +13,15 @@ COL_GREEN=00dd00
 COL_GREY=aaaaaa
 
 print_bar_block() {
 COL_GREY=aaaaaa
 
 print_bar_block() {
-    printf '{"full_text": "%s", ' "$1"
-    COLOR="${COL_GREY}"
-    if [ ! -z "$2" ]; then
-        COLOR="$2"
+    local TEXT="$1"
+    local COLOR="$2"
+    local NO_BAR_IF_ZERO="$3"
+    if [ -z "$2" ]; then
+        COLOR="${COL_GREY}"
     fi
     fi
+    printf '{"full_text": "%s", ' "${TEXT}"
     printf '"color": "%s", ' "${COLOR}"
     printf '"color": "%s", ' "${COLOR}"
-    if [ "$3" = "0" ]; then
+    if [ "${NO_BAR_IF_ZERO}" = "0" ]; then
         printf '"separator": false,\n'
         printf '"separator_block_width": 0,'
     fi
         printf '"separator": false,\n'
         printf '"separator_block_width": 0,'
     fi
@@ -28,21 +30,26 @@ print_bar_block() {
 }
 
 print_calc() {
 }
 
 print_calc() {
-    printf "%d" $(calc "$1")
+    local RESULT
+    RESULT=$(calc "$1")
+    printf "%d" "${RESULT}"
 }
 
 color_at() {
 }
 
 color_at() {
-    IDX=0
+    local MEASURED="$1"
+    local STEPS_MAP="$2"
+    local IDX=0
     while true; do
     while true; do
+        local COLOR LIMIT STEP
         IDX=$(print_calc "${IDX} + 1")
         IDX=$(print_calc "${IDX} + 1")
-        STEP=$(echo "$2" | cut -d'_' -f${IDX})
+        STEP=$(echo "${STEPS_MAP}" | cut -d'_' -f"${IDX}")
        if [ -z "${STEP}" ]; then
             break
        fi
        LIMIT=$(echo "${STEP}" | cut -d':' -f1)
        COLOR=$(echo "${STEP}" | cut -d':' -f2)
        if [ -z "${STEP}" ]; then
             break
        fi
        LIMIT=$(echo "${STEP}" | cut -d':' -f1)
        COLOR=$(echo "${STEP}" | cut -d':' -f2)
-       if [ "${LIMIT}" -ge "${1}" ]; then
-            printf "${COLOR}"
+       if [ "${LIMIT}" -ge "${MEASURED}" ]; then
+            printf "%s" "${COLOR}"
            break
         fi
     done
            break
         fi
     done
@@ -50,28 +57,37 @@ color_at() {
 
 print_clipboard() {
     print_selection() {
 
 print_clipboard() {
     print_selection() {
-        print_bar_block "$1 [" "${COL_WHITE}" 0
-        CLEANED=$(wl-paste $2 | sed 's/"/\\"/g')
+        LABEL="$1"
+        WL_PASTE_ARGS="$2"
+        NO_BAR_IF_ZERO="$3"
+        local CLEAN_PASTE ELLIPSIS
+        CLEAN_PASTE=$(wl-paste ${WL_PASTE_ARGS} | sed 's/"/\\"/g')
        ELLIPSIS=
        ELLIPSIS=
-        if [ $(echo "${CLEANED}" | wc -c) -gt 32 ]; then
-            CLEANED=$(echo "${CLEANED}" | cut -zc'-29')
+        print_bar_block "${LABEL} [" "${COL_WHITE}" 0
+        if [ "${#CLEAN_PASTE}" -gt 32 ]; then
+            CLEAN_PASTE=$(echo "${CLEAN_PASTE}" | cut -zc'-29')
            ELLIPSIS='...'
         fi
            ELLIPSIS='...'
         fi
-        print_bar_block "${CLEANED}" "" 0
-        print_bar_block "${ELLIPSIS}]" "${COL_WHITE}" $3
+        print_bar_block "${CLEAN_PASTE}" "" 0
+        print_bar_block "${ELLIPSIS}]" "${COL_WHITE}" "${NO_BAR_IF_ZERO}"
     }
     print_selection 'wl-paste' '' 0
     print_selection ' --primary' --primary
 }
 
 print_online() {
     }
     print_selection 'wl-paste' '' 0
     print_selection ' --primary' --primary
 }
 
 print_online() {
+    local STATUS_WIFI
     print_conn() {
     print_conn() {
-        print_bar_block "$(echo $1 | cut -c1):" "" 0
-        IP=$(ip --brief addr show | grep "$1" | sed -E 's/ +/\t/g' | cut -f3 | cut -f1 -d'/')
+        local IFACE="$1"
+        local NO_BAR_IF_ZERO="$2"
+        local IP
+        IP=$(ip --brief addr show | grep "${IFACE}" | sed -E 's/ +/\t/g' | cut -f3 | cut -f1 -d'/')
+        IFACE_FIRSTCHAR=$(echo "$1" | cut -c1)
+        print_bar_block "${IFACE_FIRSTCHAR}:" "" 0
         if [ -z "${IP}" ]; then
            print_bar_block '-'
         else
         if [ -z "${IP}" ]; then
            print_bar_block '-'
         else
-            print_bar_block "${IP}" "${COL_WHITE}" "$2"
+            print_bar_block "${IP}" "${COL_WHITE}" "${NO_BAR_IF_ZERO}"
         fi
     }
     print_conn enp
         fi
     }
     print_conn enp
@@ -79,9 +95,10 @@ print_online() {
     set +e
     STATUS_WIFI=$(nmcli -t -f IN-USE,SSID,SIGNAL dev wifi | grep '^\*:')
     set -e
     set +e
     STATUS_WIFI=$(nmcli -t -f IN-USE,SSID,SIGNAL dev wifi | grep '^\*:')
     set -e
-    if [ ! -z "${STATUS_WIFI}" ]; then
+    if [ -n "${STATUS_WIFI}" ]; then
+        local COLOR SIGNAL
         SIGNAL=$(echo -n "${STATUS_WIFI}" | cut -d':' -f3)
         SIGNAL=$(echo -n "${STATUS_WIFI}" | cut -d':' -f3)
-        COLOR=$(color_at $SIGNAL "45:${COL_RED}_85:${COL_YELLOW}_100:${COL_GREEN}")
+        COLOR=$(color_at "${SIGNAL}" "45:${COL_RED}_85:${COL_YELLOW}_100:${COL_GREEN}")
         print_bar_block " ${SIGNAL}" "${COLOR}" 0
         print_bar_block "% $(echo "${STATUS_WIFI}" | cut -d':' -f2)"
     else
         print_bar_block " ${SIGNAL}" "${COLOR}" 0
         print_bar_block "% $(echo "${STATUS_WIFI}" | cut -d':' -f2)"
     else
@@ -90,29 +107,33 @@ print_online() {
 }
 
 print_battery() {
 }
 
 print_battery() {
+    local BAT_DIR CHARGE CHARGING COLOR STATUS
     BAT_DIR="${SYSCLASS_DIR}/power_supply/BAT0"
 
     calc_percent () {
     BAT_DIR="${SYSCLASS_DIR}/power_supply/BAT0"
 
     calc_percent () {
+        local MEASURED, MAX
         cat_energy() {
         cat_energy() {
-            cat "${BAT_DIR}/energy_$1"
+            cat "${BAT_DIR}/energy_${1}"
         }
         }
-        print_calc "100 * $(cat_energy $1) // $(cat_energy $2)"
+        MEASURED=$(cat_energy "$1")
+        MAX=$(cat_energy "$2")
+        print_calc "100 * ${MEASURED} // ${MAX}"
     }
 
     CHARGE=$(calc_percent now full)
     }
 
     CHARGE=$(calc_percent now full)
-    COLOR=$(color_at $CHARGE "25:${COL_RED}_65:${COL_YELLOW}_100:${COL_GREEN}")
+    COLOR=$(color_at "${CHARGE}" "25:${COL_RED}_65:${COL_YELLOW}_100:${COL_GREEN}")
     print_bar_block "${CHARGE}%" "${COLOR}" 0
 
     COLOR="${COL_WHITE}"
     STATUS=$(cat "${BAT_DIR}/status")
     print_bar_block "${CHARGE}%" "${COLOR}" 0
 
     COLOR="${COL_WHITE}"
     STATUS=$(cat "${BAT_DIR}/status")
-    CHARGING=?
+    CHARGING="?"
     if [ "${STATUS}" = "Not charging" ]; then
     if [ "${STATUS}" = "Not charging" ]; then
-        CHARGING=-
+        CHARGING="-"
     elif [ "${STATUS}" = "Charging" ]; then
     elif [ "${STATUS}" = "Charging" ]; then
-        CHARGING=^
+        CHARGING="^"
         COLOR="${COL_GREEN}"
     elif [ "${STATUS}" = "Discharging" ]; then
         COLOR="${COL_GREEN}"
     elif [ "${STATUS}" = "Discharging" ]; then
-        CHARGING=v
+        CHARGING="v"
         COLOR="${COL_YELLOW}"
     fi
     print_bar_block "${CHARGING}" "${COLOR}" 0
         COLOR="${COL_YELLOW}"
     fi
     print_bar_block "${CHARGING}" "${COLOR}" 0
@@ -121,15 +142,17 @@ print_battery() {
 }
 
 print_temperature() {
 }
 
 print_temperature() {
+    local COLOR TEMPERATURE TEMPERATURE_IN_C
     COLOR="${COL_WHITE}"
     TEMPERATURE=$(cat ${SYSCLASS_DIR}/thermal/thermal_zone0/temp)
     TEMPERATURE_IN_C=$(print_calc "${TEMPERATURE} // 1000")
     COLOR="${COL_WHITE}"
     TEMPERATURE=$(cat ${SYSCLASS_DIR}/thermal/thermal_zone0/temp)
     TEMPERATURE_IN_C=$(print_calc "${TEMPERATURE} // 1000")
-    COLOR=$(color_at $TEMPERATURE_IN_C "65:${COL_GREEN}_85:${COL_YELLOW}_999:${COL_RED}")
+    COLOR=$(color_at "${TEMPERATURE_IN_C }" "65:${COL_GREEN}_85:${COL_YELLOW}_999:${COL_RED}")
     print_bar_block "${TEMPERATURE_IN_C}" "${COLOR}" 0
     print_bar_block '°'
 }
 
 print_datetime() {
     print_bar_block "${TEMPERATURE_IN_C}" "${COLOR}" 0
     print_bar_block '°'
 }
 
 print_datetime() {
+    local DATE TIME TZ
     DATE=$(date +'%Y-%m-%d')
     TIME=$(date +'%H:%M:%S')
     TZ=$(date +'/%Z')
     DATE=$(date +'%Y-%m-%d')
     TIME=$(date +'%H:%M:%S')
     TZ=$(date +'/%Z')
@@ -139,31 +162,33 @@ print_datetime() {
 }
 
 print_volume() {
 }
 
 print_volume() {
-    _print_vol() {
-        _NAME="$1"
-        _IDX="$2"
-        _TYPE="$3"
-        _BORDER="$4"
-        print_bar_block "$1 " "${COL_WHITE}" 0
-        VOLUME="$(pactl get-${_TYPE}-volume "${_IDX}" | head -1 | sed 's/ //g' | cut -d'/' -f2)"
-        if $(audio_dev_is_mute "${_TYPE}" "${_IDX}"); then
-            print_bar_block "<s>${VOLUME}</s>" '' "${_BORDER}"
+    print_vol() {
+        local NAME="$1"
+        local IDX="$2"
+        local TYPE="$3"
+        local BORDER="$4"
+       local VOLUME
+        VOLUME="$(pactl "get-${TYPE}-volume" "${IDX}" | head -1 | sed 's/ //g' | cut -d'/' -f2)"
+        print_bar_block "${NAME} " "${COL_WHITE}" 0
+        if $(audio_dev_is_mute "${TYPE}" "${IDX}"); then
+            print_bar_block "<s>${VOLUME}</s>" '' "${BORDER}"
         else
         else
-            print_bar_block "${VOLUME}" "${COL_YELLOW}" "${_BORDER}"
+            print_bar_block "${VOLUME}" "${COL_YELLOW}" "${BORDER}"
         fi
     }
         fi
     }
-    _print_vol 'vol' 0 'sink' 0
-    _print_vol ' --mic' 1 'source'
+    print_vol 'vol' 0 'sink' 0
+    print_vol ' --mic' 1 'source'
 }
 
 print_keyboard() {
 }
 
 print_keyboard() {
+    local LAYOUT
     LAYOUT=$(swaymsg -t get_inputs | grep 'xkb_active_layout_name' | sed -E 's/[ ,"]+//g' | cut -d':' -f2 | head -1)
     if [ "${LAYOUT}" = "English(US)" ]; then
     LAYOUT=$(swaymsg -t get_inputs | grep 'xkb_active_layout_name' | sed -E 's/[ ,"]+//g' | cut -d':' -f2 | head -1)
     if [ "${LAYOUT}" = "English(US)" ]; then
-        LAYOUT=us
+        LAYOUT="us"
     elif [ "${LAYOUT}" = "German" ]; then
     elif [ "${LAYOUT}" = "German" ]; then
-        LAYOUT=de
+        LAYOUT="de"
     else
     else
-        LAYOUT=??
+        LAYOUT="??"
     fi
     print_bar_block "kb_${LAYOUT}"
 }
     fi
     print_bar_block "kb_${LAYOUT}"
 }