Skip to content

Commit 51499f1

Browse files
pschmittmartinbeentjes
authored andcommitted
Fix multiple batteries on linux (#57)
1 parent 7810c8d commit 51499f1

File tree

3 files changed

+15
-16
lines changed

3 files changed

+15
-16
lines changed

scripts/battery_percentage.sh

Lines changed: 8 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -9,19 +9,19 @@ print_battery_percentage() {
99
if command_exists "pmset"; then
1010
pmset -g batt | grep -o "[0-9]\{1,3\}%"
1111
elif command_exists "upower"; then
12-
local batteries=( $(upower -e | grep battery) )
13-
if [ -z "$batteries" ]; then
12+
local battery=$(upower -e | grep -m 1 battery)
13+
if [ -z "$battery" ]; then
1414
return
1515
fi
1616
local energy
1717
local energy_full
18-
for battery in ${batteries[@]}; do
19-
energy=$(upower -i $battery | awk -v nrg="$energy" '/energy:/ {print nrg+$2}')
20-
energy_full=$(upower -i $battery | awk -v nrgfull="$energy_full" '/energy-full:/ {print nrgfull+$2}')
21-
done
22-
echo $energy $energy_full | awk '{printf("%d%%", ($1/$2)*100)}'
18+
energy=$(upower -i $battery | awk -v nrg="$energy" '/energy:/ {print nrg+$2}')
19+
energy_full=$(upower -i $battery | awk -v nrgfull="$energy_full" '/energy-full:/ {print nrgfull+$2}')
20+
if [ -n "$energy" ] && [ -n "$energy_full" ]; then
21+
echo $energy $energy_full | awk '{printf("%d%%", ($1/$2)*100)}'
22+
fi
2323
elif command_exists "acpi"; then
24-
acpi -b | grep -Eo "[0-9]+%"
24+
acpi -b | grep -m 1 -Eo "[0-9]+%"
2525
fi
2626
}
2727

scripts/battery_remain.sh

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -43,7 +43,7 @@ print_battery_remain() {
4343
if command_exists "pmset"; then
4444
pmset_battery_remaining_time
4545
elif command_exists "upower"; then
46-
battery=$(upower -e | grep battery | head -1)
46+
battery=$(upower -e | grep -m 1 battery)
4747
if is_chrome; then
4848
if battery_discharging; then
4949
upower -i $battery | grep 'time to empty' | awk '{printf "- %s %s left", $4, $5}'
@@ -54,7 +54,7 @@ print_battery_remain() {
5454
upower -i $battery | grep -E '(remain|time to empty)' | awk '{print $(NF-1)}'
5555
fi
5656
elif command_exists "acpi"; then
57-
acpi -b | grep -Eo "[0-9]+:[0-9]+:[0-9]+"
57+
acpi -b | grep -m 1 -Eo "[0-9]+:[0-9]+:[0-9]+"
5858
fi
5959
}
6060

@@ -66,7 +66,7 @@ print_battery_full() {
6666
if command_exists "pmset"; then
6767
pmset_battery_remaining_time
6868
elif command_exists "upower"; then
69-
battery=$(upower -e | grep battery | head -1)
69+
battery=$(upower -e | grep -m 1 battery)
7070
upower -i $battery | grep 'time to full' | awk '{printf "- %s %s till full", $4, $5}'
7171
fi
7272
}

scripts/helpers.sh

Lines changed: 4 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -31,11 +31,10 @@ battery_status() {
3131
if command_exists "pmset"; then
3232
pmset -g batt | awk -F '; *' 'NR==2 { print $2 }'
3333
elif command_exists "upower"; then
34-
# sort order: attached, charging, discharging
35-
for battery in $(upower -e | grep battery); do
36-
upower -i $battery | grep state | awk '{print $2}'
37-
done | sort | head -1
34+
local battery
35+
battery=$(upower -e | grep -m 1 battery)
36+
upower -i $battery | awk '/state/ {print $2}'
3837
elif command_exists "acpi"; then
39-
acpi -b | grep -oi 'discharging' | awk '{print tolower($0)}'
38+
acpi -b | awk '{gsub(/,/, ""); print tolower($3); exit}'
4039
fi
4140
}

0 commit comments

Comments
 (0)