调整外部屏幕的亮度

我在我的笔记本电脑上安装了Ubuntu 16.04 LTS,并通过HDMI线连接了外部显示器。我可以轻松地调整笔记本屏幕的亮度,但这并不影响外部显示器的亮度。有没有办法也调整外部显示器的亮度呢?

你可以使用Deepin或Lubuntu,它们都具有原生的控制功能。我已经使用过很多发行版,而这两个在性能方面非常出色。 - Hoiama Rodrigues
你可以使用Deepin或Lubuntu,它们都具有原生的控制功能。我已经使用过很多发行版,而这两个在性能方面非常出色。 - Hoiama Rodrigues
14个回答

通过命令行很容易完成。首先,在终端中输入以下命令来识别您的屏幕:

xrandr -q | grep " connected"

你会得到类似这样的东西:
LVDS1 connected 1366x768+0+0 (normal left inverted right x axis y axis) 344mm x 194mm

VGA1 connected primary 1366x768+1366+48 (normal left inverted right x axis y axis) 413mm x 234mm

LVDS1与笔记本电脑的内置显示器相关。我正在使用外接显示器(在这种情况下是VGA1)。如果您想降低外部屏幕的亮度,只需输入以下内容,例如:
xrandr --output VGA1 --brightness 0.63

3一段时间后,它会自动恢复到原始值。 - Peter
1@PetroCliff 在我的情况下,这是因为我正在使用红移。 - Gilles Castel
2即使我关闭了红移,它仍然在几秒钟后恢复到原始状态。 - Charith Jayasanka
1额外的事实是,你可以超过1。 - Emad
3对我来说,它完美地起作用了。如果能将这个命令与调节我笔记本亮度的快捷键绑定在一起就太好了。 - user171780
3我非常确定这不会降低屏幕的背光。相反,它会降低每个像素的亮度。因此,您会失去对比度并浪费更多的电力。 - Adam Selker
@AdamSelker 这个我知道了,很好。不过为了节省电力,我觉得你通常可以手动调节亮度——使用显示器本身提供的设置。 - undefined

硬件控制解决方案(无软件调光)

目前有两个软件可以进行硬件调光:

  • ddccontrol(命令行和图形界面)
  • ddcutil(命令行和图形界面)
  • ddcci-backlight(由GNOME和其他平台支持的驱动程序)

工具1:ddccontrol

ddccontrol(注意双重cc)是一个工具,可以以与显示器屏幕上的菜单/硬件按钮相同的方式控制许多监视器的设置。

在Ubuntu中可通过apt install ddccontrol安装(man page)。

gddccontrol是其图形用户界面:apt install gddccontrol

两者都需要以root权限运行:

  • sudo ddccontrol 用于命令行工具
  • gksudo gddccontrolpkexec gddccontrol 用于GUI工具。

