如何通过X11 RandR扩展库更改显示器亮度?

3

我可以通过以下方式轻松更改我的显示器亮度:

xrandr --output VGA1 --brightness 0.25

虽然这只是一个软件的修改,但它确实可以解决问题。根据手册,xrandr 是 RandR 扩展的原始命令行接口,很可能可以通过程序来改变我的监视器亮度。然而,在它的头文件<X11/extensions/Xrandr.h>中,我并没有找到任何相关的 API。
如何在 C 语言中使用 X11 RandR 扩展库来改变显示器亮度?
1个回答

2

是的,xrandr扩展,RRChangeOutputProperty请求。使用libXrandr库时,它是XRRChangeOutputProperty函数。请参见xbacklight源代码中的用法示例。


3
根据man页面xbacklightxrandr --brightness是完全不同的。如果可能,xbacklight控制硬件亮度,但xrandr则不会。 - Kevin Dong
你需要哪一个?通过randr扩展调用,gamma和背光都可以更改。 - Andrey Sidorov
更改伽马和背光都可以,但我想知道xrandr如何实现亮度。 xblacklight不会影响我的显示器亮度,但xrandr会。 - Kevin Dong
Xblacklight(同样适用于xrandr --set backlight)可能不会影响您的显示器,因为并非每个xf86-video驱动程序都支持其RandR的backlight属性。相反,Xrandr--brightness只是在服务器内部使用伽马和颜色进行“软件”处理,这就是为什么它总是看起来有效的原因。 - mirh
亮度从未通过XRandR扩展公开,可能可以通过使用简化的单位矩阵在所有颜色中实现亮度降低的方式来通过CTM输出属性(颜色转换矩阵)更改此设置,但是对于我的驱动程序,CTM是一个“不可变”的输出属性,也许更新的GPU驱动程序支持它。 - Motomotes

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接