我写了一个 Upstart 作业来根据显示亮度的变化自动更改显示伽玛:
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,但收到了类似的错误。
任何帮助表示赞赏。谢谢你。
您使用的程序需要访问 X 服务器,并且不知道它应该使用哪个 X 显示。
在大多数情况下,您可以通过设置固定的显示名称来解决此问题
:0.0
,该名称通常是第一个显示的名称,如果只有一个正在运行,则为该名称。例如,在脚本的开头,您可以使用:
export DISPLAY=:0.0
通常,您可以有多个显示,就像您在多个控制台上运行多个 X 服务器,或者像 Xnest 或 Xvnc 这样的嵌套X 服务器。
此外,您可以只运行一个 X 服务器,它的显示名称与不同
:0.0
,例如:10.0
在这些情况下,您需要找到一种方法来为您的脚本指定要使用的 DISPLAY。
要在您的日志中获得一些有用的输出,您可以添加:
pgrep -fa /usr/bin/X
显示 upstart 作业运行时是否有一个或多个 X 服务器实际运行。命令行还可以显示它们运行的显示器。
和
echo DISPLAY: "\"$DISPLAY\""
将 DISPLAY 变量写入日志。
我终于找到了答案。
显然,访问 Xserver 之类的东西是经过许可和授权的。
我的
xgamma
脚本版本非常有效: