X-Git-Url: https://jasonwoof.com/gitweb/?a=blobdiff_plain;f=baraction.sh;h=4a44a7aa397e9f28ea2f22c6933b89b477290eaa;hb=5f73b94a87f6d21de1254619056d83155ba3462c;hp=b81ceee28ba4a1750498b291b0a9c865ae37bbda;hpb=265cac27a62c8f9e4e123f32961b65826b0f17bd;p=spectrwm.git diff --git a/baraction.sh b/baraction.sh index b81ceee..4a44a7a 100644 --- a/baraction.sh +++ b/baraction.sh @@ -1,7 +1,32 @@ #!/bin/sh +print_date() { + # The date is printed to the status bar by default. + # To print the date through this script, set clock_enabled to 0 + # in scrotwm.conf. Uncomment "print_date" below. + FORMAT="%a %b %d %R %Z %Y" + DATE=`date "+${FORMAT}"` + echo -n "${DATE} " +} + +_print_cpu() { + typeset -R4 _1=${1} _2=${2} _3=${3} _4=${4} _5=${5} + echo -n "CPU:${_1}% User${_2}% Nice${_3}% Sys${_4}% Int${_5}% Idle " +} + print_cpu() { - echo -n "CPU: ${7}% User ${8}% Nice ${9}% Sys ${10}% Int ${11}% Idle " + OUT="" + # iostat prints each column justified to 3 chars, so if one counter + # is 100, it jams up agains the preceeding one. sort this out. + while [ "${1}x" != "x" ]; do + if [ ${1} -gt 99 ]; then + OUT="$OUT ${1%100} 100" + else + OUT="$OUT ${1}" + fi + shift; + done + _print_cpu $OUT } print_apm() { @@ -45,9 +70,21 @@ print_apm() { } while :; do - # you probably want to reduce the sleep below if you enable this - #print_cpu `/usr/sbin/iostat -C` - print_apm `/usr/sbin/apm -alb` - echo "" - sleep 59 + # instead of sleeping, use iostat as the update timer. + # cache the output of apm(8), no need to call that every second. + /usr/sbin/iostat -C -c 3600 |& # wish infinity was an option + APM_DATA="" + I=0 + while read -p; do + if [ $(( ${I} % 1 )) -eq 0 ]; then + APM_DATA=`/usr/sbin/apm -alb` + fi + if [ $I -gt 2 ]; then + # print_date + print_cpu $REPLY + print_apm $APM_DATA + echo "" + fi + I=$(( ${I} + 1 )); + done done