Fix dotfiles structure
BIN
.config/awesome/awesome-wm-widgets/batteryarc-widget/10_c.png
Executable file
|
After Width: | Height: | Size: 1.0 KiB |
BIN
.config/awesome/awesome-wm-widgets/batteryarc-widget/10_d.png
Executable file
|
After Width: | Height: | Size: 956 B |
BIN
.config/awesome/awesome-wm-widgets/batteryarc-widget/20_c.png
Executable file
|
After Width: | Height: | Size: 1.1 KiB |
BIN
.config/awesome/awesome-wm-widgets/batteryarc-widget/20_d.png
Executable file
|
After Width: | Height: | Size: 1.0 KiB |
BIN
.config/awesome/awesome-wm-widgets/batteryarc-widget/80_c.png
Executable file
|
After Width: | Height: | Size: 2.1 KiB |
BIN
.config/awesome/awesome-wm-widgets/batteryarc-widget/80_d.png
Executable file
|
After Width: | Height: | Size: 1.1 KiB |
73
.config/awesome/awesome-wm-widgets/batteryarc-widget/README.md
Executable file
@@ -0,0 +1,73 @@
|
||||
# Batteryarc widget
|
||||
|
||||
[](https://github.com/streetturtle/awesome-wm-widgets/labels/batteryarc)
|
||||
|
||||
This widget is more informative version of [battery widget](https://github.com/streetturtle/awesome-wm-widgets/tree/master/battery-widget).
|
||||
|
||||
Depending of the battery status it could look following ways:
|
||||
|
||||
-  - less than 15 percent
|
||||
-  - less than 15 percent, charging
|
||||
-  - between 15 and 40 percent
|
||||
-  - between 15 and 40 percent, charging
|
||||
-  - more than 40 percent
|
||||
-  - more than 40 percent, charging
|
||||
|
||||
If a battery level is low then warning popup will show up:
|
||||
|
||||

|
||||
|
||||
## Customization
|
||||
|
||||
It is possible to customize widget by providing a table with all or some of the following config parameters:
|
||||
|
||||
| Name | Default | Description |
|
||||
|---|---|---|
|
||||
| `font` | Play 6 | Font |
|
||||
| `arc_thickness` | 2 | Thickness of the arc |
|
||||
| `show_current_level`| false | Show current charge level |
|
||||
| `size`| 18 | Size of the widget |
|
||||
| `timeout` | 10 | How often in seconds the widget refreshes |
|
||||
| `main_color` | `beautiful.fg_color` | Color of the text with the current charge level and the arc |
|
||||
| `bg_color` | `#ffffff11` | Color of the charge level background |
|
||||
| `low_level_color` | `#e53935` | Arc color when battery charge is less that 15% |
|
||||
| `medium_level_color` | `#c0ca33` | Arc color when battery charge is between 15% and 40% |
|
||||
| `charging_color` | `#43a047` | Color of the circle inside the arc when charging |
|
||||
| `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 |
|
||||
| `enable_battery_warning` | `true` | Display low battery warning |
|
||||
| `show_notification_mode` | `on_hover` | How to trigger a notification with the battery status: `on_hover`, `on_click` or `off` |
|
||||
| `notification_position` | `top_left` | Where to show she notification when triggered. Values: `top_right`, `top_left`, `bottom_left`, `bottom_right`, `top_middle`, `bottom_middle`. (default `top_right`) |
|
||||
|
||||
## Requirements
|
||||
|
||||
This widget requires the `acpi` command to be available to retrieve battery and
|
||||
power information.
|
||||
|
||||
## Installation
|
||||
|
||||
Clone repo, include widget and use it in **rc.lua**:
|
||||
|
||||
```lua
|
||||
local batteryarc_widget = require("awesome-wm-widgets.batteryarc-widget.batteryarc")
|
||||
...
|
||||
s.mytasklist, -- Middle widget
|
||||
{ -- Right widgets
|
||||
layout = wibox.layout.fixed.horizontal,
|
||||
...
|
||||
--[[default]]
|
||||
batteryarc_widget(),
|
||||
--[[or customized]]
|
||||
batteryarc_widget({
|
||||
show_current_level = true,
|
||||
arc_thickness = 1,
|
||||
}),
|
||||
}
|
||||
...
|
||||
```
|
||||
|
||||
## Troubleshooting
|
||||
|
||||
In case of any doubts or questions please raise an [issue](https://github.com/streetturtle/awesome-wm-widgets/issues/new).
|
||||
170
.config/awesome/awesome-wm-widgets/batteryarc-widget/batteryarc.lua
Executable file
@@ -0,0 +1,170 @@
|
||||
-------------------------------------------------
|
||||
-- Battery Arc Widget for Awesome Window Manager
|
||||
-- Shows the battery level of the laptop
|
||||
-- More details could be found here:
|
||||
-- https://github.com/streetturtle/awesome-wm-widgets/tree/master/batteryarc-widget
|
||||
|
||||
-- @author Pavel Makhov
|
||||
-- @copyright 2020 Pavel Makhov
|
||||
-------------------------------------------------
|
||||
|
||||
local awful = require("awful")
|
||||
local beautiful = require("beautiful")
|
||||
local naughty = require("naughty")
|
||||
local wibox = require("wibox")
|
||||
local watch = require("awful.widget.watch")
|
||||
|
||||
local HOME = os.getenv("HOME")
|
||||
local WIDGET_DIR = HOME .. '/.config/awesome/awesome-wm-widgets/batteryarc-widget'
|
||||
|
||||
local batteryarc_widget = {}
|
||||
|
||||
local function worker(user_args)
|
||||
|
||||
local args = user_args or {}
|
||||
|
||||
local font = args.font or 'Play 6'
|
||||
local arc_thickness = args.arc_thickness or 2
|
||||
local show_current_level = args.show_current_level or false
|
||||
local size = args.size or 18
|
||||
local timeout = args.timeout or 10
|
||||
local show_notification_mode = args.show_notification_mode or 'on_hover' -- on_hover / on_click
|
||||
local notification_position = args.notification_position or 'top_right' -- see naughty.notify position argument
|
||||
|
||||
local main_color = args.main_color or beautiful.fg_color
|
||||
local bg_color = args.bg_color or '#ffffff11'
|
||||
local low_level_color = args.low_level_color or '#e53935'
|
||||
local medium_level_color = args.medium_level_color or '#c0ca33'
|
||||
local charging_color = args.charging_color or '#43a047'
|
||||
|
||||
local warning_msg_title = args.warning_msg_title or 'Houston, 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 WIDGET_DIR .. '/spaceman.jpg'
|
||||
local enable_battery_warning = args.enable_battery_warning
|
||||
if enable_battery_warning == nil then
|
||||
enable_battery_warning = true
|
||||
end
|
||||
|
||||
local text = wibox.widget {
|
||||
font = font,
|
||||
align = 'center',
|
||||
valign = 'center',
|
||||
widget = wibox.widget.textbox
|
||||
}
|
||||
|
||||
local text_with_background = wibox.container.background(text)
|
||||
|
||||
batteryarc_widget = wibox.widget {
|
||||
text_with_background,
|
||||
max_value = 100,
|
||||
rounded_edge = true,
|
||||
thickness = arc_thickness,
|
||||
start_angle = 4.71238898, -- 2pi*3/4
|
||||
forced_height = size,
|
||||
forced_width = size,
|
||||
bg = bg_color,
|
||||
paddings = 2,
|
||||
widget = wibox.container.arcchart
|
||||
}
|
||||
|
||||
local last_battery_check = os.time()
|
||||
|
||||
--[[ Show warning notification ]]
|
||||
local function show_battery_warning()
|
||||
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 function update_widget(widget, stdout)
|
||||
local charge = 0
|
||||
local status
|
||||
for s in stdout:gmatch("[^\r\n]+") do
|
||||
local cur_status, charge_str, _ = string.match(s, '.+: ([%a%s]+), (%d?%d?%d)%%,?(.*)')
|
||||
if cur_status ~= nil and charge_str ~=nil then
|
||||
local cur_charge = tonumber(charge_str)
|
||||
if cur_charge > charge then
|
||||
status = cur_status
|
||||
charge = cur_charge
|
||||
end
|
||||
end
|
||||
end
|
||||
|
||||
widget.value = charge
|
||||
|
||||
if status == 'Charging' then
|
||||
text_with_background.bg = charging_color
|
||||
text_with_background.fg = '#000000'
|
||||
else
|
||||
text_with_background.bg = '#00000000'
|
||||
text_with_background.fg = main_color
|
||||
end
|
||||
|
||||
if show_current_level == true then
|
||||
--- if battery is fully charged (100) there is not enough place for three digits, so we don't show any text
|
||||
text.text = charge == 100
|
||||
and ''
|
||||
or string.format('%d', charge)
|
||||
else
|
||||
text.text = ''
|
||||
end
|
||||
|
||||
if charge < 15 then
|
||||
widget.colors = { low_level_color }
|
||||
if enable_battery_warning and status ~= 'Charging' and os.difftime(os.time(), last_battery_check) > 300 then
|
||||
-- if 5 minutes have elapsed since the last warning
|
||||
last_battery_check = os.time()
|
||||
|
||||
show_battery_warning()
|
||||
end
|
||||
elseif charge > 15 and charge < 40 then
|
||||
widget.colors = { medium_level_color }
|
||||
else
|
||||
widget.colors = { main_color }
|
||||
end
|
||||
end
|
||||
|
||||
watch("acpi", timeout, update_widget, batteryarc_widget)
|
||||
|
||||
-- Popup with battery info
|
||||
local notification
|
||||
local function show_battery_status()
|
||||
awful.spawn.easy_async([[bash -c 'acpi']],
|
||||
function(stdout, _, _, _)
|
||||
naughty.destroy(notification)
|
||||
notification = naughty.notify {
|
||||
text = stdout,
|
||||
title = "Battery status",
|
||||
timeout = 5,
|
||||
width = 200,
|
||||
position = notification_position,
|
||||
}
|
||||
end)
|
||||
end
|
||||
|
||||
if show_notification_mode == 'on_hover' then
|
||||
batteryarc_widget:connect_signal("mouse::enter", function() show_battery_status() end)
|
||||
batteryarc_widget:connect_signal("mouse::leave", function() naughty.destroy(notification) end)
|
||||
elseif show_notification_mode == 'on_click' then
|
||||
batteryarc_widget:connect_signal('button::press', function(_, _, _, button)
|
||||
if (button == 1) then show_battery_status() end
|
||||
end)
|
||||
end
|
||||
|
||||
return batteryarc_widget
|
||||
|
||||
end
|
||||
|
||||
return setmetatable(batteryarc_widget, { __call = function(_, ...)
|
||||
return worker(...)
|
||||
end })
|
||||
BIN
.config/awesome/awesome-wm-widgets/batteryarc-widget/spaceman.jpg
Executable file
|
After Width: | Height: | Size: 16 KiB |
BIN
.config/awesome/awesome-wm-widgets/batteryarc-widget/warning.png
Executable file
|
After Width: | Height: | Size: 13 KiB |