Files
dotFiles/__sketchybar/items/battery.lua
2024-09-16 03:19:04 +05:30

73 lines
1.6 KiB
Lua

local icons = require("icons")
local colors = require("colors")
local settings = require("settings")
local battery = sbar.add("item", "widgets.battery", {
position = "right",
icon = {
font = {
style = settings.font.style_map["Regular"],
size = 14.0,
},
},
label = { font = { family = settings.font.numbers } },
update_freq = 180,
popup = { align = "center" },
})
battery:subscribe({ "routine", "power_source_change", "system_woke" }, function()
sbar.exec("pmset -g batt", function(batt_info)
local icon = "!"
local label = "?"
local found, _, charge = batt_info:find("(%d+)%%")
if found then
charge = tonumber(charge)
label = charge .. "%"
end
local color = colors.green
local charging, _, _ = batt_info:find("AC Power")
if charging then
icon = icons.battery.charging
else
if found and charge > 80 then
icon = icons.battery._100
elseif found and charge > 60 then
icon = icons.battery._75
elseif found and charge > 40 then
icon = icons.battery._50
elseif found and charge > 20 then
icon = icons.battery._25
color = colors.orange
else
icon = icons.battery._0
color = colors.red
end
end
local lead = ""
if found and charge < 10 then
lead = "0"
end
battery:set({
icon = {
string = icon,
color = color,
},
label = { string = lead .. label },
})
end)
end)
sbar.add("bracket", "widgets.battery.bracket", { battery.name }, {
background = { color = colors.bg1 },
})
sbar.add("item", "widgets.battery.padding", {
position = "right",
width = settings.group_paddings,
})