From 885ee3d66f42c9ae1678b89e535de3c002f4c7d8 Mon Sep 17 00:00:00 2001 From: Mark Date: Thu, 11 Apr 2024 16:21:10 -0700 Subject: [PATCH] Backlight fixes --- defaults.lua | 7 ++- modules/backlight/popup.lua | 4 ++ modules/backlight/util.lua | 87 ++++++++++++++++++++++++++++++++++--- 3 files changed, 91 insertions(+), 7 deletions(-) diff --git a/defaults.lua b/defaults.lua index 5acf7c0..4c90ad4 100755 --- a/defaults.lua +++ b/defaults.lua @@ -35,8 +35,13 @@ config.screenshot = { enabled = true } config.simple_widgets = { enabled = true } config.keymap_popup = { enabled = true } config.battery = { enabled = false } -config.backlight = { enabled = false } config.picom = { enabled = true } +config.backlight = { + enabled = false, + button_step = 5, + scroll_step = 5, + backend = "xbacklight" +} config.core = { -- Icon to use when a window doesn't provide one diff --git a/modules/backlight/popup.lua b/modules/backlight/popup.lua index 6f885bc..573691c 100644 --- a/modules/backlight/popup.lua +++ b/modules/backlight/popup.lua @@ -129,6 +129,10 @@ return function(s) awesome.connect_signal("module::backlight:update", function(value) + if value == nil then + value = 0 + end + -- Update slider widget. container. diff --git a/modules/backlight/util.lua b/modules/backlight/util.lua index 0661f10..defec3a 100755 --- a/modules/backlight/util.lua +++ b/modules/backlight/util.lua @@ -1,6 +1,69 @@ -local backlight = {} +local brightnessctl = {} +brightnessctl.parse = function(s) + local batpec = string.match(s, ",%d?%d?%d%%,") + batpec = batpec:sub(2, batpec:len() - 2) + return tonumber(batpec) +end -backlight.get = function(callback) +brightnessctl.get = function(callback) + awful.spawn.easy_async( + "brightnessctl info -m", + function(stdout, stderr, exitreason, exitcode) + callback(brightnessctl.parse(stdout)) + end + ) +end + +brightnessctl.set = function(value) + awful.spawn.easy_async( + "brightnessctl set " .. value .. "% -m", + function(stdout, stderr, exitreason, exitcode) + awesome.emit_signal( + "module::backlight:update", + brightnessctl.parse(stdout) + ) + end + ) +end + +brightnessctl.watch = function(timeout, callback, widget) + awful.widget.watch( + "brightnessctl get -m", + timeout, + function(stdout, stderr, exitreason, exitcode) + callback(brightnessctl.parse(stdout)) + end, + widget + ) +end + +brightnessctl.backlight_up = function(value) + awful.spawn.easy_async( + "brightnessctl set " .. value .. "%+ -m", + function(stdout, stderr, exitreason, exitcode) + awesome.emit_signal( + "module::backlight:update", + brightnessctl.parse(stdout) + ) + end + ) +end + +brightnessctl.backlight_down = function(value) + awful.spawn.easy_async( + "brightnessctl set " .. value .. "%- -m", + function(stdout, stderr, exitreason, exitcode) + awesome.emit_signal( + "module::backlight:update", + brightnessctl.parse(stdout) + ) + end + ) +end + + +local xbacklight = {} +xbacklight.get = function(callback) awful.spawn.easy_async( "xbacklight -get", function(stdout, stderr, exitreason, exitcode) @@ -9,11 +72,11 @@ backlight.get = function(callback) ) end -backlight.set = function(value) +xbacklight.set = function(value) awful.spawn("xbacklight -set " .. value, false) end -backlight.watch = function(timeout, callback, widget) +xbacklight.watch = function(timeout, callback, widget) awful.widget.watch( "xbacklight -get", timeout, @@ -23,7 +86,7 @@ backlight.watch = function(timeout, callback, widget) end -backlight.backlight_up = function(value) +xbacklight.backlight_up = function(value) awful.spawn.easy_async( "xbacklight -inc " .. value, function(stdout, stderr, exitreason, exitcode) @@ -32,7 +95,7 @@ backlight.backlight_up = function(value) ) end -backlight.backlight_down = function(value) +xbacklight.backlight_down = function(value) awful.spawn.easy_async( "xbacklight -dec " .. value, function(stdout, stderr, exitreason, exitcode) @@ -41,6 +104,18 @@ backlight.backlight_down = function(value) ) end + +local backlight = {} +if config.backlight.backend == "xbacklight" then + backlight = xbacklight +elseif config.backlight.backend == "brightnessctl" then + backlight = brightnessctl +else + backlight = xbacklight +end + + + awesome.connect_signal("module::backlight:update_read", function() backlight.get(