X-Git-Url: https://git.madduck.net/etc/awesome.git/blobdiff_plain/0180aa3bc348520c01479c40cdf6343e36ce3e59..1134630a54d403d1c50b6ed487e9bb5d67319954:/widgets/alsabar.lua?ds=sidebyside

diff --git a/widgets/alsabar.lua b/widgets/alsabar.lua
index 6a03a10..a4c63ea 100644
--- a/widgets/alsabar.lua
+++ b/widgets/alsabar.lua
@@ -15,6 +15,7 @@ local math         = { modf   = math.modf }
 local string       = { format = string.format,
                        match  = string.match,
                        rep    = string.rep }
+local type         = type
 local tonumber     = tonumber
 local setmetatable = setmetatable
 
@@ -43,9 +44,9 @@ local function worker(args)
 
     alsabar.cmd                 = args.cmd or "amixer"
     alsabar.channel             = args.channel or "Master"
+    alsabar.togglechannel       = args.togglechannel
     alsabar.colors              = args.colors or alsabar.colors
     alsabar.followtag           = args.followtag or false
-    alsabar._notify             = args.notify or "on"
     alsabar.notification_preset = args.notification_preset
 
     if not alsabar.notification_preset then
@@ -53,6 +54,11 @@ local function worker(args)
         alsabar.notification_preset.font = "Monospace 11"
     end
 
+    if alsabar.togglechannel then
+        alsabar.cmd = { awful.util.shell, "-c", string.format("%s get %s; %s get %s",
+        alsabar.cmd, alsabar.channel, alsabar.cmd, alsabar.togglechannel) }
+    end
+
     alsabar.bar = wibox.widget {
         forced_height    = height,
         forced_width     = width,
@@ -68,7 +74,7 @@ local function worker(args)
 
     alsabar.tooltip = awful.tooltip({ objects = { alsabar.bar } })
 
-    function alsabar.update()
+    function alsabar.update(callback)
         helpers.async(alsabar.cmd, function(mixer)
             local volu,mute = string.match(mixer, "([%d]+)%%.*%[([%l]*)")
             if (volu and tonumber(volu) ~= alsabar._current_level) or (mute and string.match(mute, "on") ~= alsabar._muted) then
@@ -89,6 +95,8 @@ local function worker(args)
                 volume_now.status = mute
 
                 settings()
+
+                if type(callback) == "function" then callback() end
             end
         end)
     end
@@ -116,9 +124,7 @@ local function worker(args)
         end)
     end
 
-    timer_id = string.format("alsabar-%s-%s", alsabar.cmd, alsabar.channel)
-
-    helpers.newtimer(timer_id, timeout, alsabar.update)
+    helpers.newtimer(string.format("alsabar-%s-%s", alsabar.cmd, alsabar.channel), timeout, alsabar.update)
 
     return alsabar
 end