#!/bin/bash # # Battery Health # v1.0 # Andros Fenollosa # tanrax # Shows power percentaje and notice when you load # Variables BATTERY=$(ioreg -l | awk '$3~/Capacity/{c[$3]=$5}END{OFMT="%.0f%";max=c["\"MaxCapacity\""];print(max>0?100*c["\"CurrentCapacity\""]/max:"?")}') TYPE=$(pmset -g cap | sed -ne 's/^Capabilities for \(.*\) Power:$/\1/p') POR_LOW=45 POR_HIGH=85 LOW=False HIGH=False SAVE_LOCATION=$TMPDIR/batteryHealth BAD='🔴' AC='⚡️' # Get data if [ -f "$SAVE_LOCATION" ]; then DATA=$(cat "$SAVE_LOCATION") else DATA="$LOW|$HIGH" fi LOW=$(echo "$DATA" | cut -d "|" -f1) HIGH=$(echo "$DATA" | cut -d "|" -f2) # Functions function changeStatus { osascript -e "display notification \"$2\" with title \"$1\" sound name \"$3\"" &> /dev/null } function batteryLow { LOW=True changeStatus "Battery Low" $BATTERY% "Blow" } function batteryNormal { HIGH=False LOW=False } function batteryHigh { HIGH=True changeStatus "Battery high" $BATTERY% "Blow" } # Logic if [ $BATTERY -le $POR_LOW ] && [ $LOW = False ]; then batteryLow elif [ $BATTERY -ge $POR_HIGH ] && [ $HIGH = False ]; then batteryHigh elif [ $BATTERY -le $POR_HIGH ] && [ $BATTERY -ge $POR_LOW ]; then batteryNormal fi # Save data echo "$LOW|$HIGH" > "$SAVE_LOCATION"; # View battery if [ $TYPE = 'AC' ]; then echo $AC $BATTERY% else if [ $HIGH = True ] || [ $LOW = True ]; then echo $BAD $BATTERY% else echo $BATTERY% fi fi