summaryrefslogtreecommitdiff
path: root/volumebar-widget
diff options
context:
space:
mode:
Diffstat (limited to 'volumebar-widget')
-rw-r--r--volumebar-widget/volumebar.lua58
1 files changed, 58 insertions, 0 deletions
diff --git a/volumebar-widget/volumebar.lua b/volumebar-widget/volumebar.lua
new file mode 100644
index 0000000..87448b7
--- /dev/null
+++ b/volumebar-widget/volumebar.lua
@@ -0,0 +1,58 @@
+local awful = require("awful")
+local gears = require("gears")
+local spawn = require("awful.spawn")
+local watch = require("awful.widget.watch")
+local wibox = require("wibox")
+
+local request_command = 'amixer -D pulse sget Master'
+
+local bar_color = "#74aeab"
+local mute_color = "#ff0000"
+local background_color = "#3a3a3a"
+
+
+volumebar_widget = wibox.widget {
+ max_value = 1,
+ forced_width = 50,
+ paddings = 0,
+ border_width = 0.5,
+ color = bar_color,
+ background_color = background_color,
+ shape = gears.shape.bar,
+ clip = true,
+ margins = {
+ top = 10,
+ bottom = 10,
+ },
+ set_value = function(self, value)
+ self.value = value
+ end,
+ widget = wibox.widget.progressbar
+}
+
+local update_graphic = function(widget, stdout, _, _, _)
+ local mute = string.match(stdout, "%[(o%D%D?)%]")
+ local volume = string.match(stdout, "(%d?%d?%d)%%")
+ volume = tonumber(string.format("% 3d", volume))
+
+ if mute == "off" then
+ widget.color = mute_color
+ widget.value = volume / 100;
+ else
+ widget.color = bar_color
+ widget.value = volume / 100;
+ end
+end
+
+volumebar_widget:connect_signal("button::press", function(_,_,_,button)
+ if (button == 4) then awful.spawn("amixer -D pulse sset Master 5%+", false)
+ elseif (button == 5) then awful.spawn("amixer -D pulse sset Master 5%-", false)
+ elseif (button == 1) then awful.spawn("amixer -D pulse sset Master toggle", false)
+ end
+
+ spawn.easy_async(request_command, function(stdout, stderr, exitreason, exitcode)
+ update_graphic(volumebar_widget, stdout, stderr, exitreason, exitcode)
+ end)
+end)
+
+watch(request_command, 1, update_graphic, volumebar_widget)