diff --git a/config b/config index 6800813..e443219 100644 --- a/config +++ b/config @@ -10,6 +10,9 @@ label=☼ # label=☀,☼,✱,✲,✳,✴,✵,✺ instance=color +# [iface] +# label=iface + [storage] label=⛁ # label=⛀,⛁,⛂,⛃ @@ -25,9 +28,9 @@ label=⚟ [cpu] label=☷ -# [ip] +[ip] # label=ip -# label=⎋ +label=⎋ # interval=once # if you have more than one batteries attached to your device and ou like diff --git a/modules/battery b/modules/battery index 77e9e77..0596594 100755 --- a/modules/battery +++ b/modules/battery @@ -10,7 +10,7 @@ else [[ -f "$DIR/BAT$BLOCK_INSTANCE/uevent" ]] && BATS="$DIR/BAT$BLOCK_INSTANCE/uevent" fi -if [[ "${BATS}" == "" ]]; then +if [[ "$BATS" == "" ]]; then echo " no battery " echo "n/a" exit 33 diff --git a/modules/iface b/modules/iface new file mode 100755 index 0000000..07bcb25 --- /dev/null +++ b/modules/iface @@ -0,0 +1,38 @@ +#!/bin/bash + +# Use the provided interface, otherwise the device used for the default route. +if [[ -n $BLOCK_INSTANCE ]]; then + IF=$BLOCK_INSTANCE +else + IF=$(ip route | awk '/^default/ { print $5 ; exit }') +fi + +# As per #36 -- It is transparent: e.g. if the machine has no battery or wireless +# connection (think desktop), the corresponding block should not be displayed. +[[ ! -d /sys/class/net/${IF} ]] && exit + +if [[ "$(cat /sys/class/net/$IF/operstate)" = 'down' ]]; then + echo down # full text + echo down # short text + echo \#FF0000 # color + exit +fi + +case $1 in + -4) + AF=inet ;; + -6) + AF=inet6 ;; + *) + AF=inet6? ;; +esac + +# if no interface is found, use the first device with a global scope +IPADDR=$(ip addr show $IF | perl -n -e "/$AF ([^\/]+).* scope global/ && print \$1 and exit") + +case $BLOCK_BUTTON in + 3) echo -n "$IPADDR" | xclip -q -se c ;; +esac + +echo "$IPADDR" # full text +echo "$IPADDR" # short text diff --git a/modules/ip b/modules/ip index c778e8e..e52c0e0 100755 --- a/modules/ip +++ b/modules/ip @@ -1,6 +1,22 @@ #!/bin/bash -IP=$(curl -s checkip.dyndns.org | sed -e 's/.*Current IP Address: //' -e 's/<.*$//') +if [[ -n "$BLOCK_INSTANCE" ]]; then + IF="$BLOCK_INSTANCE" +else + IF=$(ip route | awk '/^default/ { print $5 ; exit }') +fi + +if [[ ! -d "/sys/class/net/$IF" ]]; then + echo " no network interface " + echo "not found" + echo "" + exit 33 +fi + +echo $IF + +WAN_IP=$(curl -s checkip.dyndns.org | sed -e 's/.*Current IP Address: //' -e 's/<.*$//') +LAN_IP=$(ip addr | gawk '/ echo "$IP" echo "$IP" diff --git a/modules/storage b/modules/storage index 6df2d27..8e53f35 100755 --- a/modules/storage +++ b/modules/storage @@ -1,30 +1,29 @@ #!/bin/bash df | gawk ' /\/$/ { - sfg=$4/1024^2 - sfm=$4/1024 + free_storage=$4/1024^2 } END { - if (sfg < 1) { + if (free_storage < 1) { printf(" full \n") printf("full\n") exit 33 - } else if (sfg > 5) { - printf("%.1f G\n", sfg) - printf("%dG\n", sfg) + } else if (free_storage > 5) { + printf("%.1f G\n", free_storage) + printf("%dG\n", free_storage) } else { - printf("%.0f M\n", sfm) - printf("%dG\n", sfm) + printf("%.0f M\n", free_storage / 1024) + printf("%dM\n", free_storage / 1024) } - if (sfg > 20) { + if (free_storage > 20) { print("#04B431\n") - } else if (sfg > 15) { + } else if (free_storage > 15) { print("#A8FF00\n") - } else if (sfg > 10) { + } else if (free_storage > 10) { print("#FFF600\n") - } else if (sfg > 5) { + } else if (free_storage > 5) { print("#FFAE00\n") - } else if (sfg > 1) { + } else if (free_storage > 1) { print("#FF0000\n") } }