Хорошо. по-русски:
Нужно подготовить такой файл (на примере q320):
<?xml version="1.0" encoding="UTF-8"?>
<deviceinfo version="0.2">
<!-- Custom brightness command for Samsung Q320 laptop -->
<device>
<match key="info.category" string="laptop_panel">
<match key="/org/freedesktop/Hal/devices/computer:system.chassis.manufacturer" string="SAMSUNG ELECTRONICS CO., LTD.">
<match key="/org/freedesktop/Hal/devices/computer:system.hardware.primary_video.vendor" int="0x10de"> <!-- nVidia Corporation -->
<merge key="laptop_panel.num_levels"
type="int">18</merge>
<merge key="laptop_panel.access_method"
type="string">samsung-q320</merge>
<merge key="laptop_panel.brightness_in_hardware"
type="bool">false</merge>
<remove key="linux.sysfs_path" type="string"/>
</match>
</match>
</match>
</device>
</deviceinfo>
Где все строки "Q320" меняем на свою модель. "0x10de" находим из(значение в скобках):
lshal |grep primary_video.vendor
18 заменяем на значение из(после знака равно):
lshal |grep laptop_panel.num_levels
Строкой <remove key="linux.sysfs_path" type="string"/> отменяем регулировку через неработающий sysfs...
Полученный файл сохраняем в /etc/hal/fdi/information/ под именем 10-samsung-q320-brightness.fdi. Обновляем hal:
/usr/lib/hal/hald-generate-fdi-cache --verbose 2>&1 | grep samsung
проверить правильность сего действа можно так:
lshal | grep samsung-q320
Теперь в каталоге /usr/lib/hal/scripts нужно отредактировать 2 скрипта: hal-system-lcd-get-brightness и hal-system-lcd-set-brightness.
Чтобы было проще сделаем такую заплатку:
--- hal-system-lcd-get-brightness.old 2009-07-07 11:42:25.000000000 +0100
+++ hal-system-lcd-get-brightness 2009-07-07 13:10:17.000000000 +0100
@@ -9,6 +9,10 @@
. hal-functions
+if [ "$HAL_PROP_LAPTOP_PANEL_ACCESS_METHOD" = "samsung-q320" ]; then
+ exit `smartdimmer -g | awk '/SmartDimmer level: / {print int(($3 - 15) / 5)}'`
+fi
+
# Check for environment variables
if [ -z "$HAL_PROP_LAPTOP_PANEL_ACCESS_METHOD" -a -z "$HAL_PROP_LINUX_SYSFS_PATH" ]; then
echo "org.freedesktop.Hal.Device.UnknownError" >&2
где опять же "samsung-q320" меняем на свою. Применяем заплатку:
cd /usr/lib/hal/scripts
patch -p0 <полный_путь_к_файлу_заплатки>
Для второго скрипта:
--- hal-system-lcd-set-brightness.old 2009-07-07 11:28:32.000000000 +0100
+++ hal-system-lcd-set-brightness 2009-07-07 16:48:16.000000000 +0100
@@ -30,5 +30,10 @@
export value
+if [ "$HAL_PROP_LAPTOP_PANEL_ACCESS_METHOD" = "samsung-q320" ]; then
+ smartdimmer -s `expr $value \* 5 + 15`
+ exit
+fi
+
hal_check_priv org.freedesktop.hal.power-management.lcd-panel
hal_exec_backend
Модель опять же своя. Заплатка применяется так же.
Примечание: Теперь теоретически должна работать регулировка подсветки и в апплете и в gnome power manger и скорее всего с fn кнопок.
Так же если есть "волшебная" утилита, регулирующая подсветку только для вашей экзотической видеокарты, вы можете свободно заменить smartdimmer на нее с ее параметрами, правильно передав их.
Метод подходит для дистрибутивов работающих с hal(а именно ubuntu 10.04 и 9.10 точно, возможно и другие).
П.С. Не совсем уловил значение чисел и переменных $3, 5, 15 и $value. Может кто подскажет что они значат? И меняются ли они от модели к модели?