69 lines
1.3 KiB
Lua
69 lines
1.3 KiB
Lua
local awful = require("awful")
|
|
local beautiful = require("beautiful")
|
|
local wibox = require("wibox")
|
|
|
|
local _M = {}
|
|
|
|
function _M.update(stdout)
|
|
local vol_now = {
|
|
volume = "N/A",
|
|
muted = "N/A",
|
|
icon = "N/A",
|
|
}
|
|
|
|
vol_now.volume = stdout:gsub("%s+", "")
|
|
vol_now.volume = vol_now.volume:gsub("%%", "")
|
|
if vol_now.volume == "muted" then
|
|
vol_now.muted = true
|
|
vol_now.volume = -1
|
|
else
|
|
vol_now.volume = tonumber(vol_now.volume)
|
|
vol_now.muted = false
|
|
end
|
|
|
|
if vol_now.muted or vol_now.volume == 0 then
|
|
vol_now.icon = beautiful.volume_muted_icon
|
|
elseif vol_now.volume >= 66 then
|
|
vol_now.icon = beautiful.volume_high_icon
|
|
elseif vol_now.volume >= 33 then
|
|
vol_now.icon = beautiful.volume_medium_icon
|
|
else
|
|
vol_now.icon = beautiful.volume_low_icon
|
|
end
|
|
|
|
return vol_now
|
|
end
|
|
|
|
function _M.get()
|
|
local volume = awful.widget.watch(
|
|
{
|
|
awful.util.shell,
|
|
"-c",
|
|
"pamixer --get-volume-human",
|
|
},
|
|
1,
|
|
function(widget, stdout)
|
|
local vol_now = _M.update(stdout)
|
|
|
|
local icon = wibox.widget.imagebox(vol_now.icon)
|
|
local text = wibox.widget.textbox(vol_now.volume .. "% ")
|
|
|
|
widget.children = {
|
|
text,
|
|
icon,
|
|
}
|
|
end,
|
|
wibox.widget({
|
|
layout = wibox.layout.fixed.horizontal,
|
|
})
|
|
)
|
|
|
|
return volume
|
|
end
|
|
|
|
return setmetatable({}, {
|
|
__call = function(_, ...)
|
|
return _M.get(...)
|
|
end,
|
|
})
|