blob: eb9b866746f71a53c9c1feea609e09b821c7918b (
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
|
#
# Battery
#
function __sf_section_battery -d "Displays battery symbol and charge"
# ------------------------------------------------------------------------------
# Configuration
# ------------------------------------------------------------------------------
# ------------------------------------------------------------------------------
# | SPACEFISH_BATTERY_SHOW | below threshold | above threshold | fully charged |
# |------------------------+-----------------+-----------------+---------------|
# | false | hidden | hidden | hidden |
# | always | shown | shown | shown |
# | true | shown | hidden | hidden |
# | charged | shown | hidden | shown |
# ------------------------------------------------------------------------------
__sf_util_set_default SPACEFISH_BATTERY_SHOW true
__sf_util_set_default SPACEFISH_BATTERY_PREFIX ""
__sf_util_set_default SPACEFISH_BATTERY_SUFFIX " "
__sf_util_set_default SPACEFISH_BATTERY_SYMBOL_CHARGING ⇡
__sf_util_set_default SPACEFISH_BATTERY_SYMBOL_DISCHARGING ⇣
__sf_util_set_default SPACEFISH_BATTERY_SYMBOL_FULL •
__sf_util_set_default SPACEFISH_BATTERY_THRESHOLD 10
# ------------------------------------------------------------------------------
# Section
# ------------------------------------------------------------------------------
# Show section only if any of the following is true
# - SPACEFISH_BATTERY_SHOW = "always"
# - SPACEFISH_BATTERY_SHOW = "true" and
# - battery percentage is below the given limit (default: 10%)
# - SPACEFISH_BATTERY_SHOW = "charged" and
# - Battery is fully charged
# Check that user wants to show battery levels
[ $SPACEFISH_BATTERY_SHOW = false ]; and return
set -l battery_data
set -l battery_percent
set -l battery_status
set -l battery_color
set -l battery_symbol
# Darwin and macOS machines
if type -q pmset
set battery_data (pmset -g batt | grep "InternalBattery")
# Return if no internal battery
if test -z (echo $battery_data)
return
end
set battery_percent (echo $battery_data | grep -oE "[0-9]{1,3}%")
# spaceship has echo $battery_data | awk -F '; *' 'NR==2 { print $2 }', but NR==2 did not return anything.
set battery_status (echo $battery_data | awk -F '; *' '{ print $2 }')
# Linux machines
else if type -q upower
set -l battery (upower -e | grep battery | head -1)
[ -z $battery ]; and return
set -l IFS # Clear IFS to allow for multi-line variables
set battery_data (upower -i $battery)
set battery_percent (echo $battery_data | grep percentage | awk '{print $2}')
set battery_status (echo $battery_data | grep state | awk '{print $2}')
# Windows machines.
else if type -q acpi
set -l battery_data (acpi -b 2>/dev/null | head -1)
# Return if no battery
[ -z $battery_data ]; and return
set battery_percent ( echo $battery_data | awk '{print $4}' )
set battery_status ( echo $battery_data | awk '{print tolower($3)}' )
else
return
end
# Remove trailing % and symbols for comparison
set battery_percent (echo $battery_percent | string trim --chars=%[,;])
if test "$battery_percent" -eq 100 -o -n (echo (string match -r "(charged|full)" $battery_status))
set battery_color green
else if test "$battery_percent" -lt "$SPACEFISH_BATTERY_THRESHOLD"
set battery_color red
else
set battery_color yellow
end
# Battery indicator based on current status of battery
if test "$battery_status" = "charging"
set battery_symbol $SPACEFISH_BATTERY_SYMBOL_CHARGING
else if test -n (echo (string match -r "^[dD]ischarg.*" $battery_status))
set battery_symbol $SPACEFISH_BATTERY_SYMBOL_DISCHARGING
else
set battery_symbol $SPACEFISH_BATTERY_SYMBOL_FULL
end
if test "$SPACEFISH_BATTERY_SHOW" = "always" \
-o "$battery_percent" -lt "$SPACEFISH_BATTERY_THRESHOLD" \
-o "$SPACEFISH_BATTERY_SHOW" = "charged" \
-a -n (echo (string match -r "(charged|full)" $battery_status))
__sf_lib_section \
$battery_color \
$SPACEFISH_BATTERY_PREFIX \
"$battery_symbol$battery_percent%" \
$SPACEFISH_BATTERY_SUFFIX
end
end
|