diff options
| author | Tim Keller <tjkeller.xyz> | 2025-04-18 23:05:38 -0500 | 
|---|---|---|
| committer | Tim Keller <tjkeller.xyz> | 2025-04-18 23:05:38 -0500 | 
| commit | 8c3245410da7b2565fb0e5484d737cc3b427c548 (patch) | |
| tree | 0c3d71404fbaa3dbc04a95f04b2bdb1cd031385b /widgets | |
| parent | b0d338292565fe3fe932215fd628a7482a29e8f0 (diff) | |
| download | awesome-8c3245410da7b2565fb0e5484d737cc3b427c548.tar.xz awesome-8c3245410da7b2565fb0e5484d737cc3b427c548.zip | |
finish volume dropdown functionality
Diffstat (limited to 'widgets')
| -rw-r--r-- | widgets/pavolctld.lua | 5 | ||||
| -rw-r--r-- | widgets/volumedropdown.lua | 42 | 
2 files changed, 34 insertions, 13 deletions
| diff --git a/widgets/pavolctld.lua b/widgets/pavolctld.lua index 1ef523e..6f257b5 100644 --- a/widgets/pavolctld.lua +++ b/widgets/pavolctld.lua @@ -16,9 +16,8 @@ widget.dropdown = volume_dropdown  -- widget callbacks  pavolctld.set_volume_change_callback(function()  	widget.textbox:set_text(pavolctld.sinks.default.vol) -	widget.dropdown.set_volume(pavolctld.sinks.default.vol) +	widget.dropdown.set_volume(pavolctld.sinks.default.vol, pavolctld.sinks.default.mute)  	widget.dropdown.dbmeter:set_text(pavolctld.sinks.default.db .. " dB") -	widget.dropdown.muted.checked = pavolctld.sinks.default.mute  end)  pavolctld.set_sink_change_callback(function() @@ -28,7 +27,7 @@ end)  pavolctld.set_default_sink_change_callback(function()  	widget.textbox:set_text(pavolctld.sinks.default.vol)  	widget.tooltip:set_text(pavolctld.sinks.default.desc) -	widget.dropdown.set_volume(pavolctld.sinks.default.vol) +	widget.dropdown.set_volume(pavolctld.sinks.default.vol, pavolctld.sinks.default.mute)  	widget.dropdown.dbmeter:set_text(pavolctld.sinks.default.db .. " dB")  	widget.dropdown.defsink:set_text(pavolctld.sinks.default.desc)  end) diff --git a/widgets/volumedropdown.lua b/widgets/volumedropdown.lua index c2e3fbc..796a84d 100644 --- a/widgets/volumedropdown.lua +++ b/widgets/volumedropdown.lua @@ -44,7 +44,7 @@ local default_sink_scrollbox = wibox.widget {  	widget = wibox.container.scroll.horizontal,  } -widget.muted = wibox.widget { +local muted = wibox.widget {  	color = "#222222",  	check_color = beautiful.border_focus,  	widget = wibox.widget.checkbox, @@ -77,7 +77,7 @@ local volume_dropdown = wibox.widget {  			widget = wibox.container.margin,  		},  		{ -			widget.muted, +			muted,  			fill_vertical = true,  			widget = wibox.container.place,  		}, @@ -117,20 +117,24 @@ widget.dropdown = awful.popup {  	visible = false,  } +function widget.set_volume(vol, mute) +	progressbar:set_value(vol) +	muted.checked = mute +	if vol == slider.value then return end +	slider.value = vol +	if widget.dropdown.visible then +		slider:emit_signal("widget::redraw_needed") +	end +end +  -- slider  slider:buttons(volume_buttons)  slider:connect_signal("property::value", function()  	if pavolctld.sinks.default.vol == slider.value then return end +	widget.dropdown.visible = true -- make sure widget isn't hidden  	pavolctld.volume_set(slider.value)  end) -function widget.set_volume(vol) -	progressbar:set_value(vol) -	if vol == slider.value then return end -	slider.value = vol -	slider:emit_signal("widget::redraw_needed") -end -  -- scroll when hovering  default_sink_scrollbox:connect_signal("mouse::enter", function()  	default_sink_scrollbox:continue() @@ -141,7 +145,25 @@ default_sink_scrollbox:connect_signal("mouse::leave", function()  	default_sink_scrollbox:reset_scrolling()  end) +-- change sink +default_sink_scrollbox:connect_signal("button::press", function() +	widget.dropdown.visible = true -- make sure widget isn't hidden + +	local menuopts = { items = {}, theme = { width = 225 } } +	for i, s in pairs(pavolctld.sinks.sinks) do +		table.insert(menuopts.items, { +			s.desc, +			function() pavolctld.default_sink_set(i) end +		}) +	end + +	awful.menu(menuopts):show() +end) +  -- mute button -widget.muted:connect_signal("button::press", pavolctld.mute_toggle) +muted:connect_signal("button::press", function() +	widget.dropdown.visible = true -- make sure widget isn't hidden +	pavolctld.mute_toggle() +end)  return widget | 
