Add script to show battery status.
Signed-off-by: Jacob Kiers <jacob@jacobkiers.net>
This commit is contained in:
		
							
								
								
									
										122
									
								
								bin/battery
									
									
									
									
									
										Executable file
									
								
							
							
						
						
									
										122
									
								
								bin/battery
									
									
									
									
									
										Executable file
									
								
							| @@ -0,0 +1,122 @@ | ||||
| #!/bin/sh | ||||
|  | ||||
| HEART_FULL=♥ | ||||
| HEART_EMPTY=♡ | ||||
| [ -z "$NUM_HEARTS" ] && | ||||
|     NUM_HEARTS=5 | ||||
|  | ||||
| cutinate() | ||||
| { | ||||
|     perc=$1 | ||||
|     inc=$(( 100 / $NUM_HEARTS)) | ||||
|  | ||||
|  | ||||
|     for i in `seq $NUM_HEARTS`; do | ||||
|         if [ $perc -lt 100 ]; then | ||||
|             echo $HEART_EMPTY | ||||
|         else | ||||
|             echo $HEART_FULL | ||||
|         fi | ||||
|         perc=$(( $perc + $inc )) | ||||
|     done | ||||
| } | ||||
|  | ||||
| linux_get_bat () | ||||
| { | ||||
|     bf=$(cat $BAT_FULL) | ||||
|     bn=$(cat $BAT_NOW) | ||||
|     echo $(( 100 * $bn / $bf )) | ||||
| } | ||||
|  | ||||
| freebsd_get_bat () | ||||
| { | ||||
|     sysctl -n hw.acpi.battery.life | ||||
| } | ||||
|  | ||||
| # Do with grep and awk unless too hard | ||||
|  | ||||
| # TODO Identify which machine we're on from teh script. | ||||
|  | ||||
| battery_status() | ||||
| { | ||||
| case $(uname -s) in | ||||
|     "Linux") | ||||
|         BATPATH=${BATPATH:-/sys/class/power_supply/BAT0} | ||||
|         STATUS=$BATPATH/status | ||||
|         [ "$1" = `cat $STATUS` ] || [ "$1" = "" ] || return 0 | ||||
|         if [ -f "$BATPATH/energy_full" ]; then | ||||
|             naming="energy" | ||||
|         elif [ -f "$BATPATH/charge_full" ]; then | ||||
|             naming="charge" | ||||
|         elif [ -f "$BATPATH/capacity" ]; then | ||||
|             cat "$BATPATH/capacity" | ||||
|             return 0 | ||||
|         fi | ||||
|         BAT_FULL=$BATPATH/${naming}_full | ||||
|         BAT_NOW=$BATPATH/${naming}_now | ||||
|         linux_get_bat | ||||
|         ;; | ||||
|     "FreeBSD") | ||||
|         STATUS=`sysctl -n hw.acpi.battery.state` | ||||
|         case $1 in | ||||
|             "Discharging") | ||||
|                 if [ $STATUS -eq 1 ]; then | ||||
|                     freebsd_get_bat | ||||
|                 fi | ||||
|                 ;; | ||||
|             "Charging") | ||||
|                 if [ $STATUS -eq 2 ]; then | ||||
|                     freebsd_get_bat | ||||
|                 fi | ||||
|                 ;; | ||||
|             "") | ||||
|                 freebsd_get_bat | ||||
|                 ;; | ||||
|         esac | ||||
|         ;; | ||||
|     "Darwin") | ||||
|         case $1 in | ||||
|             "Discharging") | ||||
|                 ext="No";; | ||||
|             "Charging") | ||||
|                 ext="Yes";; | ||||
|         esac | ||||
|  | ||||
|         ioreg -c AppleSmartBattery -w0 | \ | ||||
|         grep -o '"[^"]*" = [^ ]*' | \ | ||||
|         sed -e 's/= //g' -e 's/"//g' | \ | ||||
|         sort | \ | ||||
|         while read key value; do | ||||
|             case $key in | ||||
|                 "MaxCapacity") | ||||
|                     export maxcap=$value;; | ||||
|                 "CurrentCapacity") | ||||
|                     export curcap=$value;; | ||||
|                 "ExternalConnected") | ||||
|                     if [ -n "$ext" ] && [ "$ext" != "$value" ]; then | ||||
|                         exit | ||||
|                     fi | ||||
|                 ;; | ||||
|                 "FullyCharged") | ||||
|                     if [ "$value" = "Yes" ]; then | ||||
|                         exit | ||||
|                     fi | ||||
|                 ;; | ||||
|             esac | ||||
|             if [[ -n "$maxcap" && -n $curcap ]]; then | ||||
|                 echo $(( 100 * $curcap / $maxcap )) | ||||
|                 break | ||||
|             fi | ||||
|         done | ||||
| esac | ||||
| } | ||||
|  | ||||
| BATTERY_STATUS=`battery_status $1` | ||||
| [ -z "$BATTERY_STATUS" ] && exit | ||||
|  | ||||
| if [ -n "$CUTE_BATTERY_INDICATOR" ]; then | ||||
|     cutinate $BATTERY_STATUS | ||||
| else | ||||
|     echo ${BATTERY_STATUS}% | ||||
| fi | ||||
|  | ||||
		Reference in New Issue
	
	Block a user