tenseleyflow/ndotfiles / 3443025

Browse files

battery skbar script up

Authored by espadonne
SHA
3443025b0a4d20110c478779bd289ba13ab1dacc
Parents
8ac8d79
Tree
741642c

1 changed file

StatusFile+-
A sketchybar/plugins/batt.sh 64 0
sketchybar/plugins/batt.shadded
@@ -0,0 +1,64 @@
1
+#!/bin/zsh
2
+# dynamic battery icon script for SketchyBar
3
+#
4
+# NOTE: the code points for icons. 
5
+#       I'm using FA icons, which I pay for, but they have a
6
+#       free set you can add w. package manager
7
+
8
+COLOR_GOOD=0xff81A1C1
9
+COLOR_NORMAL=0xffEBCB8B
10
+COLOR_CHARGING=0xffA3BE8C
11
+COLOR_CRITICAL=0xffBF616A
12
+
13
+# default to bad news
14
+color=$COLOR_CRITICAL
15
+
16
+# Read PMSET output: first line for state, second for stats
17
+raw_state=$(pmset -g batt | head -1)
18
+raw=$(pmset -g batt | tail -1)
19
+
20
+# check if charging or discharging
21
+if echo "$raw_state" | grep -q "AC Power"; then
22
+  state="charging"
23
+else
24
+  state="discharging"
25
+fi
26
+
27
+# extract numeric percentage (and strip the '%')
28
+percent=$(echo "$raw" | grep -Eo '[0-9]+%' | head -1 | tr -d '%')
29
+
30
+# select icon based on state and percentage
31
+# TODO: @espadonne (mfw) case and cascade
32
+#       on the color transitions
33
+if [ "$state" = "charging" ]; then
34
+  icon=$'\uf376'
35
+  color=$COLOR_CHARGING
36
+elif [ "$percent" -ge 90 ]; then
37
+  icon=$'\uf240'
38
+  color=$COLOR_GOOD
39
+elif [ "$percent" -ge 65 ]; then
40
+  icon=$'\uf241'
41
+  color=$COLOR_GOOD
42
+elif [ "$percent" -ge 50 ]; then
43
+  icon=$'\uf241'
44
+  color=$COLOR_NORMAL
45
+elif [ "$percent" -ge 40 ]; then
46
+  icon=$'\uf242'
47
+  color=$COLOR_NORMAL
48
+elif [ "$percent" -ge 20 ]; then
49
+  icon=$'\uf243'
50
+  color=$COLOR_NORMAL
51
+elif [ "$percent" -ge 15 ]; then
52
+  icon=$'\uf243'
53
+  color=$COLOR_CRITICAL
54
+elif [ "$percent" -ge 5 ]; then
55
+  icon=$'\ue0b1'
56
+  color=$COLOR_CRITICAL
57
+else
58
+  icon=$'\uf377'
59
+  color=$COLOR_CRITICAL
60
+fi
61
+
62
+sketchybar --set "$NAME" icon=$icon
63
+sketchybar --set "$NAME" icon.color="${color}"
64
+sketchybar --set "$NAME" label="${percent}%"