dotfiles/awesome/modules/battery.lua

74 lines
1.8 KiB
Lua

local awful = require("awful")
local wibox = require("wibox")
--local beautiful = require("beautiful")
local gears = require("gears")
require("modules/laptop_detector")
if not is_laptop then
battery_widget = wibox.widget.textbox()
return
end
local tohex = function(value)
local h = string.format("%x", value)
if h:len() == 1 then
h = "0" .. h
end
return h
end
-- battery percentage
local battery_text = awful.widget.watch("cat /sys/class/power_supply/BAT0/capacity", 30, function(widget, stdout)
for line in stdout:gmatch("[^\r\n]+") do
widget.text = line .. "%"
break
end
widget.align = "center"
end)
local battery_charging = awful.widget.watch("cat /sys/class/power_supply/AC/online", 5, function(widget, stdout)
for line in stdout:gmatch("[^\r\n]+") do
if line == "1" then
widget.text = " +"
else
widget.text = " -"
end
break
end
end)
local battery_bar = awful.widget.watch("cat /sys/class/power_supply/BAT0/capacity", 30, function(widget, stdout)
local charge = 0
for line in stdout:gmatch("[^\r\n]+") do
charge = tonumber(line)
break
end
widget.value = charge
local red = 0
local green = 102
if charge <= 50 then
red = (50 - charge) * 5
green = charge * 2
end
local color = "#" .. tohex(red) .. tohex(green) .. "00"
widget.color = color
widget.max_value = 100
widget.forced_width = 64
widget.border_color = color --"#008866"
widget.background_color = "#000000"
widget.border_width = 1
widget.shape = function(cr, width, height) gears.shape.octogon(cr, width, height, 2) end
widget.margins = { top = 1, bottom = 1, left = 5, right = 5 }
end,
wibox.widget.progressbar())
battery_widget = {
battery_bar,
battery_text,
battery_charging,
layout = wibox.layout.stack
}