summaryrefslogtreecommitdiff
path: root/brightnessarc-widget
diff options
context:
space:
mode:
Diffstat (limited to 'brightnessarc-widget')
-rw-r--r--brightnessarc-widget/README.md65
-rw-r--r--brightnessarc-widget/brightnessarc.lua93
2 files changed, 109 insertions, 49 deletions
diff --git a/brightnessarc-widget/README.md b/brightnessarc-widget/README.md
index fa123c1..e63f0dd 100644
--- a/brightnessarc-widget/README.md
+++ b/brightnessarc-widget/README.md
@@ -1,12 +1,34 @@
# 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 |
+| `color` | `beautiful.fg_color` | Color of the arc |
+| `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'
+ color = '/usr/share/icons/Arc/status/symbolic/brightness-display-symbolic.svg'
+})
+```
-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 +52,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 brightnessarc_widget = require("awesome-wm-widgets.brightnessarc-widget.brightnessarc")
+```
+
+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..3c4641e 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
@@ -11,44 +11,65 @@
local wibox = require("wibox")
local watch = require("awful.widget.watch")
local spawn = require("awful.spawn")
+local beautiful = require("beautiful")
local PATH_TO_ICON = "/usr/share/icons/Arc/status/symbolic/display-brightness-symbolic.svg"
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 color = args.color or beautiful.fg_color
+ 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,
+ colors = {color},
+ 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 })