X-Git-Url: https://git.madduck.net/etc/awesome.git/blobdiff_plain/fb358dcd043d9639cb2ec19f4e369b8aa31675dc..b0209bd820dd5d8c6a2de893444953490f531de0:/widgets/alsabar.lua?ds=inline

diff --git a/widgets/alsabar.lua b/widgets/alsabar.lua
index 8ec5a00..f504cc0 100644
--- a/widgets/alsabar.lua
+++ b/widgets/alsabar.lua
@@ -15,6 +15,7 @@ local naughty      = require("naughty")
 
 local io           = { popen  = io.popen }
 local math         = { modf   = math.modf }
+local mouse        = mouse
 local string       = { format = string.format,
                        match  = string.match,
                        rep    = string.rep }
@@ -25,7 +26,6 @@ local setmetatable = setmetatable
 -- ALSA volume bar
 -- lain.widgets.alsabar
 local alsabar = {
-    card    = "0",
     channel = "Master",
     step    = "2%",
 
@@ -56,7 +56,7 @@ function alsabar.notify()
     local preset = {
         title   = "",
         text    = "",
-        timeout = 4,
+        timeout = 5,
         screen  = alsabar.notifications.screen,
         font    = alsabar.notifications.font .. " " ..
                   alsabar.notifications.font_size,
@@ -76,6 +76,10 @@ function alsabar.notify()
                 .. string.rep(" ", alsabar.notifications.bar_size - int)
                 .. "]"
 
+    if alsabar.followmouse then
+        preset.screen = mouse.screen
+    end
+
     if alsabar._notify ~= nil then
         alsabar._notify = naughty.notify ({
             replaces_id = alsabar._notify.id,
@@ -90,7 +94,7 @@ end
 
 local function worker(args)
     local args       = args or {}
-    local timeout    = args.timeout or 4
+    local timeout    = args.timeout or 5
     local settings   = args.settings or function() end
     local width      = args.width or 63
     local height     = args.heigth or 1
@@ -103,6 +107,7 @@ local function worker(args)
     alsabar.step          = args.step or alsabar.step
     alsabar.colors        = args.colors or alsabar.colors
     alsabar.notifications = args.notifications or alsabar.notifications
+    alsabar.followmouse   = args.followmouse or false
 
     alsabar.bar = awful.widget.progressbar()
 
@@ -118,7 +123,7 @@ local function worker(args)
     function alsabar.update()
         -- Get mixer control contents
         local f = assert(io.popen(string.format("%s get %s", alsabar.cmd, alsabar.channel)))
-        local mixer = f:read("*a")
+        local mixer = f:read("*all")
         f:close()
 
         -- Capture mixer control state:          [5%] ... ... [on]
@@ -153,15 +158,15 @@ local function worker(args)
             awful.util.spawn(alsabar.mixer)
           end),
           awful.button ({}, 3, function()
-            awful.util.spawn(string.format("amixer -c %s set %s toggle", alsabar.card, alsabar.channel))
+            awful.util.spawn(string.format("%s set %s toggle", alsabar.cmd, alsabar.channel))
             alsabar.update()
           end),
           awful.button ({}, 4, function()
-            awful.util.spawn(string.format("amixer -c %s set %s %s+", alsabar.card, alsabar.channel, alsabar.step))
+            awful.util.spawn(string.format("%s set %s %s+", alsabar.cmd, alsabar.channel, alsabar.step))
             alsabar.update()
           end),
           awful.button ({}, 5, function()
-            awful.util.spawn(string.format("amixer -c %s set %s %s-", alsabar.card, alsabar.channel, alsabar.step))
+            awful.util.spawn(string.format("%s set %s %s-", alsabar.cmd, alsabar.channel, alsabar.step))
             alsabar.update()
           end)
     ))