From 19b510cfc4ab3843f974aa494c58a477bb8ce508 Mon Sep 17 00:00:00 2001 From: copycat-killer Date: Sun, 28 Aug 2016 13:57:58 +0200 Subject: [PATCH] alsa{bar}: togglechannel added (HDMI outputs) --- widgets/alsa.lua | 12 +++++++++--- widgets/alsabar.lua | 8 +++++++- wiki | 2 +- 3 files changed, 17 insertions(+), 5 deletions(-) diff --git a/widgets/alsa.lua b/widgets/alsa.lua index d85a080..7500097 100644 --- a/widgets/alsa.lua +++ b/widgets/alsa.lua @@ -26,14 +26,20 @@ local function worker(args) local timeout = args.timeout or 5 local settings = args.settings or function() end - alsa.cmd = args.cmd or "amixer" - alsa.channel = args.channel or "Master" - alsa.widget = wibox.widget.textbox('') + alsa.cmd = args.cmd or "amixer" + alsa.channel = args.channel or "Master" + alsa.togglechannel = args.togglechannel + alsa.widget = wibox.widget.textbox('') function alsa.update() mixer = read_pipe(string.format("%s get %s", alsa.cmd, alsa.channel)) 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 volume_now = { level = l, status = s } alsa.last_level = l diff --git a/widgets/alsabar.lua b/widgets/alsabar.lua index 39bf394..b7c66b7 100644 --- a/widgets/alsabar.lua +++ b/widgets/alsabar.lua @@ -27,7 +27,7 @@ local setmetatable = setmetatable -- lain.widgets.alsabar local alsabar = { channel = "Master", - step = "2%", + step = "1%", colors = { background = beautiful.bg_normal, @@ -104,6 +104,7 @@ local function worker(args) alsabar.cmd = args.cmd or "amixer" alsabar.channel = args.channel or alsabar.channel + alsabar.togglechannel = args.togglechannel alsabar.step = args.step or alsabar.step alsabar.colors = args.colors or alsabar.colors alsabar.notifications = args.notifications or alsabar.notifications @@ -127,6 +128,11 @@ local function worker(args) -- Capture mixer control state: [5%] ... ... [on] 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) then alsabar._current_level = tonumber(volu) diff --git a/wiki b/wiki index 1bfbcb9..0612d01 160000 --- a/wiki +++ b/wiki @@ -1 +1 @@ -Subproject commit 1bfbcb9581fb4f335b44a05e608dd759ea7552e1 +Subproject commit 0612d0161aa8ea65ddeba84ca47bf5a60777fe46 -- 2.39.2