Гамма-коррекция с Выскочкой и сценарием

Я записал Новомодное задание для автоматического изменения гаммы дисплея согласно изменению в яркости дисплея:

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, но получил подобную ошибку.
Любая справка ценится.Спасибо.

1
задан 10 August 2014 в 11:13

2 ответа

Я наконец нашел ответ.
, По-видимому, это было с разрешением и авторизацией получить доступ к 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
0
ответ дан 7 October 2019 в 09:22

Программа Вы используете потребности получить доступ к 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\""

для записи переменной ДИСПЛЕЯ в журнал.

0
ответ дан 7 October 2019 в 09:22

Другие вопросы по тегам:

Похожие вопросы: