#!/bin/sh -e # # battery: print the state of the battery # # Copyright (C) 2009 Raphaël Pinson. # Copyright (C) 2011-2014 Dustin Kirkland # # Authors: Raphaël Pinson # Dustin Kirkland # # This program is free software: you can redistribute it and/or modify # it under the terms of the GNU General Public License as published by # the Free Software Foundation, version 3 of the License. # # This program is distributed in the hope that it will be useful, # but WITHOUT ANY WARRANTY; without even the implied warranty of # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the # GNU General Public License for more details. # # You should have received a copy of the GNU General Public License # along with this program. If not, see . __battery_detail() { local bat for bat in /proc/acpi/battery/*; do cat "$bat/info" cat "$bat/state" done # FIXME: do the same thing with the /sys interface } __battery() { local bat line present sign state percent full rem color bcolor # Linux support for bat in $BATTERY /sys/class/power_supply/* /proc/acpi/battery/*; do present=""; full=""; rem=""; state="" case "$bat" in /sys/*) if [ -r "$bat/uevent" ]; then . "$bat/uevent" case "$POWER_SUPPLY_NAME" in AC|ac|Ac|aC) continue ;; esac present="$POWER_SUPPLY_PRESENT" # Some use "CHARGE", others use "ENERGY", still others "CAPACITY" [ -n "$POWER_SUPPLY_CAPACITY" ] && rem="$POWER_SUPPLY_CAPACITY" && full="100" [ -n "$POWER_SUPPLY_CHARGE_FULL" ] && full="$POWER_SUPPLY_CHARGE_FULL" [ -n "$POWER_SUPPLY_ENERGY_FULL" ] && full="$POWER_SUPPLY_ENERGY_FULL" [ -n "$POWER_SUPPLY_CHARGE_NOW" ] && rem="$POWER_SUPPLY_CHARGE_NOW" [ -n "$POWER_SUPPLY_ENERGY_NOW" ] && rem="$POWER_SUPPLY_ENERGY_NOW" state="$POWER_SUPPLY_STATUS" [ "$present" = "1" ] && [ -n "$full" ] && [ -n "$rem" ] && [ -n "$state" ] && break fi ;; /proc/*) [ -f "$bat/info" ] || continue while read line; do set -- ${line} case "$line" in present:*) # make sure that this battery is present [ "$2" = "no" ] && continue 2 present="$2";; last\ full\ capacity:*) full="$4";; esac [ -n "$present" -a -n "$full" ] && break done < "${bat}/info" while read line; do set -- ${line} case "$line" in remaining\ capacity:*) rem="$3";; charging\ state:*) state="$3";; esac [ -n "$rem" -a -n "$state" ] && break done < "$bat/state" [ -n "$full" ] && [ -n "$rem" ] && [ -n "$state" ] && break ;; esac done # Mac OS X support if $BYOBU_TEST /usr/sbin/ioreg >/dev/null 2>&1; then # MacOS support local key for key in CurrentCapacity MaxCapacity ExternalChargeCapable FullyCharged; do line=$(/usr/sbin/ioreg -n AppleSmartBattery -w0 | grep $key | sed -e 's/|//g' | awk '{ print $3 }') case "$key" in CurrentCapacity) rem="$line";; MaxCapacity) full="$line";; ExternalChargeCapable) if [ "${line}" = "Yes" ]; then state="charging" elif [ "${line}" = "No" ]; then state="discharging" fi ;; FullyCharged) if [ "${line}" = "Yes" ]; then state="charged" fi ;; esac done fi if [ $rem -ge 0 ] && [ $full -gt 0 ]; then percent=$(((100*$rem)/$full)) if [ "$percent" -lt 33 ]; then color="R k" bcolor="b R k" elif [ "$percent" -lt 67 ]; then color="Y k" bcolor="b Y k" else color="G k" bcolor="b G k" fi percent="${percent}${PCT}" # Convert state to lower case state=$(printf "%s" "$state" | $BYOBU_SED 'y/ABCDEFGHIJKLMNOPQRSTUVWXYZ/abcdefghijklmnopqrstuvwxyz/') case $state in charging) sign="+" ;; discharging) sign="-" ;; charged|unknown|full) sign="=" ;; *) sign="$state" ;; esac if [ -z "$percent" ]; then rm -f "$BYOBU_RUN_DIR/status.$BYOBU_BACKEND/battery"* return fi color $bcolor; printf "%s" "$percent"; color -; color $color; printf "%s" "$sign"; color -- fi } # vi: syntax=sh ts=4 noexpandtab