2009-01-22 17:50:16 +00:00
|
|
|
#!/bin/sh
|
2019-06-18 13:57:46 +01:00
|
|
|
# Example Bar Action Script for OpenBSD-current.
|
2009-09-13 22:28:53 +00:00
|
|
|
#
|
2009-02-11 07:17:06 +00:00
|
|
|
|
2009-02-18 20:34:26 +00:00
|
|
|
print_date() {
|
|
|
|
# The date is printed to the status bar by default.
|
|
|
|
# To print the date through this script, set clock_enabled to 0
|
2012-02-15 14:09:13 -06:00
|
|
|
# in spectrwm.conf. Uncomment "print_date" below.
|
2009-02-18 20:34:26 +00:00
|
|
|
FORMAT="%a %b %d %R %Z %Y"
|
|
|
|
DATE=`date "+${FORMAT}"`
|
|
|
|
echo -n "${DATE} "
|
|
|
|
}
|
|
|
|
|
2009-09-13 21:01:36 +00:00
|
|
|
print_mem() {
|
2014-08-14 16:28:52 -05:00
|
|
|
MEM=`/usr/bin/top | grep Free: | cut -d " " -f6`
|
2009-09-13 21:01:36 +00:00
|
|
|
echo -n "Free mem: $MEM "
|
|
|
|
}
|
|
|
|
|
2009-02-11 07:17:06 +00:00
|
|
|
_print_cpu() {
|
2019-11-21 12:47:49 +01:00
|
|
|
printf "CPU: %3d%% User %3d%% Nice %3d%% Sys %3d%% Spin %3d%% Int %3d%% Idle " $1 $2 $3 $4 $5 $6
|
2009-02-11 07:17:06 +00:00
|
|
|
}
|
|
|
|
|
2009-01-23 08:51:56 +00:00
|
|
|
print_cpu() {
|
2009-02-11 07:17:06 +00:00
|
|
|
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
|
2009-01-23 08:51:56 +00:00
|
|
|
}
|
|
|
|
|
2019-11-21 17:59:53 +01:00
|
|
|
print_cpuspeed() {
|
|
|
|
CPU_SPEED=`/sbin/sysctl hw.cpuspeed | cut -d "=" -f2`
|
|
|
|
printf "CPU speed: %4d MHz " $CPU_SPEED
|
|
|
|
}
|
|
|
|
|
2019-11-21 17:18:56 +01:00
|
|
|
print_bat() {
|
2009-01-23 08:30:03 +00:00
|
|
|
BAT_STATUS=$1
|
|
|
|
BAT_LEVEL=$2
|
|
|
|
AC_STATUS=$3
|
|
|
|
|
|
|
|
if [ $AC_STATUS -ne 255 -o $BAT_STATUS -lt 4 ]; then
|
|
|
|
if [ $AC_STATUS -eq 0 ]; then
|
2009-01-23 08:51:56 +00:00
|
|
|
echo -n "on battery (${BAT_LEVEL}%)"
|
2009-01-23 08:30:03 +00:00
|
|
|
else
|
|
|
|
case $AC_STATUS in
|
|
|
|
1)
|
|
|
|
AC_STRING="on AC: "
|
|
|
|
;;
|
|
|
|
2)
|
|
|
|
AC_STRING="on backup AC: "
|
|
|
|
;;
|
|
|
|
*)
|
|
|
|
AC_STRING=""
|
|
|
|
;;
|
|
|
|
esac;
|
|
|
|
case $BAT_STATUS in
|
|
|
|
4)
|
|
|
|
BAT_STRING="(no battery)"
|
|
|
|
;;
|
|
|
|
[0-3])
|
|
|
|
BAT_STRING="(battery ${BAT_LEVEL}%)"
|
|
|
|
;;
|
|
|
|
*)
|
|
|
|
BAT_STRING="(battery unknown)"
|
|
|
|
;;
|
|
|
|
esac;
|
2018-04-16 22:35:38 -07:00
|
|
|
|
2009-01-23 08:30:03 +00:00
|
|
|
FULL="${AC_STRING}${BAT_STRING}"
|
|
|
|
if [ "$FULL" != "" ]; then
|
2009-01-23 08:51:56 +00:00
|
|
|
echo -n "$FULL"
|
2009-01-23 08:30:03 +00:00
|
|
|
fi
|
|
|
|
fi
|
|
|
|
fi
|
|
|
|
}
|
|
|
|
|
2019-12-16 23:43:23 +01:00
|
|
|
# cache the output of apm(8), no need to call that every second.
|
|
|
|
APM_DATA=""
|
|
|
|
I=0
|
2009-01-23 08:30:03 +00:00
|
|
|
while :; do
|
2019-12-16 23:43:23 +01:00
|
|
|
IOSTAT_DATA=`/usr/sbin/iostat -C | grep '[0-9]$'`
|
|
|
|
if [ $I -eq 0 ]; then
|
|
|
|
APM_DATA=`/usr/sbin/apm -alb`
|
|
|
|
fi
|
|
|
|
# print_date
|
|
|
|
print_mem
|
|
|
|
print_cpu $IOSTAT_DATA
|
|
|
|
print_cpuspeed
|
|
|
|
print_bat $APM_DATA
|
|
|
|
echo ""
|
|
|
|
I=$(( ( ${I} + 1 ) % 11 ))
|
|
|
|
sleep 1
|
2009-01-23 08:30:03 +00:00
|
|
|
done
|