diff options
| author | streetturtle <streetturtle@gmail.com> | 2020-12-14 22:33:56 -0500 | 
|---|---|---|
| committer | streetturtle <streetturtle@gmail.com> | 2020-12-14 22:33:56 -0500 | 
| commit | baa9177b7009690d7a47487a2fbb80ae4077b818 (patch) | |
| tree | 6a3234085cfac5ead0d41b660d73754201f4180b /experiments/volume/widgets | |
| parent | c319203fc9c4df2e6e43796bf0925d22b3593d66 (diff) | |
ultimate volume widget improvements
Diffstat (limited to 'experiments/volume/widgets')
| -rw-r--r-- | experiments/volume/widgets/arc-widget.lua | 21 | ||||
| -rw-r--r-- | experiments/volume/widgets/horizontal-bar-widget.lua | 58 | ||||
| -rw-r--r-- | experiments/volume/widgets/icon-and-text-widget.lua | 21 | ||||
| -rw-r--r-- | experiments/volume/widgets/icon-widget.lua | 13 | ||||
| -rw-r--r-- | experiments/volume/widgets/vertical-bar-widget.lua | 64 | 
5 files changed, 157 insertions, 20 deletions
diff --git a/experiments/volume/widgets/arc-widget.lua b/experiments/volume/widgets/arc-widget.lua index d7a3b1f..b6c9d22 100644 --- a/experiments/volume/widgets/arc-widget.lua +++ b/experiments/volume/widgets/arc-widget.lua @@ -5,7 +5,14 @@ local ICON_DIR = os.getenv("HOME") .. '/.config/awesome/awesome-wm-widgets/exper  local widget = {} -function widget.get_widget() +function widget.get_widget(widgets_args) +    local args = widgets_args or {} + +    local thickness = args.thickness or 2 +    local main_color = args.main_color or beautiful.fg_color +    local bg_color = args.bg_color or '#ffffff11' +    local mute_color = args.mute_color or beautiful.fg_urgent +    local size = args.size or 18      return wibox.widget {          { @@ -15,21 +22,21 @@ function widget.get_widget()              widget = wibox.widget.imagebox,          },          max_value = 100, -        thickness = 2, +        thickness = thickness,          start_angle = 4.71238898, -- 2pi*3/4 -        forced_height = 18, -        forced_width = 18, -        bg = '#ffffff11', +        forced_height = size, +        forced_width = size, +        bg = bg_color,          paddings = 2,          widget = wibox.container.arcchart,          set_volume_level = function(self, new_value)              self.value = new_value          end,          mute = function(self) -            self.colors = {'#BF616A'} +            self.colors = { mute_color }          end,          unmute = function(self) -            self.colors = {beautiful.fg_color} +            self.colors = { main_color }          end      } diff --git a/experiments/volume/widgets/horizontal-bar-widget.lua b/experiments/volume/widgets/horizontal-bar-widget.lua new file mode 100644 index 0000000..865fed6 --- /dev/null +++ b/experiments/volume/widgets/horizontal-bar-widget.lua @@ -0,0 +1,58 @@ +local wibox = require("wibox") +local beautiful = require('beautiful') +local gears = require("gears") + +local ICON_DIR = os.getenv("HOME") .. '/.config/awesome/awesome-wm-widgets/experiments/volume/icons/' + +local widget = {} + +function widget.get_widget(widgets_args) +    local args = widgets_args or {} + +    local main_color = args.main_color or beautiful.fg_normal +    local mute_color = args.mute_color or beautiful.fg_urgent +    local bg_color = args.bg_color or '#ffffff11' +    local width = args.width or 50 +    local margins = args.height or 10 +    local shape = args.shape or 'bar' +    local with_icon = args.with_icon == true and true or false + +    local bar = wibox.widget { +        { +            { +                id = "icon", +                image = ICON_DIR .. 'audio-volume-high-symbolic.svg', +                resize = false, +                widget = wibox.widget.imagebox, +            }, +            valign = 'center', +            visible = with_icon, +            layout = wibox.container.place, +        }, +        { +            id = 'bar', +            max_value = 100, +            forced_width = width, +            color = main_color, +            margins = { top = margins, bottom = margins }, +            background_color = bg_color, +            shape = gears.shape[shape], +            widget = wibox.widget.progressbar, +        }, +        spacing = 4, +        layout = wibox.layout.fixed.horizontal, +        set_volume_level = function(self, new_value) +            self:get_children_by_id('bar')[1]:set_value(tonumber(new_value)) +        end, +        mute = function(self) +            self:get_children_by_id('bar')[1]:set_color(mute_color) +        end, +        unmute = function(self) +            self:get_children_by_id('bar')[1]:set_color(main_color) +        end +    } + +    return bar +end + +return widget diff --git a/experiments/volume/widgets/icon-and-text-widget.lua b/experiments/volume/widgets/icon-and-text-widget.lua index 6ba6979..74044fb 100644 --- a/experiments/volume/widgets/icon-and-text-widget.lua +++ b/experiments/volume/widgets/icon-and-text-widget.lua @@ -1,10 +1,15 @@  local wibox = require("wibox") +local beautiful = require('beautiful')  local widget = {} -local WIDGET_DIR = os.getenv("HOME") .. '/.config/awesome/awesome-wm-widgets/experiments/volume/icons/' +local ICON_DIR = os.getenv("HOME") .. '/.config/awesome/awesome-wm-widgets/experiments/volume/icons/' -function widget.get_widget() +function widget.get_widget(widgets_args) +    local args = widgets_args or {} + +    local font = args.font or beautiful.font +    local icon_dir = args.icon_dir or ICON_DIR      return wibox.widget {          { @@ -18,15 +23,15 @@ function widget.get_widget()          },          {              id = 'txt', +            font = font,              widget = wibox.widget.textbox          },          layout = wibox.layout.fixed.horizontal, -        is_muted = true,          set_volume_level = function(self, new_value)              self:get_children_by_id('txt')[1]:set_text(new_value)              local volume_icon_name              if self.is_muted then -                volume_icon_name = 'audio-volume-muted-symbolic.svg' +                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 @@ -37,16 +42,16 @@ function widget.get_widget()                      volume_icon_name="audio-volume-high-symbolic"                  end              end -            self:get_children_by_id('icon')[1]:set_image(WIDGET_DIR .. volume_icon_name .. '.svg') +            self:get_children_by_id('icon')[1]:set_image(icon_dir .. volume_icon_name .. '.svg')          end,          mute = function(self) +            print("called")              self.is_muted = true -            self:get_children_by_id('icon')[1]:set_image(WIDGET_DIR .. 'audio-volume-muted-symbolic.svg') +            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      }  end diff --git a/experiments/volume/widgets/icon-widget.lua b/experiments/volume/widgets/icon-widget.lua index ac4122c..f2aca26 100644 --- a/experiments/volume/widgets/icon-widget.lua +++ b/experiments/volume/widgets/icon-widget.lua @@ -2,9 +2,12 @@ local wibox = require("wibox")  local widget = {} -local WIDGET_DIR = os.getenv("HOME") .. '/.config/awesome/awesome-wm-widgets/experiments/volume/icons/' +local ICON_DIR = os.getenv("HOME") .. '/.config/awesome/awesome-wm-widgets/experiments/volume/icons/' -function widget.get_widget() +function widget.get_widget(widgets_args) +    local args = widgets_args or {} + +    local icon_dir = args.icon_dir or ICON_DIR      return wibox.widget {          { @@ -17,7 +20,7 @@ function widget.get_widget()          set_volume_level = function(self, new_value)              local volume_icon_name              if self.is_muted then -                volume_icon_name = 'audio-volume-muted-symbolic.svg' +                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 @@ -28,11 +31,11 @@ function widget.get_widget()                      volume_icon_name="audio-volume-high-symbolic"                  end              end -            self:get_children_by_id('icon')[1]:set_image(WIDGET_DIR .. volume_icon_name .. '.svg') +            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(WIDGET_DIR .. 'audio-volume-muted-symbolic.svg') +            self:get_children_by_id('icon')[1]:set_image(icon_dir .. 'audio-volume-muted-symbolic.svg')          end,          unmute = function(self)              self.is_muted = false diff --git a/experiments/volume/widgets/vertical-bar-widget.lua b/experiments/volume/widgets/vertical-bar-widget.lua new file mode 100644 index 0000000..82f4b8a --- /dev/null +++ b/experiments/volume/widgets/vertical-bar-widget.lua @@ -0,0 +1,64 @@ +local wibox = require("wibox") +local beautiful = require('beautiful') +local gears = require("gears") + +local ICON_DIR = os.getenv("HOME") .. '/.config/awesome/awesome-wm-widgets/experiments/volume/icons/' + +local widget = {} + +function widget.get_widget(widgets_args) +    local args = widgets_args or {} + +    local main_color = args.main_color or beautiful.fg_normal +    local mute_color = args.mute_color or beautiful.fg_urgent +    local bg_color = args.bg_color or '#ffffff11' +    local width = args.width or 10 +    local margins = args.height or 2 +    local shape = args.shape or 'bar' +    local with_icon = args.with_icon == true and true or false + +    local bar = wibox.widget { +        { +            { +                id = "icon", +                image = ICON_DIR .. 'audio-volume-high-symbolic.svg', +                resize = false, +                widget = wibox.widget.imagebox, +            }, +            valign = 'center', +            visible = with_icon, +            layout = wibox.container.place, +        }, +        { +            { +                id = 'bar', +                max_value = 100, +                forced_width = width, +                forced_height = 5, +                margins = { top = margins, bottom = margins }, +                color = main_color, +                background_color = bg_color, +                shape = gears.shape[shape], +                widget = wibox.widget.progressbar, +            }, +            forced_width = width, +            direction = 'east', +            layout = wibox.container.rotate, +        }, +        spacing = 4, +        layout = wibox.layout.fixed.horizontal, +        set_volume_level = function(self, new_value) +            self:get_children_by_id('bar')[1]:set_value(tonumber(new_value)) +        end, +        mute = function(self) +            self:get_children_by_id('bar')[1]:set_color(mute_color) +        end, +        unmute = function(self) +            self:get_children_by_id('bar')[1]:set_color(main_color) +        end +    } + +    return bar +end + +return widget  | 