(基于@Ad Infinitum@Taz8du29的评论中的建议(但请注意名称中有额外的c)。

工具2: ddcutil / ddcui

一个替代ddccontrol的工具,ddccontrol相当不维护的时候开发

可以通过apt install ddcutil在Ubuntu (man page)上安装。

你可以以root身份运行它们,或者安装i2c-tools并将你的用户添加到i2c组中,以免使用root权限进行操作(解释)。
它还有一个名为ddcui的图形界面(截图在这里)。
如果你想要将亮度降低到显示器OSD或ddcutil getvcp 10所允许的最低级别以下,你可以尝试使用ddcutil getvcp 16/18/1A来均匀降低RGB级别。
工具3:ddcci-backlight驱动程序
这个ddcci驱动程序将所有支持ddcci的显示器集成到sysfs中,包括/sys/class/backlight/。 例如,GNOME将使用该接口来设置亮度,您可以在没有额外用户界面或终端的情况下设置亮度。
在Ubuntu上可用:apt install ddcci-dkms

17哇,这改变了我的生活 - lleaff
3ddcutil和ddcui对我来说是一见钟情。谢谢。 - dimitarvp
2甚至有一个Gnome扩展可以使用ddcutil来控制亮度:https://extensions.gnome.org/extension/2645/brightness-control-using-ddcutil/ - Max
1通过HDMI和DVI连接了两个显示器。图形用户界面显示:“当前的显示器在数据库中,但不支持DDC/CI”。嗯,这真有趣... - Seek Truth
非常感谢,这让我更加喜爱Ubuntu。 - Kashif Anwaar
非常感谢,伙计... - undefined

之前提到的亮度控制器现在是2版。原始简化版可通过以下步骤使用,支持最多4个监视器。已在Ubuntu 14.04和16.04上测试工作正常。

sudo add-apt-repository ppa:apandada1/brightness-controller
sudo apt-get update
sudo apt-get install brightness-controller-simple

enter image description here

请享受!


4在Ubuntu 18.04上运行得非常好。它让我能够比显示器上的按钮更大程度地调暗外部亮度。 - Garrett
3我注意到显示器的内置菜单仍然很亮。这可能意味着软件实际上并没有发出HDMI信号,而是在屏幕内容上绘制了一个灰色矩形。 - Victor Sergienko
1很不幸,与“夜光模式”完全不兼容。它们之间存在冲突。 - gneric

我终于找到了一个可以调整与HDMI连接的外接副显示器亮度的软件包。
这个软件包叫做亮度控制器(版本2,带有更新的界面)。
要安装它,首先将PPA软件源添加到您的系统中,并更新软件包列表:
sudo add-apt-repository ppa:apandada1/brightness-controller
sudo apt update

您可以使用apt像往常一样安装软件包:
sudo apt install brightness-controller

安装完成后,主屏幕是第一个屏幕,而外接显示器则是次要的。

![enter image description here


如果可能的话,你应该使用硬件来设置亮度。
除了nh2的回答之外,还有一个ddcci驱动程序可以通过/sys/class/backlight/接口使支持ddcci的显示器的硬件亮度可用。 可以通过以下方式安装它:
sudo apt install ddcci-dkms

那样,GNOME的亮度控制也可以调节外接显示器的亮度。

亮度是硬件问题。您只能通过使用外部显示器的按钮和集成接口来调整它。
因为这个硬件内部连接到PCI或I²C总线,所以您可以在笔记本电脑上这样做。
要“调暗”您的外部显示器,您可以使用像f.lux这样的程序,它将从GPU输出中删除一些颜色(主要是蓝色)。结果是图像看起来对您的眼睛不那么“刺激”。
您还可以尝试黑客攻击显示器,使用PIC或AVR芯片模拟正确的按键(或更多,如果您稍微进行逆向工程)来改变亮度。

3谢谢您的回答。经过我的研究,我发现有一个软件包ddcontrol可以实现我想要的功能。然而,使用ddcontrol只能在与I2C(VGA或DVI)连接的显示器上调节亮度。在我的情况下,我正在寻找类似的东西,适用于使用HDMI连接的显示器。 - Ad Infinitum
1感谢让我发现_ddcontrol_!不过遗憾的是,我认为HDMI上没有定义处理这种命令的协议....编辑:对不起,似乎还是有一个协议:http://elinux.org/CEC_(Consumer_Electronics_Control)_over_HDMI - Taz8du29
消费电子控制是一个非常有趣的话题 :) 谢谢你让我发现它 :) 我仍然在寻找一个适合我的“问题”的解决方案。虽然没有成功,但我相信解决方案一定存在。 - Ad Infinitum
我已经找到解决办法了。请阅读我的回答 :) - Ad Infinitum

与其为xrandr设置亮度级别,你可以使用这个Bash脚本来逐步调整亮度的增减。

将下面的Bash脚本复制到一个名为bright的文件中。

然后使用chmod a+x bright命令将其标记为可执行。

Bash脚本

#!/bin/bash

