On my computer, the minimum brightness enforced by clamping in backlight is too bright.
Let udev property ID_BACKLIGHT_CLAMP control whether the brightness is clamped or not. --- man/systemd-backli...@.service.xml | 11 ++++++++++- src/backlight/backlight.c | 5 ++++- 2 files changed, 14 insertions(+), 2 deletions(-) diff --git a/man/systemd-backli...@.service.xml b/man/systemd-backli...@.service.xml index 453afbf..4105685 100644 --- a/man/systemd-backli...@.service.xml +++ b/man/systemd-backli...@.service.xml @@ -58,7 +58,16 @@ is a service that restores the display backlight brightness at early boot and saves it at shutdown. On disk, the backlight brightness is stored in - <filename>/var/lib/systemd/backlight/</filename>.</para> + <filename>/var/lib/systemd/backlight/</filename>. During + loading, if udev property ID_BACKLIGHT_CLAMP is not + present or is set to <literal>1</literal>, the + brightness is clamped to at least value + <literal>1</literal> or 5% of maximum brightness. This + is to avoid an unpowered display due to poor API + design in kernel (unfixed as of 2015-01-28) that does + not allow user space to know the difference between + lowest brightness and powering off the + backlight.</para> </refsect1> <refsect1> diff --git a/src/backlight/backlight.c b/src/backlight/backlight.c index 1271a66..df53b75 100644 --- a/src/backlight/backlight.c +++ b/src/backlight/backlight.c @@ -373,6 +373,7 @@ int main(int argc, char *argv[]) { if (streq(argv[1], "load")) { _cleanup_free_ char *value = NULL; + const char *clamp; if (!shall_restore_state()) return EXIT_SUCCESS; @@ -390,7 +391,9 @@ int main(int argc, char *argv[]) { return EXIT_FAILURE; } - clamp_brightness(device, &value, max_brightness); + clamp = udev_device_get_property_value(device, "ID_BACKLIGHT_CLAMP"); + if (clamp == NULL || streq(clamp, "1")) + clamp_brightness(device, &value, max_brightness); r = udev_device_set_sysattr_value(device, "brightness", value); if (r < 0) { -- 2.1.4 _______________________________________________ systemd-devel mailing list systemd-devel@lists.freedesktop.org http://lists.freedesktop.org/mailman/listinfo/systemd-devel