summaryrefslogtreecommitdiff
path: root/volume-widget/widgets/icon-widget.lua
diff options
context:
space:
mode:
authorstreetturtle <streetturtle@gmail.com>2021-03-19 20:49:00 -0400
committerstreetturtle <streetturtle@gmail.com>2021-03-19 20:49:00 -0400
commit25d9eecfc68df3251dc96008aaa4cd7c81900da6 (patch)
tree7f0b6a6c125ea622e099e5b569115b80dcad3753 /volume-widget/widgets/icon-widget.lua
parenta37e0a673ee3e6655f3d4be2c5a2f6c832476456 (diff)
[volume] BREAKING CHANGE - new widget instead of old ones
Having three widgets for volume led to a problem of code duplication - same logic was duplicated three times. However when an issue was discovered and fixed, it was fixed in only one of three widgets. So I decided to create a volume widget from scratch, adding new features, such as selecting input/output, better responsiveness, easily customizable widget ui (bar, text, icon, icon and text, arc). Should close #199, #198, #185, #182, #47, #122, #183.
Diffstat (limited to 'volume-widget/widgets/icon-widget.lua')
-rw-r--r--volume-widget/widgets/icon-widget.lua46
1 files changed, 46 insertions, 0 deletions
diff --git a/volume-widget/widgets/icon-widget.lua b/volume-widget/widgets/icon-widget.lua
new file mode 100644
index 0000000..cc39a3d
--- /dev/null
+++ b/volume-widget/widgets/icon-widget.lua
@@ -0,0 +1,46 @@
+local wibox = require("wibox")
+
+local widget = {}
+
+local ICON_DIR = os.getenv("HOME") .. '/.config/awesome/awesome-wm-widgets/volume-widget/icons/'
+
+function widget.get_widget(widgets_args)
+ local args = widgets_args or {}
+
+ local icon_dir = args.icon_dir or ICON_DIR
+
+ return wibox.widget {
+ {
+ id = "icon",
+ resize = false,
+ widget = wibox.widget.imagebox,
+ },
+ valign = 'center',
+ layout = wibox.container.place,
+ set_volume_level = function(self, new_value)
+ local volume_icon_name
+ if self.is_muted then
+ volume_icon_name = 'audio-volume-muted-symbolic'
+ else
+ local new_value_num = tonumber(new_value)
+ if (new_value_num >= 0 and new_value_num < 33) then
+ volume_icon_name="audio-volume-low-symbolic"
+ elseif (new_value_num < 66) then
+ volume_icon_name="audio-volume-medium-symbolic"
+ else
+ volume_icon_name="audio-volume-high-symbolic"
+ end
+ end
+ self:get_children_by_id('icon')[1]:set_image(icon_dir .. volume_icon_name .. '.svg')
+ end,
+ mute = function(self)
+ self.is_muted = true
+ self:get_children_by_id('icon')[1]:set_image(icon_dir .. 'audio-volume-muted-symbolic.svg')
+ end,
+ unmute = function(self)
+ self.is_muted = false
+ end
+ }
+end
+
+return widget \ No newline at end of file