Gmane
From: Richard Hughes <hughsient <at> gmail.com>
Subject: set-brightness and get-brightness
Newsgroups: gmane.comp.freedesktop.hal
Date: 2005-09-25 13:23:37 GMT (3 years, 1 week, 5 days, 22 hours and 59 minutes ago)
At the moment these scripts receive and return the values in
percentages. Unfortunately some laptops have multiples of brightness
levels that are not easily expressed in non-integer percent.

For instance, passing the value of 14.285714286 (100/7) to the
set-brightness script does nothing, as the 

let "value = ( $percentage * $HAL_PROP_LAPTOP_PANEL_NUM_LEVELS ) / 100"

evaluates to "syntax error in expression" which means the command fails
to evaluate and junk is written to the proc files.

As I have found whilst using this interface, it is more difficult to
convert to non-integer percentage values, and back again safely, that to
just read the max levels and send a nice integer value:

0 < x < laptop_panel.num_levels

This problem has caused all sorts of funny bug reports in GNOME Power
Manager, with the brightness not being set correctly.

I propose making the scripts send and receive the values from hardware
(i.e. from 0..X), and then just scale those for the user in percent --
it's certainly easier this way from a developer perspective, and the
user can still be presented with a slider expressed in "%" in the end
program.

The user isn't likely to use dbus-send or invoke directly
hal-system-lcd-set-brightness, but only through application programs
such as a brightness applet or policy daemon, so we should make the
programming API easy to use for these programs.

Putting it bluntly, doing it this way fixes the bugs in g-p-m with the
"brightness weirdness" bugs.

There is a simple patch attached. I really want to commit this one as
the LCD brightness stuff is not going to work reliably otherwise.

Richard.