moved to personal fennel config for awesome and added qutebrowser
This commit is contained in:
parent
403cb92b7d
commit
688748f8a6
502 changed files with 8576 additions and 9597 deletions
265
awes2/widget/battery/init.lua
Normal file
265
awes2/widget/battery/init.lua
Normal file
|
@ -0,0 +1,265 @@
|
|||
local awful = require('awful')
|
||||
local wibox = require('wibox')
|
||||
local awful = require('awful')
|
||||
local gears = require('gears')
|
||||
local naughty = require('naughty')
|
||||
|
||||
local watch = awful.widget.watch
|
||||
|
||||
local apps = require('configuration.apps')
|
||||
|
||||
local clickable_container = require('widget.clickable-container')
|
||||
local dpi = require('beautiful').xresources.apply_dpi
|
||||
|
||||
local config_dir = gears.filesystem.get_configuration_dir()
|
||||
local widget_icon_dir = config_dir .. 'widget/battery/icons/'
|
||||
|
||||
|
||||
local return_button = function()
|
||||
|
||||
local battery_imagebox = wibox.widget {
|
||||
nil,
|
||||
{
|
||||
id = 'icon',
|
||||
image = widget_icon_dir .. 'battery-standard' .. '.svg',
|
||||
widget = wibox.widget.imagebox,
|
||||
resize = true
|
||||
},
|
||||
nil,
|
||||
expand = 'none',
|
||||
layout = wibox.layout.align.vertical
|
||||
}
|
||||
|
||||
local battery_percentage_text = wibox.widget {
|
||||
id = 'percent_text',
|
||||
text = '100%',
|
||||
font = 'VictorMono Nerd Font 10',
|
||||
align = 'center',
|
||||
valign = 'center',
|
||||
visible = true,
|
||||
widget = wibox.widget.textbox
|
||||
}
|
||||
|
||||
|
||||
local battery_widget = wibox.widget {
|
||||
layout = wibox.layout.fixed.horizontal,
|
||||
spacing = dpi(0),
|
||||
battery_imagebox,
|
||||
battery_percentage_text
|
||||
}
|
||||
|
||||
|
||||
local battery_button = wibox.widget {
|
||||
{
|
||||
battery_widget,
|
||||
margins = dpi(7),
|
||||
widget = wibox.container.margin
|
||||
},
|
||||
widget = clickable_container
|
||||
}
|
||||
|
||||
battery_button:buttons(
|
||||
gears.table.join(
|
||||
awful.button(
|
||||
{},
|
||||
1,
|
||||
nil,
|
||||
function()
|
||||
awful.spawn(apps.default.power_manager , false)
|
||||
end
|
||||
)
|
||||
)
|
||||
)
|
||||
|
||||
local battery_tooltip = awful.tooltip
|
||||
{
|
||||
objects = {battery_button},
|
||||
text = 'None',
|
||||
mode = 'outside',
|
||||
align = 'right',
|
||||
margin_leftright = dpi(8),
|
||||
margin_topbottom = dpi(8),
|
||||
preferred_positions = {'right', 'left', 'top', 'bottom'}
|
||||
}
|
||||
|
||||
-- Get battery info script
|
||||
local get_battery_info = function()
|
||||
awful.spawn.easy_async_with_shell('upower -i (upower -e | rg BAT)', function(stdout)
|
||||
|
||||
if (stdout == nil or stdout == '') then
|
||||
battery_tooltip:set_text('No battery detected!')
|
||||
battery_widget:set_visible(true)
|
||||
return
|
||||
end
|
||||
|
||||
-- Remove new line from the last line
|
||||
battery_tooltip:set_text(stdout:sub(1, -2))
|
||||
end)
|
||||
end
|
||||
|
||||
-- Update tooltip on startup
|
||||
get_battery_info()
|
||||
|
||||
-- Update tooltip on hover
|
||||
battery_widget:connect_signal('mouse::enter', function()
|
||||
get_battery_info()
|
||||
end)
|
||||
|
||||
|
||||
local check_percentage_cmd = [[
|
||||
upower -i (upower -e | rg BAT | rg 1) | rg percentage | awk '{print $2}' | tr -d '\n%'
|
||||
]]
|
||||
|
||||
local check_status_cmd = [[bash -c "
|
||||
upower -i (upower -e | rg BAT | rg 1) | rg state | awk '{print $2}' | tr -d '\n'
|
||||
"]]
|
||||
|
||||
local last_battery_check = os.time()
|
||||
local notify_critcal_battery = true
|
||||
|
||||
local function show_battery_warning()
|
||||
naughty.notification ({
|
||||
icon = widget_icon_dir .. 'battery-alert.svg',
|
||||
app_name = 'System notification',
|
||||
title = 'Battery is dying!',
|
||||
message = 'Hey, I think we have a problem here. Save your work before reaching the oblivion.',
|
||||
urgency = 'critical'
|
||||
})
|
||||
end
|
||||
|
||||
local update_battery = function(status)
|
||||
|
||||
local status = status:gsub('%\n', '')
|
||||
|
||||
awful.spawn.easy_async_with_shell(check_percentage_cmd, function(stdout)
|
||||
|
||||
local battery_percentage = tonumber(stdout)
|
||||
|
||||
battery_widget.spacing = dpi(5)
|
||||
battery_percentage_text.visible = true
|
||||
battery_percentage_text:set_text(battery_percentage .. "%")
|
||||
|
||||
local icon_name = 'battery'
|
||||
|
||||
|
||||
if status:match('discharging') then
|
||||
|
||||
if battery_percentage >= 0 and battery_percentage < 10 then
|
||||
|
||||
icon_name = icon_name .. '-' .. 'alert-red'
|
||||
|
||||
if os.difftime(os.time(), last_battery_check) > 300 or notify_critcal_battery then
|
||||
last_battery_check = os.time()
|
||||
notify_critcal_battery = false
|
||||
show_battery_warning()
|
||||
end
|
||||
|
||||
elseif battery_percentage > 10 and battery_percentage < 20 then
|
||||
|
||||
icon_name = icon_name .. '-' .. '10'
|
||||
|
||||
elseif battery_percentage >= 20 and battery_percentage < 30 then
|
||||
|
||||
icon_name = icon_name .. '-' .. '20'
|
||||
|
||||
elseif battery_percentage >= 30 and battery_percentage < 50 then
|
||||
|
||||
icon_name = icon_name .. '-' .. '30'
|
||||
|
||||
elseif battery_percentage >= 50 and battery_percentage < 60 then
|
||||
|
||||
icon_name = icon_name .. '-' .. '50'
|
||||
|
||||
elseif battery_percentage >= 60 and battery_percentage < 80 then
|
||||
|
||||
icon_name = icon_name .. '-' .. '60'
|
||||
|
||||
elseif battery_percentage >= 80 and battery_percentage < 90 then
|
||||
|
||||
icon_name = icon_name .. '-' .. '80'
|
||||
|
||||
elseif battery_percentage >= 90 and battery_percentage < 100 then
|
||||
|
||||
icon_name = icon_name .. '-' .. '90'
|
||||
|
||||
elseif battery_percentage == 100 then
|
||||
|
||||
icon_name = icon_name .. '-' .. battery_percentage
|
||||
end
|
||||
|
||||
elseif status:match('charging') then
|
||||
|
||||
if battery_percentage > 0 and battery_percentage < 20 then
|
||||
|
||||
icon_name = icon_name .. '-' .. status .. '-' .. '10'
|
||||
|
||||
elseif battery_percentage >= 20 and battery_percentage < 30 then
|
||||
|
||||
icon_name = icon_name .. '-' .. status .. '-' .. '20'
|
||||
|
||||
elseif battery_percentage >= 30 and battery_percentage < 50 then
|
||||
|
||||
icon_name = icon_name .. '-' .. status .. '-' .. '30'
|
||||
|
||||
elseif battery_percentage >= 50 and battery_percentage < 60 then
|
||||
|
||||
icon_name = icon_name .. '-' .. status .. '-' .. '50'
|
||||
|
||||
elseif battery_percentage >= 60 and battery_percentage < 80 then
|
||||
|
||||
icon_name = icon_name .. '-' .. status .. '-' .. '60'
|
||||
|
||||
elseif battery_percentage >= 80 and battery_percentage < 90 then
|
||||
|
||||
icon_name = icon_name .. '-' .. status .. '-' .. '80'
|
||||
|
||||
elseif battery_percentage >= 90 and battery_percentage < 100 then
|
||||
|
||||
icon_name = icon_name .. '-' .. status .. '-' .. '90'
|
||||
|
||||
else
|
||||
icon_name = icon_name .. '-' .. 'fully-charged'
|
||||
end
|
||||
|
||||
elseif status:match('fully') then
|
||||
|
||||
icon_name = icon_name .. '-' .. '100'
|
||||
|
||||
end
|
||||
|
||||
-- Debugger ;)
|
||||
-- naughty.notification({message=widget_icon_dir .. icon_name .. '.svg'})
|
||||
|
||||
battery_imagebox.icon:set_image(gears.surface.load_uncached(widget_icon_dir .. icon_name .. '.svg'))
|
||||
|
||||
collectgarbage('collect')
|
||||
end)
|
||||
end
|
||||
|
||||
-- Watch status if charging, discharging, fully-charged
|
||||
watch(check_status_cmd, 5, function(widget, stdout)
|
||||
|
||||
-- If no output or battery detected
|
||||
if (stdout == nil or stdout == '') then
|
||||
|
||||
battery_widget.spacing = dpi(0)
|
||||
battery_percentage_text.visible = true
|
||||
|
||||
battery_tooltip:set_text('No battery detected!')
|
||||
battery_imagebox.icon:set_image(gears.surface.load_uncached(widget_icon_dir .. 'battery-unknown' .. '.svg'))
|
||||
|
||||
return
|
||||
|
||||
end
|
||||
|
||||
update_battery(stdout)
|
||||
|
||||
end)
|
||||
|
||||
return battery_button
|
||||
|
||||
|
||||
end
|
||||
|
||||
|
||||
return return_button
|
Loading…
Add table
Add a link
Reference in a new issue