Merge pull request #255 from nuno-silva/brightness
Brightness: add support for left/right click
This commit is contained in:
commit
9e42fec6b1
|
@ -11,9 +11,11 @@ It is possible to customize widget by providing a table with all or some of the
|
|||
| `type`| `arc` | The widget type. Could be `arc` or `icon_and_text` |
|
||||
| `program` | `light` | The program used to control the brightness, either 'light' or 'xbacklight'. |
|
||||
| `step` | 5 | Step |
|
||||
| `base` | 20 | Base level to set brightness to on left click. |
|
||||
| `path_to_icon` | `/usr/share/icons/Arc/status/symbolic/display-brightness-symbolic.svg` | Path to the icon |
|
||||
| `font` | `Play 9` | Font |
|
||||
| `timeout` | 1 | How often in seconds the widget refreshes. Check the note below |
|
||||
| `tooltip` | false | Display brightness level in a tooltip when the mouse cursor hovers the widget |
|
||||
|
||||
_Note:_ If brightness is controlled only by the widget (either by a mouse, or by a shortcut, then the `timeout` could be quite big, as there is no reason to synchronize the brightness level).
|
||||
|
||||
|
|
|
@ -16,6 +16,7 @@ local naughty = require("naughty")
|
|||
|
||||
local ICON_DIR = os.getenv("HOME") .. '/.config/awesome/awesome-wm-widgets/brightness-widget/'
|
||||
local get_brightness_cmd
|
||||
local set_brightness_cmd
|
||||
local inc_brightness_cmd
|
||||
local dec_brightness_cmd
|
||||
|
||||
|
@ -39,12 +40,17 @@ local function worker(user_args)
|
|||
|
||||
local program = args.program or 'light'
|
||||
local step = args.step or 5
|
||||
local base = args.base or 20
|
||||
local current_level = 0 -- current brightness value
|
||||
local tooltip = args.tooltip or false
|
||||
if program == 'light' then
|
||||
get_brightness_cmd = 'sh -c "light -G"'
|
||||
inc_brightness_cmd = 'sh -c "light -A ' .. step .. '"'
|
||||
dec_brightness_cmd = 'sh -c "light -U ' .. step .. '"'
|
||||
get_brightness_cmd = 'light -G'
|
||||
set_brightness_cmd = 'light -S ' -- <level>
|
||||
inc_brightness_cmd = 'light -A ' .. step
|
||||
dec_brightness_cmd = 'light -U ' .. step
|
||||
elseif program == 'xbacklight' then
|
||||
get_brightness_cmd = 'xbacklight -get'
|
||||
set_brightness_cmd = 'xbacklight -set ' -- <level>
|
||||
inc_brightness_cmd = 'xbacklight -inc ' .. step
|
||||
dec_brightness_cmd = 'xbacklight -dec ' .. step
|
||||
else
|
||||
|
@ -104,9 +110,34 @@ local function worker(user_args)
|
|||
|
||||
local update_widget = function(widget, stdout, _, _, _)
|
||||
local brightness_level = tonumber(string.format("%.0f", stdout))
|
||||
current_level = brightness_level
|
||||
widget:set_value(brightness_level)
|
||||
end
|
||||
|
||||
function brightness_widget:set(value)
|
||||
current_level = value
|
||||
spawn.easy_async(set_brightness_cmd .. value, function()
|
||||
spawn.easy_async(get_brightness_cmd, function(out)
|
||||
update_widget(brightness_widget.widget, out)
|
||||
end)
|
||||
end)
|
||||
end
|
||||
local old_level = 0
|
||||
function brightness_widget:toggle()
|
||||
if old_level < 0.1 then
|
||||
-- avoid toggling between '0' and 'almost 0'
|
||||
old_level = 1
|
||||
end
|
||||
if current_level < 0.1 then
|
||||
-- restore previous level
|
||||
current_level = old_level
|
||||
else
|
||||
-- save current brightness for later
|
||||
old_level = current_level
|
||||
current_level = 0
|
||||
end
|
||||
brightness_widget:set(current_level)
|
||||
end
|
||||
function brightness_widget:inc()
|
||||
spawn.easy_async(inc_brightness_cmd, function()
|
||||
spawn.easy_async(get_brightness_cmd, function(out)
|
||||
|
@ -124,6 +155,8 @@ local function worker(user_args)
|
|||
|
||||
brightness_widget.widget:buttons(
|
||||
awful.util.table.join(
|
||||
awful.button({}, 1, function() brightness_widget:set(base) end),
|
||||
awful.button({}, 3, function() brightness_widget:toggle() end),
|
||||
awful.button({}, 4, function() brightness_widget:inc() end),
|
||||
awful.button({}, 5, function() brightness_widget:dec() end)
|
||||
)
|
||||
|
@ -131,6 +164,15 @@ local function worker(user_args)
|
|||
|
||||
watch(get_brightness_cmd, timeout, update_widget, brightness_widget.widget)
|
||||
|
||||
if tooltip then
|
||||
awful.tooltip {
|
||||
objects = { brightness_widget.widget },
|
||||
timer_function = function()
|
||||
return current_level .. " %"
|
||||
end,
|
||||
}
|
||||
end
|
||||
|
||||
return brightness_widget.widget
|
||||
end
|
||||
|
||||
|
|
Loading…
Reference in New Issue