Battery: add more parameters and option

Allow to display the value
Add parameters to set the warning message
This commit is contained in:
Aurélien LAJOIE 2019-12-20 01:51:41 +01:00
parent 9bb53077d3
commit faef026d08
2 changed files with 42 additions and 11 deletions

View File

@ -21,8 +21,16 @@ It is possible to customize widget by providing a table with all or some of the
| Name | Default | Description | | Name | Default | Description |
|---|---|---| |---|---|---|
| `font` | Font | Play 8 |
| `show_current_level`| false | Show current charge level |
| `margin_right`|0| the right margin of the widget|
| `margin_left`|0| the left margin of the widget|
| `notification` | `false` | Display a notification on mouseover | | `notification` | `false` | Display a notification on mouseover |
| `notification_position` | `top_right` | The notification position | | `notification_position` | `top_right` | The notification position |
| `warning_msg_title` | _Huston, we have a problem_ | Title of the warning popup |
| `warning_msg_text` | _Battery is dying_ | Text of the warning popup |
| `warning_msg_position` | `bottom_right` | Position of the warning popup |
| `warning_msg_icon` | ~/.config/awesome/awesome-wm-widgets/batteryarc-widget/spaceman.jpg | Icon of the warning popup |
## Installation ## Installation

View File

@ -24,9 +24,21 @@ local HOME = os.getenv("HOME")
local battery_widget = {} local battery_widget = {}
local function worker(args) local function worker(args)
local args = args or {} local args = args or {}
local font = args.font or 'Play 8'
local show_current_level = args.show_current_level or false
local margin_left = args.margin_left or 0
local margin_right = args.margin_right or 0
local display_notification = args.notification or false local display_notification = args.notification or false
local position = args.notification_position or "top_right" local position = args.notification_position or "top_right"
battery_widget = wibox.widget {
local warning_msg_title = args.warning_msg_title or 'Huston, we have a problem'
local warning_msg_text = args.warning_msg_text or 'Battery is dying'
local warning_msg_position = args.warning_msg_position or 'bottom_right'
local warning_msg_icon = args.warning_msg_icon or HOME .. '/.config/awesome/awesome-wm-widgets/batteryarc-widget/spaceman.jpg'
icon_widget = wibox.widget {
{ {
id = "icon", id = "icon",
widget = wibox.widget.imagebox, widget = wibox.widget.imagebox,
@ -34,7 +46,16 @@ local function worker(args)
}, },
layout = wibox.container.margin(_, 0, 0, 3) layout = wibox.container.margin(_, 0, 0, 3)
} }
local level_widget = wibox.widget {
font = font,
widget = wibox.widget.textbox
}
battery_widget = wibox.widget {
icon_widget,
level_widget,
layout = wibox.layout.fixed.horizontal,
}
-- Popup with battery info -- Popup with battery info
-- One way of creating a pop-up notification - naughty.notify -- One way of creating a pop-up notification - naughty.notify
local notification local notification
@ -65,18 +86,18 @@ local function worker(args)
local function show_battery_warning() local function show_battery_warning()
naughty.notify { naughty.notify {
icon = HOME .. "/.config/awesome/nichosi.png", icon = warning_msg_icon,
icon_size = 100, icon_size = 100,
text = "Huston, we have a problem", text = warning_msg_text,
title = "Battery is dying", title = warning_msg_title,
timeout = 5, hover_timeout = 0.5, timeout = 25, -- show the warning for a longer time
position = "bottom_right", hover_timeout = 0.5,
position = warning_msg_position,
bg = "#F06060", bg = "#F06060",
fg = "#EEE9EF", fg = "#EEE9EF",
width = 300, width = 300,
} }
end end
local last_battery_check = os.time() local last_battery_check = os.time()
local batteryType = "battery-good-symbolic" local batteryType = "battery-good-symbolic"
@ -113,6 +134,8 @@ local function worker(args)
end end
charge = charge / capacity charge = charge / capacity
level_widget.text = string.format('%d%%', charge)
if (charge >= 0 and charge < 15) then if (charge >= 0 and charge < 15) then
batteryType = "battery-empty%s-symbolic" batteryType = "battery-empty%s-symbolic"
if status ~= 'Charging' and os.difftime(os.time(), last_battery_check) > 300 then if status ~= 'Charging' and os.difftime(os.time(), last_battery_check) > 300 then
@ -138,13 +161,13 @@ local function worker(args)
-- Update popup text -- Update popup text
-- battery_popup.text = string.gsub(stdout, "\n$", "") -- battery_popup.text = string.gsub(stdout, "\n$", "")
end, end,
battery_widget) icon_widget)
if display_notification then if display_notification then
battery_widget:connect_signal("mouse::enter", function() show_battery_status(batteryType) end) battery_widget:connect_signal("mouse::enter", function() show_battery_status(batteryType) end)
battery_widget:connect_signal("mouse::leave", function() naughty.destroy(notification) end) battery_widget:connect_signal("mouse::leave", function() naughty.destroy(notification) end)
end end
return battery_widget return wibox.container.margin(battery_widget, margin_left, margin_right)
end end
return setmetatable(battery_widget, { __call = function(_, ...) return worker(...) end }) return setmetatable(battery_widget, { __call = function(_, ...) return worker(...) end })