diff options
Diffstat (limited to 'experiments/volume')
-rw-r--r-- | experiments/volume/utils.lua | 1 | ||||
-rw-r--r-- | experiments/volume/volume.lua | 45 | ||||
-rw-r--r-- | experiments/volume/widgets/arc-widget.lua (renamed from experiments/volume/arc-widget.lua) | 6 | ||||
-rw-r--r-- | experiments/volume/widgets/icon-and-text-widget.lua (renamed from experiments/volume/icon-and-text-widget.lua) | 27 | ||||
-rw-r--r-- | experiments/volume/widgets/icon-widget.lua | 43 |
5 files changed, 104 insertions, 18 deletions
diff --git a/experiments/volume/utils.lua b/experiments/volume/utils.lua index 02742ec..dcaeb84 100644 --- a/experiments/volume/utils.lua +++ b/experiments/volume/utils.lua @@ -99,7 +99,6 @@ function utils.extract_sinks_and_sources(pacmd_output) ports[key] = t[2] end end - print(json.encode(sources)) return sinks, sources end diff --git a/experiments/volume/volume.lua b/experiments/volume/volume.lua index ae7605e..9110a45 100644 --- a/experiments/volume/volume.lua +++ b/experiments/volume/volume.lua @@ -14,8 +14,6 @@ local gears = require("gears") local beautiful = require("beautiful") local watch = require("awful.widget.watch") local utils = require("awesome-wm-widgets.experiments.volume.utils") -local arc_widget = require("awesome-wm-widgets.experiments.volume.arc-widget") -local icon_and_text_widget = require("awesome-wm-widgets.experiments.volume.icon-and-text-widget") local LIST_DEVICES_CMD = [[sh -c "pacmd list-sinks; pacmd list-sources"]] @@ -25,6 +23,12 @@ local DEC_VOLUME_CMD = 'amixer -q -D pulse sset Master 5%-' local TOG_VOLUME_CMD = 'amixer -q -D pulse sset Master toggle' +local widget_types = { + icon_and_text = require("awesome-wm-widgets.experiments.volume.widgets.icon-and-text-widget"), + icon = require("awesome-wm-widgets.experiments.volume.widgets.icon-widget"), + arc = require("awesome-wm-widgets.experiments.volume.widgets.arc-widget") +} + local volume_widget = wibox.widget{} local rows = { layout = wibox.layout.fixed.vertical } @@ -43,7 +47,7 @@ local popup = awful.popup{ local function build_main_line(device) if device.active_port ~= nil and device.ports[device.active_port] ~= nil then - return device.properties.device_description .. ' - ' .. device.ports[device.active_port] + return device.properties.device_description .. ' ยท ' .. device.ports[device.active_port] else return device.properties.device_description end @@ -90,13 +94,35 @@ local function build_rows(devices, on_checkbox_click, device_type) spacing = 8, layout = wibox.layout.align.horizontal }, - margins = 8, + margins = 4, layout = wibox.container.margin }, bg = beautiful.bg_normal, widget = wibox.container.background } + row:connect_signal("mouse::enter", function(c) c:set_bg(beautiful.bg_focus) end) + row:connect_signal("mouse::leave", function(c) c:set_bg(beautiful.bg_normal) end) + + local old_cursor, old_wibox + row:connect_signal("mouse::enter", function(c) + local wb = mouse.current_wibox + old_cursor, old_wibox = wb.cursor, wb + wb.cursor = "hand1" + end) + row:connect_signal("mouse::leave", function(c) + if old_wibox then + old_wibox.cursor = old_cursor + old_wibox = nil + end + end) + + row:connect_signal("button::press", function(c) + spawn.easy_async(string.format([[sh -c 'pacmd set-default-%s "%s"']], device_type, device.name), function() + on_checkbox_click() + end) + end) + table.insert(device_rows, row) end @@ -134,8 +160,15 @@ end local function worker(args) - volume_widget = arc_widget.get_widget() - -- volume_widget = icon_and_text_widget.get_widget() + local args = args or {} + + local widget_type = args.widget_type + + if widget_types[widget_type] == nil then + volume_widget = widget_types['icon_and_text'].get_widget() + else + volume_widget = widget_types[widget_type].get_widget() + end volume_widget:buttons( awful.util.table.join( diff --git a/experiments/volume/arc-widget.lua b/experiments/volume/widgets/arc-widget.lua index fb56518..d7a3b1f 100644 --- a/experiments/volume/arc-widget.lua +++ b/experiments/volume/widgets/arc-widget.lua @@ -1,6 +1,8 @@ local wibox = require("wibox") local beautiful = require('beautiful') +local ICON_DIR = os.getenv("HOME") .. '/.config/awesome/awesome-wm-widgets/experiments/volume/icons/' + local widget = {} function widget.get_widget() @@ -8,7 +10,7 @@ function widget.get_widget() return wibox.widget { { id = "icon", - image = '/usr/share/icons/Arc/status/symbolic/audio-volume-muted-symbolic.svg', + image = ICON_DIR .. 'audio-volume-high-symbolic.svg', resize = true, widget = wibox.widget.imagebox, }, @@ -28,7 +30,7 @@ function widget.get_widget() end, unmute = function(self) self.colors = {beautiful.fg_color} - end + end } end diff --git a/experiments/volume/icon-and-text-widget.lua b/experiments/volume/widgets/icon-and-text-widget.lua index 929d32d..5517f11 100644 --- a/experiments/volume/icon-and-text-widget.lua +++ b/experiments/volume/widgets/icon-and-text-widget.lua @@ -10,7 +10,6 @@ function widget.get_widget() { { id = "icon", - image = '/usr/share/icons/Arc/status/symbolic/audio-volume-muted-symbolic.svg', resize = false, widget = wibox.widget.imagebox, }, @@ -22,21 +21,31 @@ function widget.get_widget() 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 new_value_num = tonumber(new_value) local volume_icon_name = '' - 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" + if self.is_muted then + volume_icon_name = 'audio-volume-muted-symbolic.svg' else - volume_icon_name="audio-volume-high-symbolic" + 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(WIDGET_DIR .. volume_icon_name .. '.svg') end, - mute = function(self) self:get_children_by_id('icon')[1]:set_image(WIDGET_DIR .. 'audio-volume-muted-symbolic.svg') end, - unmute = function() end, + mute = function(self) + self.is_muted = true + self:get_children_by_id('icon')[1]:set_image(WIDGET_DIR .. 'audio-volume-muted-symbolic.svg') + end, + unmute = function(self) + self.is_muted = false + end, } diff --git a/experiments/volume/widgets/icon-widget.lua b/experiments/volume/widgets/icon-widget.lua new file mode 100644 index 0000000..2a20dde --- /dev/null +++ b/experiments/volume/widgets/icon-widget.lua @@ -0,0 +1,43 @@ +local wibox = require("wibox") + +local widget = {} + +local WIDGET_DIR = os.getenv("HOME") .. '/.config/awesome/awesome-wm-widgets/experiments/volume/icons/' + +function widget.get_widget() + + 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.svg' + 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(WIDGET_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') + end, + unmute = function(self) + self.is_muted = false + end + } +end + +return widget
\ No newline at end of file |