MON="DP-1-1"    # Discover monitor name with: xrandr | grep " connected"
STEP=5          # Step Up/Down brightnes by: 5 = ".05", 10 = ".10", etc.

CurrBright=$( xrandr --verbose --current | grep ^"$MON" -A5 | tail -n1 )
CurrBright="${CurrBright##* }"  # Get brightness level with decimal place

Left=${CurrBright%%"."*}        # Extract left of decimal point
Right=${CurrBright#*"."}        # Extract right of decimal point

MathBright="0"
[[ "$Left" != 0 && "$STEP" -lt 10 ]] && STEP=10     # > 1.0, only .1 works
[[ "$Left" != 0 ]] && MathBright="$Left"00          # 1.0 becomes "100"
[[ "${#Right}" -eq 1 ]] && Right="$Right"0          # 0.5 becomes "50"
MathBright=$(( MathBright + Right ))

[[ "$1" == "Up" || "$1" == "+" ]] && MathBright=$(( MathBright + STEP ))
[[ "$1" == "Down" || "$1" == "-" ]] && MathBright=$(( MathBright - STEP ))
[[ "${MathBright:0:1}" == "-" ]] && MathBright=0    # Negative not allowed
[[ "$MathBright" -gt 999  ]] && MathBright=999      # Can't go over 9.99

if [[ "${#MathBright}" -eq 3 ]] ; then
    MathBright="$MathBright"000         # Pad with lots of zeros
    CurrBright="${MathBright:0:1}.${MathBright:1:2}"
else
    MathBright="$MathBright"000         # Pad with lots of zeros
    CurrBright=".${MathBright:0:2}"
fi

xrandr --output "$MON" --brightness "$CurrBright"   # Set new brightness

# Display current brightness
printf "Monitor $MON "
echo $( xrandr --verbose --current | grep ^"$MON" -A5 | tail -n1 )
  • MON="DP-1-1"更改为您的显示器名称,例如MON="eDP-1-1"
  • STEP=5更改为您的步长值,例如STEP=2会更不明显

使用以下命令调用脚本:

  • bright Upbright +以步长值增加亮度
  • bright Downbright -以步长值降低亮度
  • bright(无参数)获取当前亮度级别

希望bash / shell命令可以轻松通过搜索进行学习,如果有任何问题,请随时提问:)


还有一种可能性是使用扩展来将硬件亮度控制包含在系统界面中。其中大部分依赖于ddcutil作为后端。您可以访问https://extensions.gnome.org/并搜索"ddc brightness"。
它们通常需要一些配置,例如授予用户所需的权限。请查看每个扩展的文档/存储库。
一些扩展包括:

如果你正在使用Chrome,试试Firefox。这是最奇怪的事情。我的亮度在其他地方都正常(下载的电影、Firefox),但在Chrome上亮度很暗?!

这里也有同样的问题。你是否碰巧正在使用nvidia/nouveau并运行wayland呢? 一个提示:如果在nouveau上在wayland上运行chrome,请不要截屏(使用ctrl+Print Screen快捷键或者其他已更改的快捷键)。 它会严重破坏chrome。 - hkoosha
不,我使用的是基本的英特尔GPU。谢谢你提供的信息。 - Wachaga Mwaura

我的问题是,在HP15 AMD笔记本电脑上使用Ubuntu 18.04时,当双显示器变为活动状态后,显示器的亮度似乎会“降低”。
从“电视”亮度级别开始...并且只有通过xrandr更改“亮度”才会改变对比度。
我无法通过更改伽马值来轻松修复它。这可能只是一个硬件相关的问题。在此笔记本电脑上以前的HDMI监视器配置中,我没有遇到过这个问题。
所以,警告:即使您使用xrandr或xbrightness,您会发现结果取决于供应商。
此外,gksudo/gksu已经在Ubuntu 18.04中被删除 https://itsfoss.com/gksu-replacement-ubuntu/ 如果您要运行ddccontrol,则需要找到一个关于如何启动它的页面...这是另一天的任务。