From faef026d082375bf2e4c1d21d9d28b0e6aff559d Mon Sep 17 00:00:00 2001 From: Aurélien LAJOIE Date: Fri, 20 Dec 2019 01:51:41 +0100 Subject: Battery: add more parameters and option Allow to display the value Add parameters to set the warning message --- battery-widget/README.md | 8 ++++++++ battery-widget/battery.lua | 45 ++++++++++++++++++++++++++++++++++----------- 2 files changed, 42 insertions(+), 11 deletions(-) (limited to 'battery-widget') diff --git a/battery-widget/README.md b/battery-widget/README.md index 4ec0488..710f8b2 100644 --- a/battery-widget/README.md +++ b/battery-widget/README.md @@ -21,8 +21,16 @@ It is possible to customize widget by providing a table with all or some of the | 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_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 diff --git a/battery-widget/battery.lua b/battery-widget/battery.lua index d7c149c..d5e339f 100644 --- a/battery-widget/battery.lua +++ b/battery-widget/battery.lua @@ -24,9 +24,21 @@ local HOME = os.getenv("HOME") local battery_widget = {} local function worker(args) 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 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", widget = wibox.widget.imagebox, @@ -34,7 +46,16 @@ local function worker(args) }, 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 -- One way of creating a pop-up notification - naughty.notify local notification @@ -64,19 +85,19 @@ local function worker(args) -- beautiful.tooltip_bg = beautiful.bg_normal local function show_battery_warning() - naughty.notify{ - icon = HOME .. "/.config/awesome/nichosi.png", - icon_size=100, - text = "Huston, we have a problem", - title = "Battery is dying", - timeout = 5, hover_timeout = 0.5, - position = "bottom_right", + naughty.notify { + icon = warning_msg_icon, + icon_size = 100, + text = warning_msg_text, + title = warning_msg_title, + timeout = 25, -- show the warning for a longer time + hover_timeout = 0.5, + position = warning_msg_position, bg = "#F06060", fg = "#EEE9EF", width = 300, } end - local last_battery_check = os.time() local batteryType = "battery-good-symbolic" @@ -113,6 +134,8 @@ local function worker(args) end charge = charge / capacity + level_widget.text = string.format('%d%%', charge) + if (charge >= 0 and charge < 15) then batteryType = "battery-empty%s-symbolic" if status ~= 'Charging' and os.difftime(os.time(), last_battery_check) > 300 then @@ -138,13 +161,13 @@ local function worker(args) -- Update popup text -- battery_popup.text = string.gsub(stdout, "\n$", "") end, - battery_widget) + icon_widget) if display_notification then battery_widget:connect_signal("mouse::enter", function() show_battery_status(batteryType) end) battery_widget:connect_signal("mouse::leave", function() naughty.destroy(notification) end) end - return battery_widget + return wibox.container.margin(battery_widget, margin_left, margin_right) end return setmetatable(battery_widget, { __call = function(_, ...) return worker(...) end }) -- cgit v1.2.3