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
|
#!/usr/bin/env lua
local function read(path)
local f = io.open(path)
if not f then return nil end
local v = tonumber(f:read('*l'))
f:close()
return v
end
local function batterytext()
local base = '/sys/class/power_supply/macsmc-battery/'
local energy_now = read(base .. 'energy_now')
local energy_full = read(base .. 'energy_full')
local status_f = io.open(base .. 'status')
if not energy_now or not energy_full or not status_f then
return { { full_text = 'bat ?' } }
end
local status = status_f:read('*l')
status_f:close()
local capacity = math.floor(energy_now / energy_full * 100 + 0.5)
local text_color = '#ffffff'
local battery_symbol = ' '
if capacity < 30 then
text_color = '#ed8796'
battery_symbol = ''
elseif capacity > 70 then
text_color = '#a6da95'
battery_symbol = ''
else
text_color = '#eed49f'
battery_symbol = ''
end
local symbol = ({
Charging = '',
Discharging = battery_symbol,
})[status] or ' '
return string.format('%s %2d%%', symbol, capacity), text_color
end
function hexToRgb(hex)
hex = hex:gsub("#", "")
local r = tonumber(hex:sub(1, 2), 16)
local g = tonumber(hex:sub(3, 4), 16)
local b = tonumber(hex:sub(5, 6), 16)
return r, g, b
end
function printHexColor(text, hex)
local r, g, b = hexToRgb(hex)
local colorCode = string.format("\27[38;2;%d;%d;%dm", r, g, b)
local resetCode = "\27[0m"
print(colorCode .. text .. resetCode)
end
while true do
printHexColor(batterytext())
os.execute("sleep 1") -- Wait for 1 second
end
|