From 0da3cd94e5238af15ccc14b60f7687dad0feb947 Mon Sep 17 00:00:00 2001 From: srdusr Date: Mon, 29 Jan 2024 23:52:18 +0200 Subject: Add battery.sh --- battery.sh | 131 +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 131 insertions(+) create mode 100755 battery.sh diff --git a/battery.sh b/battery.sh new file mode 100755 index 0000000..a6c18f4 --- /dev/null +++ b/battery.sh @@ -0,0 +1,131 @@ +#!/usr/bin/bash + +# This script uses upower to get all the battery informations +# https://upower.freedesktop.org/docs/Device.html + +# Check if the system is not a laptop (by checking for the absence of a lid directory) +if [ ! -d "/proc/acpi/button/lid" ]; then + # If not a laptop, show system uptime + ICON="󰚥" + COLOR="" + UPTIME=$(uptime -p | sed 's/up //') # Get system uptime + SHORT_UPTIME=$(echo "$UPTIME" | awk -F " " '{print $1$2}' | sed 's/,$//') # Shortened uptime + STRING="$COLOR$ICON Up: $SHORT_UPTIME" + #STRING="$COLOR$ICON Uptime: $UPTIME" + echo "$STRING" + exit 0 +else + # Check if battery information is available + if upower -e | grep -q '/battery'; then + BATTERY_DEVICES=$(upower -e | grep '/battery' | grep -v 'DisplayDevice') + + if [ "$BATTERY_DEVICES" != "" ]; then + CHARGE=$(upower -i "$BATTERY_DEVICES" | awk '/percentage/ {print $2}' | sed 's/%//') + BAT_STATE=$(upower -i "$BATTERY_DEVICES" | awk '/state/ {print $2}') + + # Laptop is on battery, will show info about charging/discharging + if [[ $BAT_STATE == *'discharging'* ]]; then + ICON="󰂑" + COLOR="" + STRING="$COLOR$ICON Battery: $CHARGE%" + echo "$STRING" + exit 0 + fi + fi + else + # If no battery information is available + if [[ "$(upower -d | grep 'percentage' | awk '{print $2}')" == "0%" && "$(upower -d | grep 'on-battery' | awk '{print $2}')" == "no" ]]; then + ICON="󱟩 " + COLOR="" + STRING="$COLOR$ICON No Bat" + echo "$STRING" + exit 0 + fi + fi +fi + +# Charging +if [[ $BAT_STATE == *'discharging'* ]]; then + if [ "$CHARGE" -eq 0 ]; then + ICON="󰂎" + COLOR="%{F#fc8894}" + elif [ "$CHARGE" -gt 0 ] && [ "$CHARGE" -le 10 ]; then + ICON="󰁺" + COLOR="%{F#fc8894}" + elif [ "$CHARGE" -gt 10 ] && [ "$CHARGE" -le 20 ]; then + ICON="󰁻" + COLOR="%{F#fc8894}" + #notify-send -u critical "Battery Warning" "20% charge remaining!" + elif [ "$CHARGE" -gt 20 ] && [ "$CHARGE" -le 30 ]; then + ICON="󰁼" + COLOR="%{F#e3e3e3}" + elif [ "$CHARGE" -gt 30 ] && [ "$CHARGE" -le 40 ]; then + ICON="󰁾" + COLOR="%{F#e3e3e3}" + elif [ "$CHARGE" -gt 40 ] && [ "$CHARGE" -le 50 ]; then + ICON="󰁿" + COLOR="%{F#e3e3e3}" + elif [ "$CHARGE" -gt 50 ] && [ "$CHARGE" -le 60 ]; then + ICON="󰁿" + COLOR="%{F#e3e3e3}" + elif [ "$CHARGE" -gt 60 ] && [ "$CHARGE" -le 70 ]; then + ICON="󰂀" + COLOR="%{F#e3e3e3}" + elif [ "$CHARGE" -gt 70 ] && [ "$CHARGE" -le 80 ]; then + ICON="󰂁" + COLOR="%{F#8be09c}" + elif [ "$CHARGE" -gt 80 ] && [ "$CHARGE" -le 90 ]; then + ICON="󰂂" + COLOR="%{F#8be09c}" + elif [ "$CHARGE" -gt 90 ]; then + ICON="󰁹" + COLOR="%{F#8be09c}" + fi + # Discharging +elif [[ $BAT_STATE == *'charging'* ]]; then + if [ "$CHARGE" -eq 0 ]; then + ICON="󰢟" + COLOR="%{F#fc8894}" + elif [ "$CHARGE" -gt 0 ] && [ "$CHARGE" -le 10 ]; then + ICON="󰢜" + COLOR="%{F#fc8894}" + elif [ "$CHARGE" -gt 10 ] && [ "$CHARGE" -le 20 ]; then + ICON="󰂆" + COLOR="%{F#fc8894}" + elif [ "$CHARGE" -gt 20 ] && [ "$CHARGE" -le 30 ]; then + ICON="󰂇" + COLOR="%{F#e3e3e3}" + elif [ "$CHARGE" -gt 30 ] && [ "$CHARGE" -le 40 ]; then + ICON="󰂈" + COLOR="%{F#e3e3e3}" + elif [ "$CHARGE" -gt 40 ] && [ "$CHARGE" -le 50 ]; then + ICON="󰢝" + COLOR="%{F#e3e3e3}" + elif [ "$CHARGE" -gt 50 ] && [ "$CHARGE" -le 60 ]; then + ICON="󰂉" + COLOR="%{F#e3e3e3}" + elif [ "$CHARGE" -gt 60 ] && [ "$CHARGE" -le 70 ]; then + ICON="󰢞" + COLOR="%{F#e3e3e3}" + elif [ "$CHARGE" -gt 70 ] && [ "$CHARGE" -le 80 ]; then + ICON="󰂊" + COLOR="%{F#8be09c}" + elif [ "$CHARGE" -gt 80 ] && [ "$CHARGE" -le 90 ]; then + ICON="󰂋" + COLOR="%{F#8be09c}" + elif [ "$CHARGE" -gt 90 ]; then + ICON="󰂅" + COLOR="%{F#8be09c}" + fi +elif [[ $BAT_STATE == *'fully-charged'* ]]; then + ICON="󰂄" + COLOR="%{F#8be09c}" + #notify-send -u low "Battery Info" "Your battery is fully charged" +elif [[ $BAT_STATE == *'unknown'* ]]; then + ICON="󰂑" +fi + +STRING="$COLOR$ICON $CHARGE%" + +# Final formatted output. +echo "$STRING" -- cgit v1.2.3