#!/bin/sh timeout=5 _sys_memory() { free -m | awk '/^Mem/{print $6;exit 0;}' } _sys_uptime() { uptime | sed -re's/^.*up[ ]+//g' -e's/^([^,]*),.*/\1/g' -e's/^([^ ]+)[ ]*(.).*/\1\2/g' } wireless_info() { _if="$1" printf "WiFi: %s %s %s %s" \ "$_if" \ "$(nmcli c | awk "/$_if/"'{print $1}')" \ "$(ip -4 addr show dev "$_if" | awk '/inet /{print $2}')" \ "$(awk "/^$_if/"'{print $4+0}' /proc/net/wireless)dbm" } eth_info() { _if="$1" printf "Eth: %s %s %s" \ "$_if" \ "$(ip -4 addr show dev "$_if" | awk '/inet /{print $2}')" \ "" # "$(ifconfig "$_if" | grep -oE '[0-9]+baseT')" } network_info() { # default_if="$(netstat -rnf inet | awk '/^default/{print $8}')" default_if="$(ip route | awk '/^default/{print $5;exit 0;}')" if [ -z "$default_if" ] ; then echo "No conn" elif [ -d "/sys/class/net/$default_if/wireless" ] ; then wireless_info "$default_if" else eth_info "$default_if" fi } batt_status() { sudo tlp-stat -b | awk 'BEGIN{ORS=" "} /\/status/{print $3}/^Charge/{print $3}'; } cpu_freq() { # cat /proc/cpuinfo | grep '^cpu MHz' | awk '{print $4}' | sort -nr | sed 1q # Average out the CPU frequency # cat /proc/cpuinfo | awk 'BEGIN{n=0;mhz=0;}/^cpu MHz/{mhz += $4;n++;}END{print mhz/n;}' # Max/min # cat /proc/cpuinfo \ # | grep '^cpu MHz' \ # | sort -rnk 4,4 \ # | sed -n -e 1p -e '$p' \ # | awk '{printf("%0.2f ", $4/1000)} END{print ""}' # Just show the first four CPUs grep '^cpu MHz' /proc/cpuinfo \ | awk '{printf("%0.1f\n", $4/1000)}' \ | sort \ | uniq \ | sort -rn \ | sed 4q \ | tr '\n' ' ' } tlp_status() { tlp-stat -s | sed -n 's/^Mode *= //p' } status_line() { echo \ "Temp: $(sensors | sed -n 's/^temp1:[\t ]*//p' | sed 's/ *//g' | sed 1q | tr -d '\n')|"\ "Fan: $(sensors | sed -n 's/^fan1:[\t ]*//p')|"\ "Cpu Freq: $(cpu_freq)mhz|"\ "Batt: $(batt_status)|"\ "$(network_info)|"\ "Free Mem: $(_sys_memory)|"\ "Uptime: $(_sys_uptime)|"\ "$(date '+%m.%d.%Y %H:%M:%S')" } x230_status_line() { echo \ "Fan: $(sensors | sed -n 's/^fan1:[\t ]*//p')|"\ "Batt: $(batt_status | sed -e's/ *$//g')|"\ "$(network_info)|"\ "$(date '+%m.%d.%Y %H:%M:%S')" } dell7590_status_line() { echo \ "Batt: $(batt_status | sed -e's/ *$//g')|"\ "$(network_info)|"\ "$(date '+%m.%d.%Y %H:%M:%S')" } t495_status_line() { echo \ "CPU: $(cpu_freq)|"\ "TLP: $(tlp_status)|"\ "Batt: $(batt_status | sed -e's/ *$//g')|"\ "$(network_info)|"\ "$(date '+%m.%d.%Y %H:%M:%S')" } _type="$1"; shift while true ; do xsetroot -name "$("${_type}_status_line" "$@")" sleep "$timeout" done