diff options
author | streetturtle <streetturtle@gmail.com> | 2021-03-19 20:49:00 -0400 |
---|---|---|
committer | streetturtle <streetturtle@gmail.com> | 2021-03-19 20:49:00 -0400 |
commit | 25d9eecfc68df3251dc96008aaa4cd7c81900da6 (patch) | |
tree | 7f0b6a6c125ea622e099e5b569115b80dcad3753 /volume-widget/widgets/icon-widget.lua | |
parent | a37e0a673ee3e6655f3d4be2c5a2f6c832476456 (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.lua | 46 |
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 |