如何更改外接显示器的背光?

如何更改外接显示器的背光?

我有一台笔记本电脑,带有通过 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因为每个输出都受支持。

相关内容