madduck's git repository
Every one of the projects in this repository is available at the canonical
URL git://git.madduck.net/madduck/pub/<projectpath> — see
each project's metadata for the exact URL.
All patches and comments are welcome. Please squash your changes to logical
commits before using git-format-patch and git-send-email to
patches@git.madduck.net.
If you'd read over the Git project's submission guidelines and adhered to them,
I'd be especially grateful.
SSH access, as well as push access can be individually
arranged.
If you use my repositories frequently, consider adding the following
snippet to ~/.gitconfig and using the third clone URL listed for each
project:
[url "git://git.madduck.net/madduck/"]
insteadOf = madduck:
-- lain.widgets.bat
local function worker(args)
-- lain.widgets.bat
local function worker(args)
- local bat = {}
- local args = args or {}
- local timeout = args.timeout or 30
- local battery = args.battery or "BAT0"
- local notify = args.notify or "on"
+ local bat = {}
+ local args = args or {}
+ local timeout = args.timeout or 30
+ local battery = args.battery or "BAT0"
+ local ac = args.ac or "AC0"
+ local notify = args.notify or "on"
local settings = args.settings or function() end
bat.widget = wibox.widget.textbox('')
local settings = args.settings or function() end
bat.widget = wibox.widget.textbox('')
function update()
bat_now = {
function update()
bat_now = {
- status = "Not present",
- perc = "N/A",
- time = "N/A",
- watt = "N/A"
+ status = "Not present",
+ ac_status = "N/A",
+ perc = "N/A",
+ time = "N/A",
+ watt = "N/A"
- local bstr = "/sys/class/power_supply/" .. battery
-
+ local bstr = "/sys/class/power_supply/" .. battery
local present = first_line(bstr .. "/present")
if present == "1"
then
local present = first_line(bstr .. "/present")
if present == "1"
then
- local rate = first_line(bstr .. "/power_now") or
- first_line(bstr .. "/current_now")
-
- local ratev = first_line(bstr .. "/voltage_now")
+ local ratep = tonumber(first_line(bstr .. "/power_now"))
+ local ratec = tonumber(first_line(bstr .. "/current_now"))
+ local ratev = tonumber(first_line(bstr .. "/voltage_now"))
- local rem = first_line(bstr .. "/energy_now") or
- first_line(bstr .. "/charge_now")
+ local rem = tonumber(first_line(bstr .. "/energy_now") or
+ first_line(bstr .. "/charge_now"))
- local tot = first_line(bstr .. "/energy_full") or
- first_line(bstr .. "/charge_full")
+ local tot = tonumber(first_line(bstr .. "/energy_full") or
+ first_line(bstr .. "/charge_full"))
bat_now.status = first_line(bstr .. "/status") or "N/A"
bat_now.status = first_line(bstr .. "/status") or "N/A"
-
- rate = tonumber(rate) or 1
- ratev = tonumber(ratev)
- rem = tonumber(rem)
- tot = tonumber(tot)
+ bat_now.ac_status = first_line(string.format("/sys/class/power_supply/%s/online", ac)) or "N/A"
local time_rat = 0
if bat_now.status == "Charging"
then
local time_rat = 0
if bat_now.status == "Charging"
then
- time_rat = (tot - rem) / rate
+ time_rat = (tot - rem) / (ratep or ratec)
elseif bat_now.status == "Discharging"
then
elseif bat_now.status == "Discharging"
then
+ time_rat = rem / (ratep or ratec)
end
local hrs = math.floor(time_rat)
end
local hrs = math.floor(time_rat)
bat_now.time = string.format("%02d:%02d", hrs, min)
bat_now.time = string.format("%02d:%02d", hrs, min)
- bat_now.perc = first_line(bstr .. "/capacity")
-
- if not bat_now.perc then
- local perc = (rem / tot) * 100
- if perc <= 100 then
- bat_now.perc = string.format("%d", perc)
- elseif perc > 100 then
- bat_now.perc = "100"
- elseif perc < 0 then
- bat_now.perc = "0"
- end
+ local perc = tonumber(first_line(bstr .. "/capacity")) or math.floor((rem / tot) * 100)
+
+ if perc <= 100 then
+ bat_now.perc = string.format("%d", perc)
+ elseif perc > 100 then
+ bat_now.perc = "100"
+ elseif perc < 0 then
+ bat_now.perc = "0"
- if rate ~= nil and ratev ~= nil then
- bat_now.watt = string.format("%.2fW", (rate * ratev) / 1e12)
+ if ratep then
+ bat_now.watt = string.format("%.2fW", ratep)
+ bat_now.watt = string.format("%.2fW", (ratev * ratec) / 1e12)
end
widget = bat.widget
settings()
-- notifications for low and critical states
end
widget = bat.widget
settings()
-- notifications for low and critical states
- if bat_now.status == "Discharging" and notify == "on" and bat_now.perc ~= nil
+ if bat_now.status == "Discharging" and notify == "on" and bat_now.perc
then
local nperc = tonumber(bat_now.perc) or 100
if nperc <= 5
then
local nperc = tonumber(bat_now.perc) or 100
if nperc <= 5