From a079c79ab81a4bc2f7cf7971db6373fefe1e6110 Mon Sep 17 00:00:00 2001 From: Pavel Makhov Date: Wed, 25 Jan 2017 22:48:35 -0500 Subject: use widget.watch --- battery-widget-v4/battery.lua | 79 +++++++++++++++++++++---------------------- 1 file changed, 39 insertions(+), 40 deletions(-) diff --git a/battery-widget-v4/battery.lua b/battery-widget-v4/battery.lua index eb467d7..b391b2c 100644 --- a/battery-widget-v4/battery.lua +++ b/battery-widget-v4/battery.lua @@ -1,59 +1,58 @@ local wibox = require("wibox") local awful = require("awful") local naughty = require("naughty") +local watch = require("awful.widget.watch") +-- Battery 0: Discharging, 75%, 01:51:38 remaining +-- Battery 0: Charging, 53%, 00:57:43 until charged -batteryIcon = wibox.widget { -widget = wibox.widget.imagebox -} +batteryIcon = wibox.widget { widget = wibox.widget.imagebox } -function refresh_icon() - awful.spawn.easy_async([[bash -c 'acpi | cut -d, -f 2 | egrep -o "[0-9]{1,3}"']], - function(stdout, stderr, reason, exit_code) - local batteryType - local charge = tonumber(stdout) - if (charge >= 0 and charge < 20) then - batteryType="battery-empty" - show_battery_warning() +watch( + "acpi", 10, + function(widget, stdout, stderr, exitreason, exitcode) + local batteryType + local bar, status, charge, time = string.match(stdout, '(.+): (%a+), (%d%d)%%, (.+)') + charge = tonumber(charge) + if (charge >= 0 and charge < 20) then + batteryType="battery-empty" + show_battery_warning() elseif (charge >= 20 and charge < 40) then batteryType="battery-caution" elseif (charge >= 40 and charge < 60) then batteryType="battery-low" elseif (charge >= 60 and charge < 80) then batteryType="battery-good" elseif (charge >= 80 and charge <= 100) then batteryType="battery-full" - end - batteryIcon.image = "/usr/share/icons/Arc-Icons/panel/22/" .. batteryType .. ".svg" - end) -end + end + if status == 'Charging' then + batteryType = batteryType .. '-charging' + end + batteryIcon.image = "/usr/share/icons/Arc-Icons/panel/22/" .. batteryType .. ".svg" + end +) function show_battery_status() - awful.spawn.easy_async([[bash -c 'acpi | cut -d, -f 2,3']], - function(stdout, stderr, reason, exit_code) - naughty.notify{ - text = stdout, - title = "Battery status", - timeout = 5, hover_timeout = 0.5, - width = 200, - } - end - ) + awful.spawn.easy_async([[bash -c 'acpi']], + function(stdout, stderr, reason, exit_code) + naughty.notify{ + text = stdout, + title = "Battery status", + timeout = 5, hover_timeout = 0.5, + width = 200, + } + end + ) end function show_battery_warning() - naughty.notify{ - text = "Huston, we have a problem", - title = "Battery is dying", - timeout = 5, hover_timeout = 0.5, - position = "bottom_right", - bg = "#F06060", - fg = "#EEE9EF", - width = 200, + naughty.notify{ + text = "Huston, we have a problem", + title = "Battery is dying", + timeout = 5, hover_timeout = 0.5, + position = "bottom_right", + bg = "#F06060", + fg = "#EEE9EF", + width = 200, } end --- timer to refresh icon -local batteryWidgetTimer = timer({ timeout = 60 }) -batteryWidgetTimer:connect_signal("timeout", function() refresh_icon() end) -batteryWidgetTimer:start() -batteryWidgetTimer:emit_signal("timeout") - -- popup with battery info -batteryIcon:connect_signal("mouse::enter", function() show_battery_status() end) \ No newline at end of file +batteryIcon:connect_signal("mouse::enter", function() show_battery_status() end) -- cgit v1.2.3