From cf75c446e10ebf720df114e1d040a5c4730c21c3 Mon Sep 17 00:00:00 2001 From: streetturtle Date: Sat, 30 Mar 2019 17:42:59 -0400 Subject: volumearc - externalize config --- volumearc-widget/README.md | 51 +++++++++++++++-------- volumearc-widget/volumearc.lua | 95 ++++++++++++++++++++++++++---------------- 2 files changed, 91 insertions(+), 55 deletions(-) (limited to 'volumearc-widget') diff --git a/volumearc-widget/README.md b/volumearc-widget/README.md index 702b486..79f519d 100644 --- a/volumearc-widget/README.md +++ b/volumearc-widget/README.md @@ -2,24 +2,39 @@ Almost the same as [volumebar widget](https://github.com/streetturtle/awesome-wm-widgets/tree/master/volumebar-widget), but using arcchart: -![screenshot](out.gif) - -Supports: - - scroll up - increase volume, - - scroll down - decrease volume, - - left click - mute/unmute. +![screenshot]({{'/assets/img/screenshots/volumearc-widget.gif' | relative_url }}){:.center-image} ## Installation -Clone repo, include widget and use it in **rc.lua**: - -```lua -require("volumearc") -... -s.mytasklist, -- Middle widget - { -- Right widgets - layout = wibox.layout.fixed.horizontal, - ... - volumearc_widget, - ... -``` +1. Clone this repo under **~/.config/awesome/** + + ```bash + git clone https://github.com/streetturtle/awesome-wm-widgets.git ~/.config/awesome/ + ``` + +1. Require volumearc widget at the beginning of **rc.lua**: + + ```lua + local volumearc_widget = require("awesome-wm-widgets.volumearc-widget.volumearc") + ``` + +1. Add widget to the tasklist: + + ```lua + s.mytasklist, -- Middle widget + { -- Right widgets + layout = wibox.layout.fixed.horizontal, + ... + --[[default]] + volumearc_widget(), + --[[or customized]] + volumearc_widget({ + main_color = '#0000ff', + mute_color = '#ff0000', + path_to_icon = '/usr/share/icons/Arc/actions/symbolic/view-grid-symbolic.svg', + thickness = 5, + height = 25 + }), + + ... + ``` \ No newline at end of file diff --git a/volumearc-widget/volumearc.lua b/volumearc-widget/volumearc.lua index 63500bc..4a91cd3 100644 --- a/volumearc-widget/volumearc.lua +++ b/volumearc-widget/volumearc.lua @@ -21,47 +21,68 @@ local TOG_VOLUME_CMD = 'amixer -D pulse sset Master toggle' local PATH_TO_ICON = "/usr/share/icons/Arc/status/symbolic/audio-volume-muted-symbolic.svg" -local icon = { - id = "icon", - image = PATH_TO_ICON, - resize = true, - widget = wibox.widget.imagebox, -} - -local volumearc = wibox.widget { - icon, - max_value = 1, - thickness = 2, - start_angle = 4.71238898, -- 2pi*3/4 - forced_height = 18, - forced_width = 18, - bg = "#ffffff11", - paddings = 2, - widget = wibox.container.arcchart -} - -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)) - - widget.value = volume / 100; - widget.colors = mute == 'off' and { beautiful.widget_red } - or { beautiful.widget_main_color } +local widget = {} -end +local function worker(args) + + local args = args or {} + + local main_color = args.main_color or beautiful.widget_main_color + local mute_color = args.mute_color or beautiful.widget_red + local path_to_icon = args.path_to_icon or PATH_TO_ICON + local thickness = args.thickness or 2 + local height = args.height or 18 + + local get_volume_cmd = args.get_volume_cmd or GET_VOLUME_CMD + local inc_volume_cmd = args.inc_volume_cmd or INC_VOLUME_CMD + local dec_volume_cmd = args.dec_volume_cmd or DEC_VOLUME_CMD + local tog_volume_cmd = args.tog_volume_cmd or TOG_VOLUME_CMD + + + local icon = { + id = "icon", + image = path_to_icon, + resize = true, + widget = wibox.widget.imagebox, + } -volumearc:connect_signal("button::press", function(_, _, _, button) - if (button == 4) then awful.spawn(INC_VOLUME_CMD, false) - elseif (button == 5) then awful.spawn(DEC_VOLUME_CMD, false) - elseif (button == 1) then awful.spawn(TOG_VOLUME_CMD, false) + local volumearc = wibox.widget { + icon, + max_value = 1, + thickness = thickness, + start_angle = 4.71238898, -- 2pi*3/4 + forced_height = height, + forced_width = height, + bg = "#ffffff11", + paddings = 2, + widget = wibox.container.arcchart + } + + 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)) + + widget.value = volume / 100; + widget.colors = mute == 'off' + and { mute_color } + or { main_color } end - spawn.easy_async(GET_VOLUME_CMD, function(stdout, stderr, exitreason, exitcode) - update_graphic(volumearc, stdout, stderr, exitreason, exitcode) + volumearc:connect_signal("button::press", function(_, _, _, button) + if (button == 4) then awful.spawn(inc_volume_cmd, false) + elseif (button == 5) then awful.spawn(dec_volume_cmd, false) + elseif (button == 1) then awful.spawn(tog_volume_cmd, false) + end + + spawn.easy_async(get_volume_cmd, function(stdout, stderr, exitreason, exitcode) + update_graphic(volumearc, stdout, stderr, exitreason, exitcode) + end) end) -end) -watch(GET_VOLUME_CMD, 1, update_graphic, volumearc) + watch(get_volume_cmd, 1, update_graphic, volumearc) + + return volumearc +end -return volumearc \ No newline at end of file +return setmetatable(widget, { __call = function(_, ...) return worker(...) end }) -- cgit v1.2.3 From c40075136423a5602d27325a1366c371acfe801c Mon Sep 17 00:00:00 2001 From: streetturtle Date: Sat, 13 Apr 2019 20:51:54 -0400 Subject: update volumearc readme --- volumearc-widget/README.md | 24 +++++++++++++++++++++--- volumearc-widget/custom.png | Bin 0 -> 9424 bytes volumearc-widget/volumearc.lua | 4 ++-- 3 files changed, 23 insertions(+), 5 deletions(-) create mode 100644 volumearc-widget/custom.png (limited to 'volumearc-widget') diff --git a/volumearc-widget/README.md b/volumearc-widget/README.md index 79f519d..5bd8e83 100644 --- a/volumearc-widget/README.md +++ b/volumearc-widget/README.md @@ -4,6 +4,24 @@ Almost the same as [volumebar widget](https://github.com/streetturtle/awesome-wm ![screenshot]({{'/assets/img/screenshots/volumearc-widget.gif' | relative_url }}){:.center-image} +## Customization + +It is possible to customize widget by providing a table with all or some of the following config parameters: + +```lua +volumearc_widget({ + main_color = '#af13f7', + mute_color = '#ff0000', + path_to_icon = '/usr/share/icons/Papirus-Dark/symbolic/status/audio-volume-high-symbolic.svg', + thickness = 5, + height = 25 +}) +``` + +Above config results in following widget: + +![custom](./custom.png) + ## Installation 1. Clone this repo under **~/.config/awesome/** @@ -29,12 +47,12 @@ Almost the same as [volumebar widget](https://github.com/streetturtle/awesome-wm volumearc_widget(), --[[or customized]] volumearc_widget({ - main_color = '#0000ff', + main_color = '#af13f7', mute_color = '#ff0000', - path_to_icon = '/usr/share/icons/Arc/actions/symbolic/view-grid-symbolic.svg', + path_to_icon = '/usr/share/icons/Papirus-Dark/symbolic/status/audio-volume-high-symbolic.svg', thickness = 5, height = 25 }), ... - ``` \ No newline at end of file + ``` diff --git a/volumearc-widget/custom.png b/volumearc-widget/custom.png new file mode 100644 index 0000000..f187345 Binary files /dev/null and b/volumearc-widget/custom.png differ diff --git a/volumearc-widget/volumearc.lua b/volumearc-widget/volumearc.lua index 4a91cd3..5fbf3dd 100644 --- a/volumearc-widget/volumearc.lua +++ b/volumearc-widget/volumearc.lua @@ -59,8 +59,8 @@ local function worker(args) } local update_graphic = function(widget, stdout, _, _, _) - local mute = string.match(stdout, "%[(o%D%D?)%]") - local volume = string.match(stdout, "(%d?%d?%d)%%") + local mute = string.match(stdout, "%[(o%D%D?)%]") -- \[(o\D\D?)\] - [on] or [off] + local volume = string.match(stdout, "(%d?%d?%d)%%") -- (\d?\d?\d)\%) volume = tonumber(string.format("% 3d", volume)) widget.value = volume / 100; -- cgit v1.2.3 From aa6f0363ad3385f9cd68efc45429948669de5422 Mon Sep 17 00:00:00 2001 From: streetturtle Date: Sat, 13 Apr 2019 20:56:13 -0400 Subject: update readme --- volumearc-widget/README.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) (limited to 'volumearc-widget') diff --git a/volumearc-widget/README.md b/volumearc-widget/README.md index 5bd8e83..38e7e05 100644 --- a/volumearc-widget/README.md +++ b/volumearc-widget/README.md @@ -2,7 +2,7 @@ Almost the same as [volumebar widget](https://github.com/streetturtle/awesome-wm-widgets/tree/master/volumebar-widget), but using arcchart: -![screenshot]({{'/assets/img/screenshots/volumearc-widget.gif' | relative_url }}){:.center-image} +![screenshot](out.gif) ## Customization -- cgit v1.2.3 From 8e92a8541bba98132ce92307400f458bda65295b Mon Sep 17 00:00:00 2001 From: streetturtle Date: Sat, 13 Apr 2019 22:46:16 -0400 Subject: add mouse control info to readme --- volumearc-widget/README.md | 5 +++++ 1 file changed, 5 insertions(+) (limited to 'volumearc-widget') diff --git a/volumearc-widget/README.md b/volumearc-widget/README.md index 38e7e05..f791d3a 100644 --- a/volumearc-widget/README.md +++ b/volumearc-widget/README.md @@ -4,6 +4,11 @@ Almost the same as [volumebar widget](https://github.com/streetturtle/awesome-wm ![screenshot](out.gif) +Supports + - scroll up - increase volume, + - scroll down - decrease volume, + - left click - mute/unmute. + ## Customization It is possible to customize widget by providing a table with all or some of the following config parameters: -- cgit v1.2.3 From d0cbdc1647f793ea9b2922970022794e92202d4a Mon Sep 17 00:00:00 2001 From: streetturtle Date: Sun, 14 Apr 2019 20:07:15 -0400 Subject: Add table with config to the readme --- volumearc-widget/README.md | 16 ++++++++++++++-- volumearc-widget/volumearc.lua | 5 ++--- volumebar-widget/README.md | 25 +++++++++++++++++++------ volumebar-widget/volumebar.lua | 19 ++++++++++++------- 4 files changed, 47 insertions(+), 18 deletions(-) (limited to 'volumearc-widget') diff --git a/volumearc-widget/README.md b/volumearc-widget/README.md index f791d3a..aac7e90 100644 --- a/volumearc-widget/README.md +++ b/volumearc-widget/README.md @@ -13,11 +13,24 @@ Supports It is possible to customize widget by providing a table with all or some of the following config parameters: +| Name | Default | Description | +|---|---|---| +| `main_color` | `beautiful.fg_normal` | Color of the arc | +| `mute_color` | `beautiful.fg_urgent` | Color of the arc when mute | +| `path_to_icon` | /usr/share/icons/Arc/status/symbolic/audio-volume-muted-symbolic.svg | Path to the icon | +| `thickness` | 2 | The arc thickness | +| `height` | `beautiful.fg_normal` | Widget height | +| `get_volume_cmd` | `amixer -D pulse sget Master` | Get current volume level | +| `inc_volume_cmd` | `amixer -D pulse sset Master 5%+` | Increase volume level | +| `dec_volume_cmd` | `amixer -D pulse sset Master 5%-` | Descrease volume level | +| `tog_volume_cmd` | `amixer -D pulse sset Master toggle` | Mute / unmute | + +### Example: + ```lua volumearc_widget({ main_color = '#af13f7', mute_color = '#ff0000', - path_to_icon = '/usr/share/icons/Papirus-Dark/symbolic/status/audio-volume-high-symbolic.svg', thickness = 5, height = 25 }) @@ -54,7 +67,6 @@ Above config results in following widget: volumearc_widget({ main_color = '#af13f7', mute_color = '#ff0000', - path_to_icon = '/usr/share/icons/Papirus-Dark/symbolic/status/audio-volume-high-symbolic.svg', thickness = 5, height = 25 }), diff --git a/volumearc-widget/volumearc.lua b/volumearc-widget/volumearc.lua index 5fbf3dd..62b18ab 100644 --- a/volumearc-widget/volumearc.lua +++ b/volumearc-widget/volumearc.lua @@ -27,8 +27,8 @@ local function worker(args) local args = args or {} - local main_color = args.main_color or beautiful.widget_main_color - local mute_color = args.mute_color or beautiful.widget_red + local main_color = args.main_color or beautiful.fg_color + local mute_color = args.mute_color or beautiful.fg_urgent local path_to_icon = args.path_to_icon or PATH_TO_ICON local thickness = args.thickness or 2 local height = args.height or 18 @@ -38,7 +38,6 @@ local function worker(args) local dec_volume_cmd = args.dec_volume_cmd or DEC_VOLUME_CMD local tog_volume_cmd = args.tog_volume_cmd or TOG_VOLUME_CMD - local icon = { id = "icon", image = path_to_icon, diff --git a/volumebar-widget/README.md b/volumebar-widget/README.md index 92beee2..35169b7 100644 --- a/volumebar-widget/README.md +++ b/volumebar-widget/README.md @@ -9,17 +9,30 @@ Supports - scroll down - decrease volume, - left click - mute/unmute. - ## Customization - - It is possible to customize widget by providing a table with all or some of the following config parameters: +## Customization +It is possible to customize widget by providing a table with all or some of the following config parameters: + +| Name | Default | Description | +|---|---|---| +| `main_color` | `beautiful.fg_normal` | Color of the bar | +| `mute_color` | `beautiful.fg_urgent` | Color of the bar when mute | +| `width` | 50 | The bar width | +| `shape` | `bar` | [gears.shape](https://awesomewm.org/doc/api/libraries/gears.shape.html), could be `octogon`, `hexagon`, `powerline`, etc | +| `margin` | `10` | Top and bottom margin (if your wibar is 22 px high, bar will be 2 px (22 - 2*10)) | +| `get_volume_cmd` | `amixer -D pulse sget Master` | Get current volume level | +| `inc_volume_cmd` | `amixer -D pulse sset Master 5%+` | Increase volume level | +| `dec_volume_cmd` | `amixer -D pulse sset Master 5%-` | Descrease volume level | +| `tog_volume_cmd` | `amixer -D pulse sset Master toggle` | Mute / unmute | + +### Example: + ```lua volumebar_widget({ main_color = '#af13f7', mute_color = '#ff0000', width = 80, - shape = 'rounded_bar', -- octogon, hexagon, powerline, etc - -- bar's height = wibar's height minus 2x margins + shape = 'rounded_bar', margins = 8 }) ``` @@ -29,7 +42,7 @@ Above config results in following widget: ![custom](./custom.png) - ## Installation +## Installation 1. Clone this repo under **~/.config/awesome/** diff --git a/volumebar-widget/volumebar.lua b/volumebar-widget/volumebar.lua index c1fcf71..18e0f40 100644 --- a/volumebar-widget/volumebar.lua +++ b/volumebar-widget/volumebar.lua @@ -26,12 +26,17 @@ local function worker(args) local args = args or {} - local main_color = args.main_color or beautiful.widget_main_color - local mute_color = args.mute_color or beautiful.widget_red + local main_color = args.main_color or beautiful.fg_normal + local mute_color = args.mute_color or beautiful.fg_urgent local width = args.width or 50 local shape = args.shape or 'bar' local margins = args.margins or 10 + local get_volume_cmd = args.get_volume_cmd or GET_VOLUME_CMD + local inc_volume_cmd = args.inc_volume_cmd or INC_VOLUME_CMD + local dec_volume_cmd = args.dec_volume_cmd or DEC_VOLUME_CMD + local tog_volume_cmd = args.tog_volume_cmd or TOG_VOLUME_CMD + local volumebar_widget = wibox.widget { max_value = 1, forced_width = width, @@ -59,19 +64,19 @@ local function worker(args) volumebar_widget:connect_signal("button::press", function(_, _, _, button) if (button == 4) then - awful.spawn(INC_VOLUME_CMD) + awful.spawn(inc_volume_cmd) elseif (button == 5) then - awful.spawn(DEC_VOLUME_CMD) + awful.spawn(dec_volume_cmd) elseif (button == 1) then - awful.spawn(TOG_VOLUME_CMD) + awful.spawn(tog_volume_cmd) end - spawn.easy_async(GET_VOLUME_CMD, function(stdout, stderr, exitreason, exitcode) + spawn.easy_async(get_volume_cmd, function(stdout, stderr, exitreason, exitcode) update_graphic(volumebar_widget, stdout, stderr, exitreason, exitcode) end) end) - watch(GET_VOLUME_CMD, 1, update_graphic, volumebar_widget) + watch(get_volume_cmd, 1, update_graphic, volumebar_widget) return volumebar_widget end -- cgit v1.2.3