-- from https://awesome.naquadah.org/wiki/Volume_control_and_display -- 2016-12-13 --local wibox = require("wibox") --local awful = require("awful") -- --volume_widget = wibox.widget.textbox() --volume_widget:set_align("right") -- --function update_volume(widget) -- local fd = io.popen("amixer sget Master") -- local status = fd:read("*all") -- fd:close() -- -- local volume = tonumber(string.match(status, "(%d?%d?%d)%%")) / 100 -- -- volume = string.format("% 3d", volume) -- -- status = string.match(status, "%[(o[^%]]*)%]") -- -- -- starting colour -- local sr, sg, sb = 0x3F, 0x3F, 0x3F -- -- ending colour -- local er, eg, eb = 0xDC, 0xDC, 0xCC -- -- local ir = math.floor(volume * (er - sr) + sr) -- local ig = math.floor(volume * (eg - sg) + sg) -- local ib = math.floor(volume * (eb - sb) + sb) -- interpol_colour = string.format("%.2x%.2x%.2x", ir, ig, ib) -- if string.find(status, "on", 1, true) then -- volume = " " -- else -- volume = " M " -- end -- widget:set_markup(volume) --end -- --update_volume(volume_widget) -- --mytimer = timer({ timeout = 1 }) --mytimer:connect_signal("timeout", function () update_volume(volume_widget) end) --mytimer:start() local wibox = require("wibox") local awful = require("awful") volume_widget = wibox.widget.textbox() volume_widget:set_align("right") function update_volume(widget) local fd = io.popen("amixer sget Master") local status = fd:read("*all") fd:close() -- local volume = tonumber(string.match(status, "(%d?%d?%d)%%")) / 100 local volume = string.match(status, "(%d?%d?%d)%%") volume = string.format("%02d", volume) status = string.match(status, "%[(o[^%]]*)%]") if string.find(status, "on", 1, true) then -- For the volume numbers note = '♬' volume = ' '.. note .. volume .. "%" .. " " else -- For the mute button -- rest = '𝄻' rest = '♬' volume = " ".. rest .. volume .. "%" .. " " end widget:set_markup(volume) end update_volume(volume_widget) -- mytimer = timer({ timeout = 0.2 }) -- mytimer:connect_signal("timeout", function () update_volume(volume_widget) end) -- mytimer:start() dbus.request_name("session", "com.ch1p.avm") dbus.add_match("session", "interface='com.ch1p.avm',member='valueChanged'") dbus.connect_signal("com.ch1p.avm", function() update_volume(volume_widget) end )