alsa{bar}: togglechannel added (HDMI outputs)

This commit is contained in:
copycat-killer 2016-08-28 13:57:58 +02:00
parent 0e37d220b7
commit 19b510cfc4
3 changed files with 17 additions and 5 deletions

View File

@ -26,14 +26,20 @@ local function worker(args)
local timeout = args.timeout or 5 local timeout = args.timeout or 5
local settings = args.settings or function() end local settings = args.settings or function() end
alsa.cmd = args.cmd or "amixer" alsa.cmd = args.cmd or "amixer"
alsa.channel = args.channel or "Master" alsa.channel = args.channel or "Master"
alsa.widget = wibox.widget.textbox('') alsa.togglechannel = args.togglechannel
alsa.widget = wibox.widget.textbox('')
function alsa.update() function alsa.update()
mixer = read_pipe(string.format("%s get %s", alsa.cmd, alsa.channel)) mixer = read_pipe(string.format("%s get %s", alsa.cmd, alsa.channel))
l,s = string.match(mixer, "([%d]+)%%.*%[([%l]*)") l,s = string.match(mixer, "([%d]+)%%.*%[([%l]*)")
-- HDMIs can have a channel different from Master for toggling mute
if alsa.togglechannel then
s = string.match(read_pipe(string.format("%s get %s", alsa.cmd, alsa.togglechannel)), "%[(%a+)%]")
end
if alsa.last_level ~= l or alsa.last_status ~= s then if alsa.last_level ~= l or alsa.last_status ~= s then
volume_now = { level = l, status = s } volume_now = { level = l, status = s }
alsa.last_level = l alsa.last_level = l

View File

@ -27,7 +27,7 @@ local setmetatable = setmetatable
-- lain.widgets.alsabar -- lain.widgets.alsabar
local alsabar = { local alsabar = {
channel = "Master", channel = "Master",
step = "2%", step = "1%",
colors = { colors = {
background = beautiful.bg_normal, background = beautiful.bg_normal,
@ -104,6 +104,7 @@ local function worker(args)
alsabar.cmd = args.cmd or "amixer" alsabar.cmd = args.cmd or "amixer"
alsabar.channel = args.channel or alsabar.channel alsabar.channel = args.channel or alsabar.channel
alsabar.togglechannel = args.togglechannel
alsabar.step = args.step or alsabar.step alsabar.step = args.step or alsabar.step
alsabar.colors = args.colors or alsabar.colors alsabar.colors = args.colors or alsabar.colors
alsabar.notifications = args.notifications or alsabar.notifications alsabar.notifications = args.notifications or alsabar.notifications
@ -127,6 +128,11 @@ local function worker(args)
-- Capture mixer control state: [5%] ... ... [on] -- Capture mixer control state: [5%] ... ... [on]
local volu, mute = string.match(mixer, "([%d]+)%%.*%[([%l]*)") local volu, mute = string.match(mixer, "([%d]+)%%.*%[([%l]*)")
-- HDMIs can have a channel different from Master for toggling mute
if alsabar.togglechannel then
mute = string.match(read_pipe(string.format("%s get %s", alsabar.cmd, alsabar.togglechannel)), "%[(%a+)%]")
end
if (volu and tonumber(volu) ~= alsabar._current_level) or (mute and string.match(mute, "on") ~= alsabar._muted) if (volu and tonumber(volu) ~= alsabar._current_level) or (mute and string.match(mute, "on") ~= alsabar._muted)
then then
alsabar._current_level = tonumber(volu) alsabar._current_level = tonumber(volu)

2
wiki

@ -1 +1 @@
Subproject commit 1bfbcb9581fb4f335b44a05e608dd759ea7552e1 Subproject commit 0612d0161aa8ea65ddeba84ca47bf5a60777fe46