diff options
-rw-r--r-- | brightness-widget/README.md | 35 | ||||
-rw-r--r-- | brightness-widget/brightness.lua | 87 | ||||
-rw-r--r-- | brightnessarc-widget/README.md | 63 | ||||
-rw-r--r-- | brightnessarc-widget/brightnessarc.lua | 90 | ||||
-rw-r--r-- | mpdarc-widget/mpdarc.lua | 2 | ||||
-rw-r--r-- | volumearc-widget/README.md | 72 | ||||
-rw-r--r-- | volumearc-widget/custom.png | bin | 0 -> 9424 bytes | |||
-rw-r--r-- | volumearc-widget/volumearc.lua | 9 | ||||
-rw-r--r-- | volumebar-widget/README.md | 76 | ||||
-rw-r--r-- | volumebar-widget/custom.png | bin | 0 -> 9126 bytes | |||
-rw-r--r-- | volumebar-widget/volumebar.lua | 95 |
11 files changed, 363 insertions, 166 deletions
diff --git a/brightness-widget/README.md b/brightness-widget/README.md index 5d592b6..7b05d2f 100644 --- a/brightness-widget/README.md +++ b/brightness-widget/README.md @@ -2,6 +2,29 @@ This widget represents current brightness level: ![Brightness widget](./br-wid-1.png) +## Customization + +It is possible to customize widget by providing a table with all or some of the following config parameters: + +| Name | Default | Description | +|---|---|---| +| `get_brightness_cmd` | `light -G` | Get current screen brightness | +| `inc_brightness_cmd` | `light -A 5` | Increase brightness | +| `dec_brightness_cmd` | `light -U 5`| Decrease brightness | +| `path_to_icon` | `/usr/share/icons/Arc/status/symbolic/display-brightness-symbolic.svg` | Path to the icon | +| `font` | `Play 9` | Font | + +### Example: + +```lua +brightness_widget({ + get_brightness_cmd = 'xbacklight -get', + inc_brightness_cmd = 'xbacklight -inc 5', + dec_brightness_cmd = 'xbacklight -dec 5' +}) +``` + + ## Installation First you need to get the current brightness level. There are two options: @@ -29,8 +52,6 @@ First you need to get the current brightness level. There are two options: 49.18 ``` -Depending on the chosen option change `GET_BRIGHTNESS_CMD` variable in **brightness.lua**. - Then clone this repo under **~/.config/awesome/**: ```bash @@ -50,7 +71,15 @@ s.mytasklist, -- Middle widget { -- Right widgets layout = wibox.layout.fixed.horizontal, ... - brightness_widget, + -- default + brightness_widget(), + -- or customized + brightness_widget({ + get_brightness_cmd = 'xbacklight -get', + inc_brightness_cmd = 'xbacklight -inc 5', + dec_brightness_cmd = 'xbacklight -dec 5' + }) + } ... ``` diff --git a/brightness-widget/brightness.lua b/brightness-widget/brightness.lua index 075765c..28e7015 100644 --- a/brightness-widget/brightness.lua +++ b/brightness-widget/brightness.lua @@ -5,7 +5,7 @@ -- https://github.com/streetturtle/awesome-wm-widgets/tree/master/brightness-widget -- @author Pavel Makhov --- @copyright 2017 Pavel Makhov +-- @copyright 2017-2019 Pavel Makhov ------------------------------------------------- local wibox = require("wibox") @@ -17,36 +17,55 @@ local GET_BRIGHTNESS_CMD = "light -G" -- "xbacklight -get" local INC_BRIGHTNESS_CMD = "light -A 5" -- "xbacklight -inc 5" local DEC_BRIGHTNESS_CMD = "light -U 5" -- "xbacklight -dec 5" -local brightness_text = wibox.widget.textbox() -brightness_text:set_font('Play 9') - -local brightness_icon = wibox.widget { - { - image = PATH_TO_ICON, - resize = false, - widget = wibox.widget.imagebox, - }, - top = 3, - widget = wibox.container.margin -} - -local brightness_widget = wibox.widget { - brightness_icon, - brightness_text, - layout = wibox.layout.fixed.horizontal, -} - -local update_widget = function(widget, stdout, stderr, exitreason, exitcode) - local brightness_level = tonumber(string.format("%.0f", stdout)) - widget:set_text(" " .. brightness_level .. "%") -end, - -brightness_widget:connect_signal("button::press", function(_,_,_,button) - if (button == 4) then spawn(INC_BRIGHTNESS_CMD, false) - elseif (button == 5) then spawn(DEC_BRIGHTNESS_CMD, false) - end -end) - -watch(GET_BRIGHTNESS_CMD, 1, update_widget, brightness_text) - -return brightness_widget +local widget = {} + +local function worker(args) + + local args = args or {} + + local get_brightness_cmd = args.get_brightness_cmd or GET_BRIGHTNESS_CMD + local inc_brightness_cmd = args.inc_brightness_cmd or INC_BRIGHTNESS_CMD + local dec_brightness_cmd = args.dec_brightness_cmd or DEC_BRIGHTNESS_CMD + local path_to_icon = args.path_to_icon or PATH_TO_ICON + local font = args.font or 'Play 9' + + local brightness_text = wibox.widget.textbox() + brightness_text:set_font(font) + + local brightness_icon = wibox.widget { + { + image = path_to_icon, + resize = false, + widget = wibox.widget.imagebox, + }, + top = 3, + widget = wibox.container.margin + } + + widget = wibox.widget { + brightness_icon, + brightness_text, + layout = wibox.layout.fixed.horizontal, + } + + local update_widget = function(widget, stdout, _, _, _) + local brightness_level = tonumber(string.format("%.0f", stdout)) + widget:set_text(" " .. brightness_level .. "%") + end, + + widget:connect_signal("button::press", function(_, _, _, button) + if (button == 4) then + spawn(inc_brightness_cmd, false) + elseif (button == 5) then + spawn(dec_brightness_cmd, false) + end + end) + + watch(get_brightness_cmd, 1, update_widget, brightness_text) + + return widget +end + +return setmetatable(widget, { __call = function(_, ...) + return worker(...) +end }) diff --git a/brightnessarc-widget/README.md b/brightnessarc-widget/README.md index fa123c1..d122d3a 100644 --- a/brightnessarc-widget/README.md +++ b/brightnessarc-widget/README.md @@ -1,12 +1,32 @@ # Brightness widget -![Brightness widget](./br-wid-1.png) +This widget represents current brightness level: ![Brightness widget](./br-wid-1.png) + +## Customization + +It is possible to customize widget by providing a table with all or some of the following config parameters: + +| Name | Default | Description | +|---|---|---| +| `get_brightness_cmd` | `light -G` | Get current screen brightness | +| `inc_brightness_cmd` | `light -A 5` | Increase brightness | +| `dec_brightness_cmd` | `light -U 5`| Decrease brightness | +| `path_to_icon` | `/usr/share/icons/Arc/status/symbolic/display-brightness-symbolic.svg` | Path to the icon | + +### Example: + +```lua +brightnessarc_widget({ + get_brightness_cmd = 'xbacklight -get', + inc_brightness_cmd = 'xbacklight -inc 5', + dec_brightness_cmd = 'xbacklight -dec 5' +}) +``` -This widget represents current brightness level. ## Installation -Firstly you need to get the current brightness level. There are two options: +First you need to get the current brightness level. There are two options: - using `xbacklight` command (depending on your video card (I guess) it may or may not work) @@ -30,19 +50,36 @@ Firstly you need to get the current brightness level. There are two options: light -G 49.18 ``` -Depending on the chosen option change `GET_BRIGHTNESS_CMD` variable in **brightness.lua**. -Then in **rc.lua** add the import on top of the file and then add widget to the wibox: +Then clone this repo under **~/.config/awesome/**: + +```bash +git clone https://github.com/streetturtle/awesome-wm-widgets.git ~/.config/awesome/ +``` + +Require widget at the beginning of **rc.lua**: + +```lua +local brightness_widget = require("awesome-wm-widgets.brightness-widget.brightness") +``` + +Add widget to the tasklist: ```lua -require("awesome-wm-widgets.brightness-widget.brightness") -... --- Add widgets to the wibox -s.mywibox:setup { -... -{ -- Right widgets -... -brightness_widget +s.mytasklist, -- Middle widget + { -- Right widgets + layout = wibox.layout.fixed.horizontal, + ... + -- default + brightnessarc_widget(), + -- or customized + brightnessarc_widget({ + get_brightness_cmd = 'xbacklight -get', + inc_brightness_cmd = 'xbacklight -inc 5', + dec_brightness_cmd = 'xbacklight -dec 5' + }) + } + ... ``` ## Controls diff --git a/brightnessarc-widget/brightnessarc.lua b/brightnessarc-widget/brightnessarc.lua index 7633218..dac08e4 100644 --- a/brightnessarc-widget/brightnessarc.lua +++ b/brightnessarc-widget/brightnessarc.lua @@ -2,7 +2,7 @@ -- Brightness Widget for Awesome Window Manager -- Shows the brightness level of the laptop display -- More details could be found here: --- https://github.com/streetturtle/awesome-wm-widgets/tree/master/brightnessarc-widget +-- https://github.com/streetturtle/awesome-wm-widgets/tree/master/widget-widget -- @author Pavel Makhov -- @copyright 2019 Pavel Makhov @@ -17,38 +17,56 @@ local GET_BRIGHTNESS_CMD = "light -G" -- "xbacklight -get" local INC_BRIGHTNESS_CMD = "light -A 5" -- "xbacklight -inc 5" local DEC_BRIGHTNESS_CMD = "light -U 5" -- "xbacklight -dec 5" -local icon = { - id = "icon", - image = PATH_TO_ICON, - resize = true, - widget = wibox.widget.imagebox, -} - -local brightnessarc = 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_widget = function(widget, stdout) - local brightness_level = string.match(stdout, "(%d?%d?%d?)") - brightness_level = tonumber(string.format("% 3d", brightness_level)) - - widget.value = brightness_level / 100; -end, - -brightnessarc:connect_signal("button::press", function(_, _, _, button) - if (button == 4) then spawn(INC_BRIGHTNESS_CMD, false) - elseif (button == 5) then spawn(DEC_BRIGHTNESS_CMD, false) - end -end) - -watch(GET_BRIGHTNESS_CMD, 1, update_widget, brightnessarc) - -return brightnessarc +local widget = {} + +local function worker(args) + + local args = args or {} + + local get_brightness_cmd = args.get_brightness_cmd or GET_BRIGHTNESS_CMD + local inc_brightness_cmd = args.inc_brightness_cmd or INC_BRIGHTNESS_CMD + local dec_brightness_cmd = args.dec_brightness_cmd or DEC_BRIGHTNESS_CMD + local path_to_icon = args.path_to_icon or PATH_TO_ICON + + local icon = { + id = "icon", + image = path_to_icon, + resize = true, + widget = wibox.widget.imagebox, + } + + widget = 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_widget = function(widget, stdout) + local brightness_level = string.match(stdout, "(%d?%d?%d?)") + brightness_level = tonumber(string.format("% 3d", brightness_level)) + + widget.value = brightness_level / 100; + end, + + widget:connect_signal("button::press", function(_, _, _, button) + if (button == 4) then + spawn(inc_brightness_cmd, false) + elseif (button == 5) then + spawn(dec_brightness_cmd, false) + end + end) + + watch(get_brightness_cmd, 1, update_widget, widget) + + return widget +end + +return setmetatable(widget, { __call = function(_, ...) + return worker(...) +end }) diff --git a/mpdarc-widget/mpdarc.lua b/mpdarc-widget/mpdarc.lua index ca0f411..d70e6ee 100644 --- a/mpdarc-widget/mpdarc.lua +++ b/mpdarc-widget/mpdarc.lua @@ -111,7 +111,7 @@ mpdarc:connect_signal("mouse::leave", function() naughty.destroy(notification) e watch(GET_MPD_CMD, 1, update_graphic, mpdarc) -local mpdarc_widget = { +local mpdarc_widget = wibox.widget{ mpdarc_icon_widget, mpdarc_current_song_widget, layout = wibox.layout.align.horizontal, diff --git a/volumearc-widget/README.md b/volumearc-widget/README.md index 79f519d..0bcd7c7 100644 --- a/volumearc-widget/README.md +++ b/volumearc-widget/README.md @@ -2,7 +2,43 @@ 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) + +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: + +| 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', + thickness = 5, + height = 25 +}) +``` + +Above config results in following widget: + +![custom](./custom.png) ## Installation @@ -14,27 +50,13 @@ Almost the same as [volumebar widget](https://github.com/streetturtle/awesome-wm 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 +```lua +require("volumearc") +... +s.mytasklist, -- Middle widget + { -- Right widgets + layout = wibox.layout.fixed.horizontal, + ... + volumearc_widget, + ... +``` diff --git a/volumearc-widget/custom.png b/volumearc-widget/custom.png Binary files differnew file mode 100644 index 0000000..f187345 --- /dev/null +++ b/volumearc-widget/custom.png diff --git a/volumearc-widget/volumearc.lua b/volumearc-widget/volumearc.lua index 4a91cd3..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, @@ -59,8 +58,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; diff --git a/volumebar-widget/README.md b/volumebar-widget/README.md index d6b9117..35169b7 100644 --- a/volumebar-widget/README.md +++ b/volumebar-widget/README.md @@ -9,21 +9,75 @@ Supports - scroll down - decrease volume, - left click - mute/unmute. - ## Installation - - Clone repo, include widget and use it in **rc.lua**: +## 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 -local volumebar_widget = require("awesome-wm-widgets.volumebar-widget.volumebar") -... -s.mytasklist, -- Middle widget - { -- Right widgets - layout = wibox.layout.fixed.horizontal, - ... - volumebar_widget, - ... + volumebar_widget({ + main_color = '#af13f7', + mute_color = '#ff0000', + width = 80, + shape = 'rounded_bar', + margins = 8 +}) ``` +Above config results in following widget: + +![custom](./custom.png) + + +## Installation + +1. Clone this repo under **~/.config/awesome/** + + ```bash + git clone https://github.com/streetturtle/awesome-wm-widgets.git ~/.config/awesome/ + ``` + +1. Require volumebar widget at the beginning of **rc.lua**: + + ```lua + local volumebar_widget = require("awesome-wm-widgets.volumebar-widget.volumebar") + ``` + +1. Add widget to the tasklist: + + ```lua + s.mytasklist, -- Middle widget + { -- Right widgets + layout = wibox.layout.fixed.horizontal, + ... + --[[default]] + volumebar_widget(), + --[[or customized]] + 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 + margins = 8 + }), + + ... + ``` + ## Troubleshooting If the bar is not showing up, try to decrease top or bottom margin - widget uses hardcoded margins for vertical alignment, so if your wibox is too small then bar is simply hidden by the margins. diff --git a/volumebar-widget/custom.png b/volumebar-widget/custom.png Binary files differnew file mode 100644 index 0000000..d86143b --- /dev/null +++ b/volumebar-widget/custom.png diff --git a/volumebar-widget/volumebar.lua b/volumebar-widget/volumebar.lua index 9fd6a99..18e0f40 100644 --- a/volumebar-widget/volumebar.lua +++ b/volumebar-widget/volumebar.lua @@ -9,6 +9,7 @@ ------------------------------------------------- local awful = require("awful") +local beautiful = require("beautiful") local gears = require("gears") local spawn = require("awful.spawn") local watch = require("awful.widget.watch") @@ -19,48 +20,66 @@ local INC_VOLUME_CMD = 'amixer -D pulse sset Master 5%+' local DEC_VOLUME_CMD = 'amixer -D pulse sset Master 5%-' local TOG_VOLUME_CMD = 'amixer -D pulse sset Master toggle' -local bar_color = "#74aeab" -local mute_color = "#ff0000" -local background_color = "#3a3a3a" - -local volumebar_widget = wibox.widget { - max_value = 1, - forced_width = 50, - paddings = 0, - border_width = 0.5, - color = bar_color, - background_color = background_color, - shape = gears.shape.bar, - clip = true, - margins = { - top = 10, - bottom = 10, - }, - widget = wibox.widget.progressbar -} - -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.color = mute == "off" and mute_color - or bar_color +local widget = {} -end +local function worker(args) + + local args = args or {} + + 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, + color = main_color, + background_color = '#ffffff11', + shape = gears.shape[shape], + margins = { + top = margins, + bottom = margins, + }, + widget = wibox.widget.progressbar + } + + local update_graphic = function(widget, stdout, _, _, _) + 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; + widget.color = mute == "off" + and mute_color + or main_color -volumebar_widget:connect_signal("button::press", function(_,_,_,button) - if (button == 4) then awful.spawn(INC_VOLUME_CMD) - elseif (button == 5) then awful.spawn(DEC_VOLUME_CMD) - elseif (button == 1) then awful.spawn(TOG_VOLUME_CMD) end - spawn.easy_async(GET_VOLUME_CMD, function(stdout, stderr, exitreason, exitcode) - update_graphic(volumebar_widget, stdout, stderr, exitreason, exitcode) + volumebar_widget:connect_signal("button::press", function(_, _, _, button) + if (button == 4) then + awful.spawn(inc_volume_cmd) + elseif (button == 5) then + awful.spawn(dec_volume_cmd) + elseif (button == 1) then + awful.spawn(tog_volume_cmd) + end + + spawn.easy_async(get_volume_cmd, function(stdout, stderr, exitreason, exitcode) + update_graphic(volumebar_widget, stdout, stderr, exitreason, exitcode) + end) end) -end) -watch(GET_VOLUME_CMD, 1, update_graphic, volumebar_widget) + watch(get_volume_cmd, 1, update_graphic, volumebar_widget) + + return volumebar_widget +end + +return setmetatable(widget, { __call = function(_, ...) return worker(...) end }) -return volumebar_widget
\ No newline at end of file |