Я записал Новомодное задание для автоматического изменения гаммы дисплея согласно изменению в яркости дисплея:
start on (backlight-device-changed)
exec /usr/bin/gammach
И это - "gammach":
#! /bin/bash
Br=`cat /sys/class/backlight/acpi_video0/actual_brightness` # Display brightness
Gm=.$((((Br+76)%100))) # Corrected gamma according to brightness
xrandr --output LVDS --gamma $Gm:$Gm:$Gm
Но каждый раз, когда я изменяю яркость, я получаю эту ошибку в файле журнала:
Can't open display
Я попробовал xgamma, но получил подобную ошибку.
Любая справка ценится.Спасибо.
Я наконец нашел ответ.
, По-видимому, это было с разрешением и авторизацией получить доступ к Xserver и материалу как этот.
xgamma
версия моего сценария, который работает как очарование:
#! /bin/bash
export XAUTHORITY=/home/<username>/.Xauthority # This give permission to access Xserver
Br=`cat /sys/class/backlight/acpi_video0/actual_brightness` # Display brightness
Gm=.$((((Br+76)%100))) # Corrected gamma according to brightness
xgamma -d :0 -gamma $Gm
Программа Вы используете потребности получить доступ к X-серверу, и не знает, который X дисплеев это должно использовать.
В большинстве случаев, можно работать вокруг этого путем установки фиксированного отображаемого имени :0.0
, который обычно является названием первого дисплея и тем, если только один работает.
, Например, в начале Вашего сценария, можно использовать:
export DISPLAY=:0.0
В целом, Вы могли иметь несколько дисплеев , как то, если Вы выполняете несколько X-серверов на нескольких консолях, или вложил X-серверы как Xnest или Xvnc.
кроме того, Вы можете иметь один X-сервер , работающий только, который имеет отличающийся отображаемое имя, чем :0.0
, как :10.0
В этих случаях, необходимо найти способ определить к сценарию, которые ОТОБРАЖАЮТСЯ для использования.
Для получения некоторого полезного вывода в журнале Вы могли добавить:
pgrep -fa /usr/bin/X
, чтобы показать, работают ли один или несколько X-серверов на самом деле в то время, когда новомодное задание выполняется. Командные строки могут также показать дисплеи, на которых они работают.
И
echo DISPLAY: "\"$DISPLAY\""
для записи переменной ДИСПЛЕЯ в журнал.