我有一台笔记本电脑,带有通过 HDMI 连接的外部显示器(输出名称为HDMI1
)。该命令xbacklight
仅适用于我的主屏幕(即笔记本电脑屏幕)。
-display HDMI1
即使我尝试使用参数(这给了我一个错误RANDR Query Version returned error -1
)或--display HDMI1
(这给了我帮助信息)运行它,它也不起作用。
我见过这个——关闭外接显示器的背光- 问题,但它只提到如何更改亮度, 不是背光。
编辑:该选项-display
未记录在 的手册页中xbacklight
,但在快速查看我发现的源代码后它在哪里使用。在函数中xcb_connect
它代表 X 显示,而不是实际的屏幕名称。
答案1
ddcutil
正如提到的,你可以用 来做到这一点这里,但它不是那么敏感并且需要 root 权限:
# ddcutil capabilities | grep Brightness
Feature: 10 (Brightness)
# ddcutil getvcp 10
VCP code 0x10 (Brightness ): current value = 60, max value = 100
# ddcutil setvcp 10 70
我不认为存在“一刀切”的解决方案,因为背光配置取决于硬件。在某些情况下,即使是内置笔记本电脑显示器,您也无法控制背光。
答案2
替代方案ddutil(例如,如果您的显示器不支持 DDC/CI,或者您不想加载额外的内核模块 ( i2c-dev
),或者您没有访问权限/dev/i2c-*
),则使用红移。
红移控制色温,但它也控制屏幕亮度。
您可以将配置文件设置为在白天和晚上具有不同的亮度(如果您愿意,也可以设置不同的色温),或者您可以从命令行即时更改其中任何一个。
在命令行中,在多显示器情况下,您需要使用该-m
标志。您的主显示器是crtc=0
您的外部显示器crtc=1
。您还可以使用 给定的显示器名称xrandr
。
例如,要将外部显示器的亮度设置为 70%,您可以运行:
redshidft -m randr:crtc=1 -b 0.7 &
如果您使用配置文件,请添加以下内容:
[randr]
screen=0
crtc=1
(这将crtc=0
用于您的主显示器的配置文件。这个问题涵盖了这一点。)
如果您已在主屏幕上使用 redshift,则可以为每个显示器运行 2 个正在运行的 redshift 实例,并具有不同的设置。您甚至可以有 2 个不同的配置文件(使用标志加载第二个 redshift 实例,-c
为其指定第二个配置文件的路径)。
需要注意的一件事是,即使您杀死了 redshift 实例,这些设置仍然保持活动状态。要返回到正常设置,您需要运行redshift -x
(因此,对于您的外部显示器,这将是redshift -m randr:crtc=1 -x
)。如果您终止一个实例,然后在没有先运行此命令的情况下启动另一个实例,则设置将是累积的。这是一个有点奇怪的行为,但它实际上有一些优点:在某些情况下,根据它们的启动方式,2 个并发实例可能会产生一些闪烁。如果发生这种情况,您只需杀死一个(或两个)即可解决问题:设置将保留。
所有这些看起来可能非常复杂,但是一旦您熟悉它并且设置了一些配置文件、别名或键绑定,它实际上就可以很好地工作。例如,如果您启动红移实例.xinitrc
,您可能永远不必再摆弄它,因为亮度会在黄昏和黄昏时自动调整。
编辑: 我关于 redshift 在被杀死后不重置默认监视器值的评论是我的一个错误:
如果轻轻地要求用信号 15 终止并清理(例如
kill -15 <pid>
,这是 的默认信号值kill
),它实际上会重置事物作为清理的一部分如果用信号 9 杀死(例如
kill -9 <pid>
),它将停止而不重置任何东西
这是有道理的,但我从来没有意识到这一点。在多个 redshift 实例产生一些闪烁的情况下,我利用这一点并启动,然后立即杀死(使用某些功能)一个新实例。它可能不是很干净......但到目前为止它对我来说非常有效。
答案3
xbacklight 可能是您的答案:
https://wiki.archlinux.org/index.php/backlight#xbacklight
亮度和背光似乎是同一件事。如果是这样,请继续,xrandr
因为每个输出都受支持。