about summary refs log tree commit diff
path: root/.local/bin/battery-screen
blob: 26ac78a3c5120260761baa3e81afd0910f813e76 (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
#!/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