#!/bin/bash # omarchy:summary=Returns a formatted battery status string with percentage and power draw/charge. # omarchy:args=[--shell] shell_output=false case "${1:-}" in "") ;; --shell) shell_output=true ;; *) echo "Usage: omarchy-battery-status [--shell]" >&2 exit 2 ;; esac battery=$(upower -e 2>/dev/null | grep BAT | head -n 1) [[ -z $battery ]] && exit 0 battery_info=$(upower -i "$battery") percentage=$(awk '/percentage/ { print int($2); exit }' <<<"$battery_info") power_rate=$(awk '/energy-rate/ { rounded = sprintf("%.1f", $2) sub(/\.0$/, "", rounded) print rounded exit }' <<<"$battery_info") state=$(awk '/state/ { print $2; exit }' <<<"$battery_info") time_remaining=$(omarchy-battery-remaining-time 2>/dev/null) capacity=$(omarchy-battery-capacity 2>/dev/null) if [[ $shell_output == "true" ]]; then printf 'percentage\t%s\n' "${percentage}%" printf 'state\t%s\n' "$state" printf 'rate\t%s\n' "${power_rate}W" printf 'size\t%s\n' "${capacity}Wh" printf 'time\t%s\n' "$time_remaining" cycles=$(cat /sys/class/power_supply/BAT*/cycle_count 2>/dev/null | head -1) end=$(cat /sys/class/power_supply/BAT*/charge_control_end_threshold 2>/dev/null | head -1) start=$(cat /sys/class/power_supply/BAT*/charge_control_start_threshold 2>/dev/null | head -1) [[ -n $cycles ]] && printf 'cycles\t%s\n' "$cycles" if [[ -n $end ]]; then if [[ -n $start && $start != $end ]]; then printf 'threshold\t%s-%s%%\n' "$start" "$end" else printf 'threshold\t%s%%\n' "$end" fi fi exit 0 fi if [[ $state == "charging" ]]; then echo "Battery ${percentage}% · ${time_remaining} to full ·  ${power_rate}W / ${capacity}Wh" else echo "Battery ${percentage}% · ${time_remaining} left ·  ${power_rate}W / ${capacity}Wh" fi