如何在Linux上调整显示器亮度?

22

我该如何在Linux上以编程方式更改显示器亮度?

我正在使用SLES 11操作系统。


可能是Possible to change screen brightness with c?的重复问题。 - Alexander Stolz
11个回答

31

您始终可以使用

xrandr --output LVDS1 --brightness 0.9

3
"LVDS1"是您想更改的显示器名称。运行xrandr并检查您拥有的显示器名称。该行将类似于“LVDS1 connected 1920x1080+0+0”。 - spiffytech
9
man xrandr关于--brightness的引用:"这只是软件上的修改,如果您的硬件支持实际更改亮度,则可能更愿意使用xbacklight" - Amr Mostafa
1
如果您使用的是笔记本电脑,请将LVDS1更改为eDP;如果您使用DP显示器并已连接DP,请改用DP;DVI1、DVI2等同理。 - nwgat
1
Amr是正确的。这可以把所有白色变成黑色,或把所有黑色变成白色;但不能让白色更亮。 - BeniBela
由于此答案实际上并没有改变显示器的亮度,您最好尝试这个答案中提供的可能性:https://askubuntu.com/a/1181157/1046889 - Coden

14
你可以尝试使用xbacklight。 xbacklight -set 100可以设置屏幕亮度为最大值。

4

在我的机器上,我以root权限运行以下命令:

echo -n 10 > /sys/devices/virtual/backlight/acpi_video0/brightness

这是我使用的命令,但每次输入这个命令都很繁琐,因此你可能想要将一个 shell 函数添加到你的 .bashrc 文件中,例如:function brightness() { echo $1 > /sys/class/backlight/acpi_video0/brightness } - Max Wallace
当我尝试这个时,出现了 echo: write error: Invalid argument。您可能需要先检查 /sys/class/backlight/acpi_video0/max_brightness。结果发现我的 max_brightness 是 7。 - dr_agon
它能工作,但亮度为0只会导致屏幕变暗,而不是完全黑屏(像关闭一样)!!! 有什么想法为什么? - ransh

4

对于我来说,xbacklight 完美地发挥了作用。 例如,如果您想设置一个键绑定,您可以使用

bindsym $SUPER+Shift+plus   exec  xbacklight -inc 10
bindsym $SUPER+Shift+minus  exec  xbacklight -dec 10

在您的窗口管理器配置中(我使用i3),以调节屏幕亮度水平。我不推荐使用xrandr进行此操作,因为它不能自动停止在100%的亮度水平。

2
ddcutil 应用程序可以通过VESA DDC/MCCS标准更改外接显示器的实际背光亮度(xrandr只能在显示器当前设置的限制内移动X11输出,无法更改实际的背光亮度)。这适用于任何支持通过Display Data Channel(DDC已经存在了一段时间,被广泛支持,但仅适用于外接显示器)进行此功能的监视器。我使用 ddcutil 根据从网络摄像头采样的环境光水平自动调整我的监视器。Ddcutil 使用 i2c-dev 内核模块(modprobe i2c-dev 或将其设置为在启动时加载)。
ddcutil detect                    # Get list of DDC displays
ddcutil --display 2 capabilities  # List VCP feature key numbers
ddcutil --display 2 getvcp 10     # Get brightness by key number
ddcutil --display 2 setvcp 10 50  # Set brightness to 50                                                                            

回答完这个问题后,我已经为ddcutil编写了自己的桌面托盘GUI前端,专门用于快速访问背光调整。如果您需要这样的工具,请参见https://github.com/digitaltrails/vdu_controls上的vdu_controls或简短的介绍https://forums.opensuse.org/showthread.php/559401-Desktop-control-of-external-monitor-settings-with-ddcutil-and-vdu_controls - Michael Hamilton

0

编辑/etc/default/grub文件并添加

"pcie_aspm=force acpi_backlight=vendor"在后面。

GRUB_CMDLINE_LINUX_DEFAULT=”quiet splash”

更改后,整行将会变成这样

GRUB_CMDLINE_LINUX_DEFAULT=”quiet splash pcie_aspm=force acpi_backlight=vendor”

Chirag Singh


0
如果您有多个显示器和已安装 PHP,请将此内容放入 /usr/bin/brightness。
#!/usr/bin/php
<?
$br=(double)$argv[1];
if(!$br||$br>1) die("enter brightness lvl 0.1 - 1");
preg_match_all('!^(\S+)!m',`xrandr --current | grep ' connected'`,$m);
foreach($m[1] as $display){
        echo `xrandr --output $display --brightness $br`."\n";
}

然后调用 brightness .7


0
你可以考虑使用xgamma。虽然它不是纯代码,但至少它只是一个命令行实用程序。

xgamma不是监视器亮度,而是在输出到VGA卡之前进行图像过滤。 - osgx

0

这是在基于Linux的系统中控制亮度的简单步骤。

首先,您必须知道连接的监视屏幕。

要了解这一点,请运行此命令

xrandr -q

它将提供关于屏幕的有用信息

screen_info

(这里我的屏幕连接到eDP,你的系统可能不同)

知道了之后运行以下命令:

xrandr --output eDP --brightness [0-10]

将eDP替换为上面输出中连接的屏幕。

您可以选择从0.1到1.0的正常亮度值。


0

对于此命令:

xgamma -gamma 0.7


1
欢迎来到 Stack Overflow。您能详细说明一下您的答案吗?在这种情况下,这是哪些操作系统的选项?参数“gamma”会改变什么?xgamma 是否预安装? - mhovd

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