46 lines
1.2 KiB
Lua
46 lines
1.2 KiB
Lua
local volume = {}
|
|
|
|
-- TODO: Refactor 'last_registered_signal'
|
|
local last_registered_signal
|
|
|
|
local DEFAULT_SIGNAL = "volume::value"
|
|
|
|
local vol = [[ str=$( pulsemixer --get-volume ); printf "$(pulsemixer --get-mute) ${str% *}\n" ]]
|
|
|
|
function volume.set_volume(val)
|
|
-- awful.spawn.with_shell('killall pulsemixer; pulsemixer --set-volume ' .. tonumber(val))
|
|
awful.spawn.with_shell('pulsemixer --set-volume ' .. tonumber(val))
|
|
-- volume.emit(last_registered_signal)
|
|
end
|
|
|
|
function volume.toggle_mute()
|
|
awful.spawn.with_shell('pulsemixer --toggle-mute ')
|
|
volume.emit(last_registered_signal)
|
|
end
|
|
|
|
--- callback: function(is_muted, volume)
|
|
function volume.get(callback)
|
|
awful.spawn.easy_async_with_shell(vol, function(out)
|
|
local val = gears.string.split(out, " ")
|
|
callback(tonumber(val[1]), tonumber(val[2]))
|
|
end)
|
|
end
|
|
|
|
function volume.emit(name)
|
|
volume.get(function(...)
|
|
awesome.emit_signal(name or DEFAULT_SIGNAL, ...)
|
|
end)
|
|
end
|
|
|
|
function volume.register_signal(signal_name, update_interval)
|
|
last_registered_signal = signal_name or DEFAULT_SIGNAL
|
|
gears.timer {
|
|
timeout = update_interval or 5,
|
|
call_now = true,
|
|
autostart = true,
|
|
callback = function() volume.emit(signal_name) end
|
|
}
|
|
end
|
|
|
|
return volume
|