build/scripts/bashrc

150 lines
4.1 KiB
Bash

if [ ${TERM} == "dumb" ]; then
return
fi
export ARCH=arm
export VDPAU_DRIVER=sunxi
OUT=""
LOAD=$(w | sed -n 1p | awk '{print $(NF-2), $(NF-1),$(NF-0)}')
OUT="${OUT}Load: ${LOAD} "
## getting temperature from USB termometer
## http://www.dx.com/p/81105
##
if which temper >/dev/null; then
TEMPER=$(temper -c)
if echo $TEMPER | egrep -qv "Couldn't find the USB device"; then
TEMPER=$(echo "scale=1;${TEMPER}/1" | bc)
TEMPER="- Ambient: ${TEMPER}"
else
TEMPER=""
fi
fi
CEL=$(awk 'BEGIN { print "\302\260C"; }')
if [ -d "/sys/devices/platform/sunxi-i2c.0/i2c-0/0-0034/" ]; then
TEMP=$(cat /sys/devices/platform/sunxi-i2c.0/i2c-0/0-0034/temp1_input)
TEMP=$(echo "scale=1;${TEMP}/1000" | bc)
fi
# if we are reading A20 temp with daemon
if [ -f "/run/soc-temp" ]; then
TEMP=$(cat /run/soc-temp)
fi
# if we are reading from A20
if [ -d "/sys/devices/platform/a20-tp-hwmon/" ]; then
TEMP=$(cat /sys/devices/platform/a20-tp-hwmon/temp1_input)
TEMP=$(echo "scale=1;${TEMP}/1000" | bc)
fi
# if we are reading from A20 on newer kernel
if [ -d "/sys/devices/virtual/thermal/thermal_zone0/" ]; then
TEMP=$(cat /sys/devices/virtual/thermal/thermal_zone0/temp)
TEMP=$(echo "scale=1;${TEMP}/1000" | bc)
fi
OUT="${OUT}- Board: ${TEMP}${CEL} "
if [[ -n $TEMPER ]]; then
OUT=$OUT"${TEMPER}${CEL} "
fi
if [ "$(cat /proc/partitions |grep sd)" != "" ];then
SDA_TYPE=$(/sbin/udevadm info --query=all --name=sda | grep ID_BUS=)
SDA_TYPE=${SDA_TYPE#*=}
fi
# if we have a hard drive
if [[ -e '/dev/sda' && $SDA_TYPE == "ata" ]] ; then
HDDTEMP=$(/usr/sbin/hddtemp /dev/sda 2>&1)
if [ $? -eq 0 ]; then
HDDTEMP=$(echo ${HDDTEMP} | awk '{print $NF}')
HDDFREE=$(df -h /dev/sda1 | grep sda | awk '{ print " / " $(NF-2)}')
if [ "${HDDFREE}" != "" ]; then
HDDFREE="${HDDFREE}"b
fi
OUT="${OUT}- Drive: ${HDDTEMP}${HDDFREE} "
fi
fi
MEMFREE=$(free | sed -n 2p | awk '{print $(NF-3)}')
MEMBUFFERS=$(free | sed -n 2p | awk '{print $(NF-1)}')
MEMCACHED=$(free | sed -n 2p | awk '{print $(NF)}')
MEM=$(echo "(${MEMFREE}+${MEMBUFFERS}+${MEMCACHED})/1024" | bc)
OUT="${OUT}- Memory: ${MEM}Mb"
# Battery info for Allwinner
HARDWARE=$(cat /proc/cpuinfo | grep Hardware | awk '{print $3}')
# for root users which have acces to hw and allwinner and old kernel
if [[ "$UID" == 0 && "$(uname -r | cut -c 1-3)" == "3.4" && ($HARDWARE = "sun7i" || $HARDWARE = "Allwinner") ]]; then
if [ "$(printf '0x%X' $(($(i2cget -y -f 0 0x34 0x82) & 0xC3)))" != "0xC3" ]; then
i2cset -y -f 0 0x34 0x82 0xC3
fi
# read power OPERATING MODE register @01h
POWER_OP_MODE=$(i2cget -y -f 0 0x34 0x01)
BAT_EXIST=$(($(($POWER_OP_MODE&0x20))/32)) # divide by 32 is like shifting rigth 5 times
CHARG_IND=$(($(($POWER_OP_MODE&0x40))/64)) # divide by 64 is like shifting rigth 6 times
if [ "$BAT_EXIST" == "1" ]; then
#read battery voltage 79h, 78h 0 mV -> 000h, 1.1 mV/bit FFFh -> 4.5045 V
BAT_VOLT_LSB=$(i2cget -y -f 0 0x34 0x79)
BAT_VOLT_MSB=$(i2cget -y -f 0 0x34 0x78)
BAT_BIN=$(( $(($BAT_VOLT_MSB << 4)) | $(($(($BAT_VOLT_LSB & 0xF0)) >> 4)) ))
BAT_VOLT=$(echo "($BAT_BIN*1.1)"|bc)
# store maximum battery voltage to compare to
if [ -f "/etc/default/battery" ]; then
source "/etc/default/battery"
else
echo "MAX=$BAT_VOLT" > /etc/default/battery
echo "MIN=3484" >> /etc/default/battery
source "/etc/default/battery"
fi
# integer is enough, cut down the decimals
MAX=${MAX%.*}
BAT_VOLT=${BAT_VOLT%.*}
# if we have new max value, alter defaults
if [ "$BAT_VOLT" -gt "$MAX" ]; then
MAX=$BAT_VOLT
sed -e 's/MAX=.*/MAX='$BAT_VOLT'/g' -i /etc/default/battery
fi
# if we have new min value, alter defaults
if [ "$BAT_VOLT" -lt "$MIN" ]; then
MIN=$BAT_VOLT
#sed -e 's/MIN=.*/MIN='$BAT_VOLT'/g' -i /etc/default/battery
fi
# calculate percentage
percent=$(echo "($BAT_VOLT-$MIN)*100/($MAX-$MIN)"|bc)
# colorize output under certain percentage
if [ $percent -le 15 ]; then
color="31"
fi
BATT=" - Batt: "
# dispay charging / percentage
if [ "$CHARG_IND" == "1" ]; then
BATT=$BATT"charging $percent%"
else
BATT=$BATT"\e["$color"m$percent%\x1B[0m"
fi
fi
OUT="${OUT}${BATT}"
fi
echo ""
echo -e ${OUT}
echo ""