@@ -36,8 +36,11 @@ local function factory(args)
3636 local settings = args .settings or function () end
3737 local width = args .width or 63
3838 local height = args .height or 1
39+ local margins = args .margins or 1
40+ local paddings = args .paddings or 1
3941 local ticks = args .ticks or false
4042 local ticks_size = args .ticks_size or 7
43+ local step = args .step or ' 5%'
4144
4245 alsabar .cmd = args .cmd or " amixer"
4346 alsabar .channel = args .channel or " Master"
@@ -51,10 +54,13 @@ local function factory(args)
5154 alsabar .notification_preset .font = " Monospace 10"
5255 end
5356
54- local format_cmd = string.format (" %s get %s" , alsabar .cmd , alsabar .channel )
57+ local format_get_cmd = string.format (" %s get %s" , alsabar .cmd , alsabar .channel )
58+ local format_inc_cmd = string.format (" %s sset %s %s+" , alsabar .cmd , alsabar .channel , step )
59+ local format_dec_cmd = string.format (" %s sset %s %s-" , alsabar .cmd , alsabar .channel , step )
60+ local format_tog_cmd = string.format (" %s sset %s toggle" , alsabar .cmd , alsabar .channel )
5561
5662 if alsabar .togglechannel then
57- format_cmd = { awful .util .shell , " -c" , string.format (" %s get %s; %s get %s" ,
63+ format_get_cmd = { awful .util .shell , " -c" , string.format (" %s get %s; %s get %s" ,
5864 alsabar .cmd , alsabar .channel , alsabar .cmd , alsabar .togglechannel ) }
5965 end
6066
@@ -63,8 +69,8 @@ local function factory(args)
6369 forced_width = width ,
6470 color = alsabar .colors .unmute ,
6571 background_color = alsabar .colors .background ,
66- margins = 1 ,
67- paddings = 1 ,
72+ margins = margins ,
73+ paddings = paddings ,
6874 ticks = ticks ,
6975 ticks_size = ticks_size ,
7076 widget = wibox .widget .progressbar
@@ -73,7 +79,7 @@ local function factory(args)
7379 alsabar .tooltip = awful .tooltip ({ objects = { alsabar .bar } })
7480
7581 function alsabar .update (callback )
76- helpers .async (format_cmd , function (mixer )
82+ helpers .async (format_get_cmd , function (mixer )
7783 local vol , playback = string.match (mixer , " ([%d]+)%%.*%[([%l]*)" )
7884
7985 if not vol or not playback then return end
@@ -146,6 +152,14 @@ local function factory(args)
146152
147153 helpers .newtimer (string.format (" alsabar-%s-%s" , alsabar .cmd , alsabar .channel ), timeout , alsabar .update )
148154
155+ alsabar .bar :connect_signal (" button::press" , function (_ ,_ ,_ ,button )
156+ if (button == 4 ) then awful .spawn (format_inc_cmd )
157+ elseif (button == 5 ) then awful .spawn (format_dec_cmd )
158+ elseif (button == 1 ) then awful .spawn (format_tog_cmd )
159+ end
160+ alsabar .update ()
161+ end )
162+
149163 return alsabar
150164end
151165
0 commit comments