Netzwerk Fortschrittsbalken xmobar

Auf meinem alten Laptop nutze ich wegen mangelnder Performance I3 als Windowmaker. Klein und schmal, benutzerfreundlich und bietet dennoch alles, was ich benötige.
Was mir fehlte war eine Anzeige für die Prozessorlast und den akuten Netzwerkdurchsatz, da ich manchmal nicht weiß, warum eine Anwendung gerade hakt.
Da i3 von Haus aus keine Bar anbietet, nutzt man dort dzen2 oder die xmobar von xmonad, eigentlich gefüttert durch i3status, einem Programm von i3 selbst. Doch wie ich es auch immer drehte liefert keiner den aktuellen Datendurchsatz von wlan. Als mußte ich selber ran.
Die wichtigsten Impressionen erhielt ich wohl hier:
LINK
Die xmobar muß natürlich installiert sein. Die config Datei wird nicht automatisch erstellt, sollte aber erstellt werden:
~/.xmobarrc
Für die Einfachheit gebe ich mal meine aktuelle preis; man sieht darin, wie ich mein Script aufrufe:

Config { font = "-misc-fixed-*-*-*-*-10-*-*-*-*-*-*-*"
, bgColor = "black"
, fgColor = "grey"
, position = BottomW R 60
, commands = [ Run Network "eth0" ["-L","0","-H","32","--normal","green","--high","red"] 10
, Run Cpu ["-L","3","-H","50","--normal","green","--high","red"] 10
, Run Memory ["-t","Mem: %"] 10
, Run Swap [] 10
, Run Date "%H:%M:%S" "date" 10
, Run Com "/home/poedel/bin/linepawn.sh" [] "bandw" 10
]
, sepChar = "%"
, alignSep = "}{"
, template = "}{%cpu% | %memory% * %swap% | WLAN: %bandw% %date%"
}

hier das Skript selber:

#!/bin/sh
#poedel_PCS
#
# Berechne Traffic der vorhandenen Netzwerkschnittstellen und
# erstelle daraus ascii Grafiken
jnt=0
jnt2=0

#fiktiver Startwert fuer den maximalen Traffic
hr1=20
hr2=20

#Berechne Geschwindigkeit und speicher in Variable float
for (( c=1; c<=2; c++ )) do
#float=`awk -F ‚:‘ ‚/ath1/ {print $2}‘ /proc/net/dev | tr -s ‚ ‚ | cut -d ‚ ‚ -f 2`
#float2=`awk -F ‚:‘ ‚/ath1/ {print $2}‘ /proc/net/dev | tr -s ‚ ‚ | cut -d ‚ ‚ -f 10`
float=`cat /proc/net/dev | grep ath1 | tr -s ‚:‘ ‚ ‚ | awk -F ‚ ‚ ‚/ath1/ {print $2}’`
float2=`cat /proc/net/dev | grep ath1 | tr -s ‚:‘ ‚ ‚ | awk -F ‚ ‚ ‚/ath1/ {print $10}’`
# konvertiere float in integer
int=$(printf „%.f“ $float)
int2=$(printf „%.f“ $float2)
kbs=$((($int – $jnt)/1000))
kbs2=$((($int2 -$jnt2)/1000))
jnt=$int
jnt2=$int2
#echo „debug jnt = $jnt jnt2 = $jnt2 zeh: $c“
if [ $c -eq 1 ]; then
sleep 1
fi
done

#maxwert der Uebertragung als Obergrenze fuer Grafik erfassen und ggf. anheben
if [ $kbs -gt $hr1 ]; then
hr1=$kbs
fi

if [ $kbs2 -gt $hr2 ]; then
hr2=$kbs2
fi

# Grafische Pawnierung
kbs=$[$kbs+1]
factor=`expr $hr1 / 10`
bars=`expr $kbs / $factor`
case $bars in
0) bar='[—–]‘ ;;
1|2) bar='[/—-]‘ ;;
3|4) bar='[//—]‘ ;;
5|6) bar='[///–]‘ ;;
7|8) bar='[////-]‘ ;;
9|10) bar='[/////]‘ ;;
*) bar='[|||||]‘ ;;
esac

kbs2=$[$kbs2+1]
factor=`expr $hr2 / 10`
bars=`expr $kbs2 / $factor`
case $bars in
0) bar2='[—–]‘ ;;
1|2) bar2='[/—-]‘ ;;
3|4) bar2='[//—]‘ ;;
5|6) bar2='[///–]‘ ;;
7|8) bar2='[////-]‘ ;;
9|10) bar2='[/////]‘ ;;
*) bar2='[|||||]‘ ;;
esac

echo $bar $bar2

direkter Download:
xmobarrc
linepawn.sh

~ von poedel - August 31, 2010.

Hinterlasse einen Kommentar