From 4389f2e5040b75c406266828316be0f422de9d4d Mon Sep 17 00:00:00 2001 From: koksnuss Date: Mon, 13 Aug 2018 17:17:52 +0200 Subject: [PATCH] fix and refractor battry plus various other small fixes --- modules/abstract.sh | 5 +++- modules/audio.sh | 6 ++-- modules/battery.sh | 69 +++++++++------------------------------------ modules/datetime.sh | 14 ++++----- modules/ip.sh | 41 ++++++++++----------------- 5 files changed, 42 insertions(+), 93 deletions(-) diff --git a/modules/abstract.sh b/modules/abstract.sh index 924eeec..b6823a2 100755 --- a/modules/abstract.sh +++ b/modules/abstract.sh @@ -26,7 +26,10 @@ source $HOME/.config/i3blocks/modules/${1}.sh # text -if [[ "$LONG" = true || "$LONG_TEXT" == "off" ]]; then +if [[ "$LOAD" = false && "$LONG" = false ]]; then + echo $SHORT_TEXT + echo $SHORT_TEXT +elif [[ "$LONG" = true || $LONG_TEXT =~ off ]]; then echo "$LONG_TEXT" echo "$SHORT_TEXT" else diff --git a/modules/audio.sh b/modules/audio.sh index af53f43..53bd5c7 100644 --- a/modules/audio.sh +++ b/modules/audio.sh @@ -9,10 +9,12 @@ if [[ $(amixer get $DEV) =~ \[([0-9]+)\%\][[:space:]]\[(on|off)\] ]]; then LONG_TEXT="${LOAD}%" SHORT_TEXT="${LOAD}" else - LONG_TEXT="off" - SHORT_TEXT="X" + LONG_TEXT="${LOAD}% off" + SHORT_TEXT="off" + LOAD=false fi else LONG_TEXT="no audio source" SHORT_TEXT="n/a" + LOAD=false fi diff --git a/modules/battery.sh b/modules/battery.sh index f6f2175..5b570b4 100644 --- a/modules/battery.sh +++ b/modules/battery.sh @@ -1,65 +1,22 @@ DIR="/sys/class/power_supply" - if [[ "$BLOCK_INSTANCE" == "" ]]; then for BAT in $DIR/BAT*/; do - [[ -f "${BAT}uevent" ]] && BATS+="$BAT/uevent " + [[ -f "${BAT}uevent" ]] && BATS+="${BAT}uevent " done else [[ -f "$DIR/BAT$BLOCK_INSTANCE/uevent" ]] && BATS="$DIR/BAT$BLOCK_INSTANCE/uevent" fi +[[ "$BATS" == "" ]] && printf "no battery\nn/a\n" && exit 33 -if [[ "$BATS" == "" ]]; then - echo " no battery " - echo "n/a" - exit 33 -fi +ENERGY_FULL=1 +ENERGY_NOW=0 +STATUS="" +while read -r LINE; do + [[ $LINE =~ POWER_SUPPLY_STATUS=Charging ]] && STATUS="⚡" + [[ $LINE =~ POWER_SUPPLY_ENERGY_FULL=([0-9]+) ]] && ENERGY_FULL=$(($ENERGY_FULL + ${BASH_REMATCH[1]})) + [[ $LINE =~ POWER_SUPPLY_ENERGY_NOW=([0-9]+) ]] && ENERGY_NOW=$(($ENERGY_NOW + ${BASH_REMATCH[1]})) +done <<< $(cat $BATS) -cat $BATS | gawk -v LONG="$LONG" -v COLORS="$COLORS" -v BAR="${BAR[*]}" -v COLOR="${COLOR[*]}" -v BW="${BW[*]}" -F "=" ' - - BEGIN { - split(BAR, bar, / /) - split(COLOR, color, / /) - split(BW, bw, / /) - interval = 100 / length(bar) - efull = 0 - enow = 0 - status = "" - } - - /POWER_SUPPLY_STATUS=/ { - if (status == "") { - if ($2 == "Discharging") { - status = "" - } else if ($2 == "Charging") { - status = "⚡" - } - } - } - - /POWER_SUPPLY_ENERGY_FULL=/ { efull += $2 } - /POWER_SUPPLY_ENERGY_NOW=/ { enow += $2 } - - END { - load = enow / efull * 100 - if (LONG) { - printf("%d%\n%d\n", load, load) - } else { - for (i in bar) { - if (load <= i * interval) { - printf("%s\n%s\n", bar[i], bar[i]) - break - } - } - } - for (i in bw) { - if (load <= i * interval) { - if (COLORS) { - printf("%s\n", color[i]) - } else { - printf("%s\n", bw[i]) - } - break - } - } - } -' +LOAD=$((${ENERGY_NOW} * 100 / ${ENERGY_FULL})) +LONG_TEXT="$STATUS$LOAD%" +SHORT_TEXT="$STATUS$LOAD" diff --git a/modules/datetime.sh b/modules/datetime.sh index b60d7bd..50c5a2a 100644 --- a/modules/datetime.sh +++ b/modules/datetime.sh @@ -1,10 +1,8 @@ -if [[ "$BLOCK_INSTANCE" =~ "pm" ]]; then - FULL=$(date '+%A %-d.%-m.%Y W%V, %-I:%M:%S%p') - SHORT=$(date '+%-I:%M%p') +if [[ $BLOCK_INSTANCE =~ pm ]]; then + LONG_TEXT=$(date '+%A %-d.%-m.%Y W%V, %-I:%M:%S%p') + SHORT_TEXT=$(date '+%-I:%M%p') else - FULL=$(date '+%A %-d.%-m.%Y W%V, %-H:%M:%S') - SHORT=$(date '+%-H:%M') + LONG_TEXT=$(date '+%A %-d.%-m.%Y W%V, %-H:%M:%S') + SHORT_TEXT=$(date '+%-H:%M') fi - -[[ "$LONG" ]] && echo $FULL || echo $SHORT -echo $SHORT +LOAD=false diff --git a/modules/ip.sh b/modules/ip.sh index 9b817b4..67ffb7c 100644 --- a/modules/ip.sh +++ b/modules/ip.sh @@ -1,4 +1,3 @@ -# start firefox [[ "$BLOCK_BUTTON" == 2 ]] && firefox # get interface @@ -8,43 +7,33 @@ else IF=$(ip route | awk '/^default/ { print $5 ; exit }') fi -# check if network interface is empty -if [[ -z "$IF" ]]; then - [[ $LONG ]] && echo "No interface" || echo "n/a" +# check if network interface exists or is empty +if [[ -z "$IF" || ! -d "/sys/class/net/$IF" ]]; then + printf "$IF not found\nn/a\n" exit 33 fi -# check if the network interface exists -if [[ ! -d "/sys/class/net/$IF" ]]; then - [[ $LONG ]] && echo "No interface" || echo "n/a" - exit 33 -fi - -# get interface information LAN=$(ip addr | grep -E "$IF") # check if interface is up -if [[ "$LAN" =~ " UP " ]]; then +if [[ $LAN =~ [[:space:]]UP[[:space:]] ]]; then # check if interface is connected - if [[ "$LAN" =~ \<.*UP.*\> ]]; then + if [[ $LAN =~ \<.*UP.*\> ]]; then WAN_IP=$(curl -s checkip.dyndns.org | sed -e 's/.*Current IP Address: //' -e 's/<.*$//') # check if internet connection is established if [[ "$?" -eq 0 && $WAN_IP != "" ]]; then - if [[ $LONG ]]; then - echo $WAN_IP - echo $WAN_IP - [[ $COLORS ]] && echo $COLOR[8] || echo $BW[8] - else - echo WAN - echo WAN - [[ $COLORS ]] && echo $COLOR[8] || echo $BW[8] - fi + LONG_TEXT="WAN $WAN_IP" + SHORT_TEXT="WAN" else - echo "lan" - fi - fi +# LAN_IP6=$(echo $LAN | grep -oE "(([0-9a-fA-F]{1,4}:){7,7}[0-9a-fA-F]{1,4}|([0-9a-fA-F]{1,4}:){1,7}:|([0-9a-fA-F]{1,4}:){1,6}:[0-9a-fA-F]{1,4}|([0-9a-fA-F]{1,4}:){1,5}(:[0-9a-fA-F]{1,4}){1,2}|([0-9a-fA-F]{1,4}:){1,4}(:[0-9a-fA-F]{1,4}){1,3}|([0-9a-fA-F]{1,4}:){1,3}(:[0-9a-fA-F]{1,4}){1,4}|([0-9a-fA-F]{1,4}:){1,2}(:[0-9a-fA-F]{1,4}){1,5}|[0-9a-fA-F]{1,4}:((:[0-9a-fA-F]{1,4}){1,6})|:((:[0-9a-fA-F]{1,4}){1,7}|:)|fe80:(:[0-9a-fA-F]{0,4}){0,4}%[0-9a-zA-Z]{1,}|::(ffff(:0{1,4}){0,1}:){0,1}((25[0-5]|(2[0-4]|1{0,1}[0-9]){0,1}[0-9])\.){3,3}(25[0-5]|(2[0-4]|1{0,1}[0-9]){0,1}[0-9])|([0-9a-fA-F]{1,4}:){1,4}:((25[0-5]|(2[0-4]|1{0,1}[0-9]){0,1}[0-9])\.){3,3}(25[0-5]|(2[0-4]|1{0,1}[0-9]){0,1}[0-9]))" + LONG_TEXT="LAN #TODO" + SHORT_TEXT="LAN" + fi #TODO: message + fi #TODO: message else - [[ $LONG ]] && echo "$IF: off" || echo "off" + LONG_TEXT="$IF off" + SHORT_TEXT="off" fi +LOAD=false