|
|
|
|
@ -11,22 +11,21 @@ |
|
|
|
|
# Modified to add support for FreeBSD # |
|
|
|
|
########################################### |
|
|
|
|
|
|
|
|
|
if [[ "$OSTYPE" = darwin* ]] ; then |
|
|
|
|
if [[ "$OSTYPE" = darwin* ]]; then |
|
|
|
|
|
|
|
|
|
function battery_pct() { |
|
|
|
|
local smart_battery_status="$(ioreg -rc "AppleSmartBattery")" |
|
|
|
|
typeset -F maxcapacity=$(echo $smart_battery_status | grep '^.*"MaxCapacity"\ =\ ' | sed -e 's/^.*"MaxCapacity"\ =\ //') |
|
|
|
|
typeset -F currentcapacity=$(echo $smart_battery_status | grep '^.*"CurrentCapacity"\ =\ ' | sed -e 's/^.*CurrentCapacity"\ =\ //') |
|
|
|
|
integer i=$(((currentcapacity/maxcapacity) * 100)) |
|
|
|
|
echo $i |
|
|
|
|
function battery_is_charging() { |
|
|
|
|
ioreg -rc AppleSmartBattery | command grep -q '^.*"ExternalConnected"\ =\ Yes' |
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
function plugged_in() { |
|
|
|
|
[ $(ioreg -rc AppleSmartBattery | grep -c '^.*"ExternalConnected"\ =\ Yes') -eq 1 ] |
|
|
|
|
function battery_pct() { |
|
|
|
|
local smart_battery_status="$(ioreg -rc AppleSmartBattery)" |
|
|
|
|
local -F maxcapacity=$(command grep '^.*"MaxCapacity"\ =\ ' <<< $smart_battery_status | sed -e 's/^.*"MaxCapacity"\ =\ //') |
|
|
|
|
local -F currentcapacity=$(command grep '^.*"CurrentCapacity"\ =\ ' <<< $smart_battery_status | sed -e 's/^.*CurrentCapacity"\ =\ //') |
|
|
|
|
echo $(( (currentcapacity/maxcapacity) * 100 )) |
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
function battery_pct_remaining() { |
|
|
|
|
if plugged_in ; then |
|
|
|
|
if battery_is_charging; then |
|
|
|
|
echo "External Power" |
|
|
|
|
else |
|
|
|
|
battery_pct |
|
|
|
|
@ -35,9 +34,9 @@ if [[ "$OSTYPE" = darwin* ]] ; then |
|
|
|
|
|
|
|
|
|
function battery_time_remaining() { |
|
|
|
|
local smart_battery_status="$(ioreg -rc "AppleSmartBattery")" |
|
|
|
|
if [[ $(echo $smart_battery_status | grep -c '^.*"ExternalConnected"\ =\ No') -eq 1 ]] ; then |
|
|
|
|
timeremaining=$(echo $smart_battery_status | grep '^.*"AvgTimeToEmpty"\ =\ ' | sed -e 's/^.*"AvgTimeToEmpty"\ =\ //') |
|
|
|
|
if [ $timeremaining -gt 720 ] ; then |
|
|
|
|
if [[ $(echo $smart_battery_status | command grep -c '^.*"ExternalConnected"\ =\ No') -eq 1 ]]; then |
|
|
|
|
timeremaining=$(echo $smart_battery_status | command grep '^.*"AvgTimeToEmpty"\ =\ ' | sed -e 's/^.*"AvgTimeToEmpty"\ =\ //') |
|
|
|
|
if [ $timeremaining -gt 720 ]; then |
|
|
|
|
echo "::" |
|
|
|
|
else |
|
|
|
|
echo "~$((timeremaining / 60)):$((timeremaining % 60))" |
|
|
|
|
@ -48,11 +47,11 @@ if [[ "$OSTYPE" = darwin* ]] ; then |
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
function battery_pct_prompt () { |
|
|
|
|
if [[ $(ioreg -rc AppleSmartBattery | grep -c '^.*"ExternalConnected"\ =\ No') -eq 1 ]] ; then |
|
|
|
|
if ioreg -rc AppleSmartBattery | command grep -q '^.*"ExternalConnected"\ =\ No'; then |
|
|
|
|
b=$(battery_pct_remaining) |
|
|
|
|
if [ $b -gt 50 ] ; then |
|
|
|
|
if [[ $b -gt 50 ]]; then |
|
|
|
|
color='green' |
|
|
|
|
elif [ $b -gt 20 ] ; then |
|
|
|
|
elif [[ $b -gt 20 ]]; then |
|
|
|
|
color='yellow' |
|
|
|
|
else |
|
|
|
|
color='red' |
|
|
|
|
@ -63,24 +62,20 @@ if [[ "$OSTYPE" = darwin* ]] ; then |
|
|
|
|
fi |
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
function battery_is_charging() { |
|
|
|
|
[[ $(ioreg -rc "AppleSmartBattery"| grep '^.*"IsCharging"\ =\ ' | sed -e 's/^.*"IsCharging"\ =\ //') == "Yes" ]] |
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
elif [[ "$OSTYPE" = freebsd* ]] ; then |
|
|
|
|
elif [[ "$OSTYPE" = freebsd* ]]; then |
|
|
|
|
|
|
|
|
|
function battery_is_charging() { |
|
|
|
|
[[ $(sysctl -n hw.acpi.battery.state) -eq 2 ]] |
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
function battery_pct() { |
|
|
|
|
if (( $+commands[sysctl] )) ; then |
|
|
|
|
echo "$(sysctl -n hw.acpi.battery.life)" |
|
|
|
|
if (( $+commands[sysctl] )); then |
|
|
|
|
sysctl -n hw.acpi.battery.life |
|
|
|
|
fi |
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
function battery_pct_remaining() { |
|
|
|
|
if [ ! $(battery_is_charging) ] ; then |
|
|
|
|
if ! battery_is_charging; then |
|
|
|
|
battery_pct |
|
|
|
|
else |
|
|
|
|
echo "External Power" |
|
|
|
|
@ -88,39 +83,40 @@ elif [[ "$OSTYPE" = freebsd* ]] ; then |
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
function battery_time_remaining() { |
|
|
|
|
local remaining_time |
|
|
|
|
remaining_time=$(sysctl -n hw.acpi.battery.time) |
|
|
|
|
if [[ $remaining_time -ge 0 ]] ; then |
|
|
|
|
# calculation from https://www.unix.com/shell-programming-and-scripting/23695-convert-minutes-hours-minutes-seconds.html |
|
|
|
|
((hour=$remaining_time/60)) |
|
|
|
|
((minute=$remaining_time-$hour*60)) |
|
|
|
|
echo $hour:$minute |
|
|
|
|
if [[ $remaining_time -ge 0 ]]; then |
|
|
|
|
((hour = $remaining_time / 60 )) |
|
|
|
|
((minute = $remaining_time % 60 )) |
|
|
|
|
printf %02d:%02d $hour $minute |
|
|
|
|
fi |
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
function battery_pct_prompt() { |
|
|
|
|
local b color |
|
|
|
|
b=$(battery_pct_remaining) |
|
|
|
|
if [ ! $(battery_is_charging) ] ; then |
|
|
|
|
if [ $b -gt 50 ] ; then |
|
|
|
|
if battery_is_charging; then |
|
|
|
|
echo "∞" |
|
|
|
|
else |
|
|
|
|
if [[ $b -gt 50 ]]; then |
|
|
|
|
color='green' |
|
|
|
|
elif [ $b -gt 20 ] ; then |
|
|
|
|
elif [[ $b -gt 20 ]]; then |
|
|
|
|
color='yellow' |
|
|
|
|
else |
|
|
|
|
color='red' |
|
|
|
|
fi |
|
|
|
|
echo "%{$fg[$color]%}$(battery_pct_remaining)%%%{$reset_color%}" |
|
|
|
|
else |
|
|
|
|
echo "∞" |
|
|
|
|
fi |
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
elif [[ "$OSTYPE" = linux* ]] ; then |
|
|
|
|
elif [[ "$OSTYPE" = linux* ]]; then |
|
|
|
|
|
|
|
|
|
function battery_is_charging() { |
|
|
|
|
! acpi 2>/dev/null | command grep -q '^Battery.*Discharging' |
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
function battery_pct() { |
|
|
|
|
if (( $+commands[acpi] )) ; then |
|
|
|
|
if (( $+commands[acpi] )); then |
|
|
|
|
acpi 2>/dev/null | cut -f2 -d ',' | tr -cd '[:digit:]' |
|
|
|
|
fi |
|
|
|
|
} |
|
|
|
|
@ -140,13 +136,14 @@ elif [[ "$OSTYPE" = linux* ]] ; then |
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
function battery_pct_prompt() { |
|
|
|
|
local b=$(battery_pct_remaining) |
|
|
|
|
local b color |
|
|
|
|
b=$(battery_pct_remaining) |
|
|
|
|
if battery_is_charging; then |
|
|
|
|
echo "∞" |
|
|
|
|
else |
|
|
|
|
if [[ $b -gt 50 ]]; then |
|
|
|
|
color='green' |
|
|
|
|
elif [ $b -gt 20 ] ; then |
|
|
|
|
elif [[ $b -gt 20 ]]; then |
|
|
|
|
color='yellow' |
|
|
|
|
else |
|
|
|
|
color='red' |
|
|
|
|
@ -157,53 +154,50 @@ elif [[ "$OSTYPE" = linux* ]] ; then |
|
|
|
|
|
|
|
|
|
else |
|
|
|
|
# Empty functions so we don't cause errors in prompts |
|
|
|
|
function battery_pct_remaining() { |
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
function battery_time_remaining() { |
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
function battery_pct_prompt() { |
|
|
|
|
} |
|
|
|
|
function battery_is_charging { false } |
|
|
|
|
function battery_pct \ |
|
|
|
|
battery_pct_remaining \ |
|
|
|
|
battery_time_remaining \ |
|
|
|
|
battery_pct_prompt { } |
|
|
|
|
fi |
|
|
|
|
|
|
|
|
|
function battery_level_gauge() { |
|
|
|
|
local gauge_slots=${BATTERY_GAUGE_SLOTS:-10}; |
|
|
|
|
local green_threshold=${BATTERY_GREEN_THRESHOLD:-$(( gauge_slots * 0.6 ))}; |
|
|
|
|
local yellow_threshold=${BATTERY_YELLOW_THRESHOLD:-$(( gauge_slots * 0.4 ))}; |
|
|
|
|
local color_green=${BATTERY_COLOR_GREEN:-%F{green}}; |
|
|
|
|
local color_yellow=${BATTERY_COLOR_YELLOW:-%F{yellow}}; |
|
|
|
|
local color_red=${BATTERY_COLOR_RED:-%F{red}}; |
|
|
|
|
local color_reset=${BATTERY_COLOR_RESET:-%{%f%k%b%}}; |
|
|
|
|
local battery_prefix=${BATTERY_GAUGE_PREFIX:-'['}; |
|
|
|
|
local battery_suffix=${BATTERY_GAUGE_SUFFIX:-']'}; |
|
|
|
|
local filled_symbol=${BATTERY_GAUGE_FILLED_SYMBOL:-'▶'}; |
|
|
|
|
local empty_symbol=${BATTERY_GAUGE_EMPTY_SYMBOL:-'▷'}; |
|
|
|
|
local charging_color=${BATTERY_CHARGING_COLOR:-$color_yellow}; |
|
|
|
|
local charging_symbol=${BATTERY_CHARGING_SYMBOL:-'⚡'}; |
|
|
|
|
|
|
|
|
|
local battery_remaining_percentage=$(battery_pct); |
|
|
|
|
local gauge_slots=${BATTERY_GAUGE_SLOTS:-10} |
|
|
|
|
local green_threshold=${BATTERY_GREEN_THRESHOLD:-$(( gauge_slots * 0.6 ))} |
|
|
|
|
local yellow_threshold=${BATTERY_YELLOW_THRESHOLD:-$(( gauge_slots * 0.4 ))} |
|
|
|
|
local color_green=${BATTERY_COLOR_GREEN:-%F{green}} |
|
|
|
|
local color_yellow=${BATTERY_COLOR_YELLOW:-%F{yellow}} |
|
|
|
|
local color_red=${BATTERY_COLOR_RED:-%F{red}} |
|
|
|
|
local color_reset=${BATTERY_COLOR_RESET:-%{%f%k%b%}} |
|
|
|
|
local battery_prefix=${BATTERY_GAUGE_PREFIX:-'['} |
|
|
|
|
local battery_suffix=${BATTERY_GAUGE_SUFFIX:-']'} |
|
|
|
|
local filled_symbol=${BATTERY_GAUGE_FILLED_SYMBOL:-'▶'} |
|
|
|
|
local empty_symbol=${BATTERY_GAUGE_EMPTY_SYMBOL:-'▷'} |
|
|
|
|
local charging_color=${BATTERY_CHARGING_COLOR:-$color_yellow} |
|
|
|
|
local charging_symbol=${BATTERY_CHARGING_SYMBOL:-'⚡'} |
|
|
|
|
|
|
|
|
|
local battery_remaining_percentage=$(battery_pct) |
|
|
|
|
local filled empty gauge_color |
|
|
|
|
|
|
|
|
|
if [[ $battery_remaining_percentage =~ [0-9]+ ]]; then |
|
|
|
|
filled=$(( ($battery_remaining_percentage * $gauge_slots) / 100 )); |
|
|
|
|
empty=$(( $gauge_slots - $filled )); |
|
|
|
|
filled=$(( ($battery_remaining_percentage * $gauge_slots) / 100 )) |
|
|
|
|
empty=$(( $gauge_slots - $filled )) |
|
|
|
|
|
|
|
|
|
if [[ $filled -gt $green_threshold ]]; then |
|
|
|
|
gauge_color=$color_green; |
|
|
|
|
gauge_color=$color_green |
|
|
|
|
elif [[ $filled -gt $yellow_threshold ]]; then |
|
|
|
|
gauge_color=$color_yellow; |
|
|
|
|
gauge_color=$color_yellow |
|
|
|
|
else |
|
|
|
|
gauge_color=$color_red; |
|
|
|
|
gauge_color=$color_red |
|
|
|
|
fi |
|
|
|
|
else |
|
|
|
|
filled=$gauge_slots; |
|
|
|
|
empty=0; |
|
|
|
|
filled_symbol=${BATTERY_UNKNOWN_SYMBOL:-'.'}; |
|
|
|
|
filled=$gauge_slots |
|
|
|
|
empty=0 |
|
|
|
|
filled_symbol=${BATTERY_UNKNOWN_SYMBOL:-'.'} |
|
|
|
|
fi |
|
|
|
|
|
|
|
|
|
local charging=' ' |
|
|
|
|
battery_is_charging && charging=$charging_symbol; |
|
|
|
|
battery_is_charging && charging=$charging_symbol |
|
|
|
|
|
|
|
|
|
# Charging status and prefix |
|
|
|
|
printf ${charging_color//\%/\%\%}$charging${color_reset//\%/\%\%}${battery_prefix//\%/\%\%}${gauge_color//\%/\%\%} |
|
|
|
|
@ -214,5 +208,3 @@ function battery_level_gauge() { |
|
|
|
|
# Suffix |
|
|
|
|
printf ${color_reset//\%/\%\%}${battery_suffix//\%/\%\%}${color_reset//\%/\%\%} |
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|