external config for brightness and brightnessarc

This commit is contained in:
streetturtle 2019-05-02 21:35:30 -04:00
parent d0cbdc1647
commit 429e6eb54a
4 changed files with 177 additions and 74 deletions

View File

@ -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'
})
}
...
```

View File

@ -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 widget = {}
local brightness_icon = wibox.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,
image = path_to_icon,
resize = false,
widget = wibox.widget.imagebox,
},
top = 3,
widget = wibox.container.margin
}
}
local brightness_widget = wibox.widget {
widget = wibox.widget {
brightness_icon,
brightness_text,
layout = wibox.layout.fixed.horizontal,
}
}
local update_widget = function(widget, stdout, stderr, exitreason, exitcode)
local update_widget = function(widget, stdout, _, _, _)
local brightness_level = tonumber(string.format("%.0f", stdout))
widget:set_text(" " .. brightness_level .. "%")
end,
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)
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)
end)
watch(GET_BRIGHTNESS_CMD, 1, update_widget, brightness_text)
watch(get_brightness_cmd, 1, update_widget, brightness_text)
return brightness_widget
return widget
end
return setmetatable(widget, { __call = function(_, ...)
return worker(...)
end })

View File

@ -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
require("awesome-wm-widgets.brightness-widget.brightness")
...
-- Add widgets to the wibox
s.mywibox:setup {
...
{ -- Right widgets
...
brightness_widget
local brightness_widget = require("awesome-wm-widgets.brightness-widget.brightness")
```
Add widget to the tasklist:
```lua
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

View File

@ -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,14 +17,25 @@ 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 = {
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,
image = path_to_icon,
resize = true,
widget = wibox.widget.imagebox,
}
}
local brightnessarc = wibox.widget {
widget = wibox.widget {
icon,
max_value = 1,
thickness = 2,
@ -34,21 +45,28 @@ local brightnessarc = wibox.widget {
bg = "#ffffff11",
paddings = 2,
widget = wibox.container.arcchart
}
}
local update_widget = function(widget, stdout)
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,
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)
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)
end)
watch(GET_BRIGHTNESS_CMD, 1, update_widget, brightnessarc)
watch(get_brightness_cmd, 1, update_widget, widget)
return brightnessarc
return widget
end
return setmetatable(widget, { __call = function(_, ...)
return worker(...)
end })