#!/bin/ksh

linux_server() {
        while true
        do
            printf " %s   %3s%%   %s°C   %s (priv)   %4sMhz  \n" \
                "$(who | cut -d" " -f1 | sort -u | wc -l)" \
                "$(ps -u d034266 -o pcpu | awk '/[0-9\.]/ { s=s+$1 } END { printf("%.0d\n", s); }')" \
                "$(sensors | awk '/^Core/ { s=$3+s } END { printf("%2d\n", s/60); }')" \
                "$(df -h --output=avail /priv/ | tail -1)" \
                "$(lscpu | awk '/^CPU MHz:/ { printf("%.4d", $3) }')"
            sleep 5
        done
}

openbsd_laptop() {
        while true
        do
            set -A _SYSV -- $(sysctl -n \
                                hw.sensors.cpu0.temp0 \
                                hw.sensors.acpithinkpad0.fan0 \
                                hw.cpuspeed \
                                    | cut -d" " -f1)

            set -A _CPUV -- $(sysctl -n \
                                hw.sensors.cpu{0,1,2,3,4,5,6,7,8,9,10,11}.frequency0 \
                                    | cut -d"." -f1)

            AVG=$(avg "${_CPUV[@]}")

            printf " %s%%   %2s°C   %4sRPM   %4sMhz (~%4.4sMhz)  \n" \
                "$(apm -l)" "${_SYSV[0]}" "${_SYSV[1]}" "${_SYSV[2]}" "${AVG}";

            sleep 5
        done
}

case $(hostname) in
    ld*) linux_server; ;;
    *.home.codevoid.de) openbsd_laptop; ;;
esac

