aboutsummaryrefslogtreecommitdiff
path: root/battery.sh
blob: fcd6a7d994e63b40149e08dd5be84b595a1e212e (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
#!/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}')

            # 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

                # Fully charged
            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"
        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