#!/bin/sh -e # # wifi_quality: display wifi signal quality # # Copyright (C) 2008 Canonical Ltd. # Copyright (C) 2011 Dustin Kirkland # # Authors: Dustin Kirkland # # This program is free software: you can redistribute it and/or modify # it under the terms of the GNU General Public License as published by # the Free Software Foundation, version 3 of the License. # # This program is distributed in the hope that it will be useful, # but WITHOUT ANY WARRANTY; without even the implied warranty of # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the # GNU General Public License for more details. # # You should have received a copy of the GNU General Public License # along with this program. If not, see . __wifi_quality_detail() { /sbin/iwconfig 2>/dev/null } __wifi_quality() { local out bitrate quality # iwconfig is expected to output lines like: # Bit Rate=54 Mb/s Tx-Power=15 dBm # Link Quality=60/70 Signal level=-50 dBm # the awk below tokenizes the output and prints shell evalable results out=`iwconfig $MONITORED_NETWORK 2>/dev/null | awk '$0 ~ /[ ]*Link Quality./ { sub(/.*=/,"",$2); split($2,a,"/"); printf "quality=%.0f\n", 100*a[1]/a[2] }; $0 ~ /[ ]*Bit Rate/ { sub(/.*=/,"",$2); printf("bitrate=%s\n", $2); } '` eval "$out" [ -z "$bitrate" ] && bitrate="0" if [ -z "$quality" ] || [ "$quality" = "0" ]; then quality="0" fi [ "$quality" = "0" ] && return printf "${ICON_WIFI}"; color b C k; printf "%s" "$bitrate"; color -; color C k; printf "%s," "Mbps"; color -; color b C k; printf "%s" "$quality"; color -; color C k; printf "%s" "$PCT"; color -- } # vi: syntax=sh ts=4 noexpandtab