-
--[[
-
- Licensed under GNU General Public License v2
- * (c) 2013, Luke Bonham
- * (c) 2010-2012, Peter Hofmann
-
+
+ Licensed under GNU General Public License v2
+ * (c) 2013, Luca CPZ
+ * (c) 2010-2012, Peter Hofmann
+
--]]
local first_line = require("lain.helpers").first_line
min = math.min }
local string = { format = string.format }
local ipairs = ipairs
-local type = type
local tonumber = tonumber
-- Battery infos
local batteries = args.batteries or (args.battery and {args.battery}) or {"BAT0"}
local ac = args.ac or "AC0"
local notify = args.notify or "on"
+ local n_perc = args.n_perc or { 5, 15 }
local settings = args.settings or function() end
+ bat_notification_critical_preset = {
+ title = "Battery exhausted",
+ text = "Shutdown imminent",
+ timeout = 15,
+ fg = "#000000",
+ bg = "#FFFFFF"
+ }
+
bat_notification_low_preset = {
title = "Battery low",
text = "Plug the cable!",
bg = "#CDCDCD"
}
- bat_notification_critical_preset = {
- title = "Battery exhausted",
- text = "Shutdown imminent",
+ bat_notification_charged_preset = {
+ title = "Battery full",
+ text = "You can unplug the cable",
timeout = 15,
- fg = "#000000",
- bg = "#FFFFFF"
+ fg = "#202020",
+ bg = "#CDCDCD"
}
bat_now = {
bat_now.n_perc[i] = 0
end
+ -- used to notify full charge only once before discharging
+ local fullnotification = false
+
function bat.update()
local sum_rate_current = 0
local sum_rate_voltage = 0
widget = bat.widget
settings()
- -- notifications for low and critical states
- if notify == "on" and type(bat_now.perc) == "number" and bat_now.status == "Discharging" then
- if bat_now.perc <= 5 then
- bat.id = naughty.notify({
- preset = bat_notification_critical_preset,
- replaces_id = bat.id
- }).id
- elseif bat_now.perc <= 15 then
+ -- notifications for critical, low, and full levels
+ if notify == "on" then
+ if bat_now.status == "Discharging" then
+ if tonumber(bat_now.perc) <= n_perc[1] then
+ bat.id = naughty.notify({
+ preset = bat_notification_critical_preset,
+ replaces_id = bat.id
+ }).id
+ elseif tonumber(bat_now.perc) <= n_perc[2] then
+ bat.id = naughty.notify({
+ preset = bat_notification_low_preset,
+ replaces_id = bat.id
+ }).id
+ end
+ fullnotification = false
+ elseif bat_now.status == "Full" and not fullnotification then
bat.id = naughty.notify({
- preset = bat_notification_low_preset,
+ preset = bat_notification_charged_preset,
replaces_id = bat.id
}).id
+ fullnotification = true
end
end
end