如何设置默认显示亮度?

有没有可能设置默认显示亮度,这样每次重新启动就不用再调节了?我的笔记本在登录界面上的显示已经让我眼睛痛苦了,因为它每次都从100%的亮度开始。


试试这个链接:http://askubuntu.com/questions/481413/how-do-i-get-brightness-controls-working-on-a-sony-vaio-fit-15e/485647#485647 - αғsнιη
1@jeremy 你为什么不接受我的答案,因为我的回答似乎是有效的。 - Tummala Dhanvi
@Jeremy 你能把其中一个答案标记为被接受吗?这对你的个人资料统计也有好处。 - Stéphane Gourichon
@Stormvirux 那个问题是这个问题的重复,因为它是后来问的。(因此我在另一个问题上标记了旗帜)。 - wjandrea
1@wjandrea 年龄并不重要 - 观点、投票和质量才更为重要。但我投票选择保持开放,因为另一个问题更具体(而且重复所有已有答案的模糊相似帖子并不是我喜欢的策略...) - Zanna
5个回答

解决方案的评论以及提供(希望更好的)一个

以往的解决方案

/sys/ - 基于控制台,适用于终端

@gan

这个方法可以通过echo 5 > /sys/class/backlight/acpi_video0/brightness来实现,但是在与X系统一起使用时效果不佳。具体来说,X系统并不知道您的首选设置,因此你可能需要手动调整亮度至少一次,类似于bug #1042359

setpci - 基于系统,具有危险性

@erickjohncuevas

基于像setpci -s 01:00.0 F4.B=50这样的东西的解决方案是危险的。这里的01:00.0实际上是针对PCI总线上特定板卡的ID。它是与系统相关的。这意味着盲目跟随这种方法可能会在其他某些板卡上写入配置寄存器,而这可能不会产生任何作用,也可能导致系统在将来的某个时间点崩溃。无论如何,这种方法也与X系统不兼容。


解决方案建议

优点/缺点

以下解决方案具有以下优点:

  • 与完全了解所选设置的X兼容
  • 更易读,因此更易于维护
  • 不包含特定系统的地址等信息,因此可以在更广泛的硬件范围上工作(例如,在内核不知道背光或甚至不使用基于PCI的视频板的情况下,ARM架构上的Ubuntu

假设:使用lightdm的Ubuntu(即从11.10版本开始)

它仅在lightdm启动时设置背光。但如果您确实需要更早设置背光,可以与上述基于/sys的解决方案相结合。

解决方案

复制粘贴以下命令应该能满足您的需求(sudo可能会要求输入密码)。

  1. 如果尚未安装xbacklight(它是一个小包),请先安装。

    sudo apt-get install xbacklight
    

    您可以在命令行上测试xbacklight是否正常工作。例如:

    xbacklight = 100 ; sleep 2 ; xbacklight = 30
    

    尝试找出适合您的硬件和光照条件的合适值。

  2. 创建一个运行xbacklight的小脚本。
    如果需要,您可以将=30更改为其他值。
    || true确保如果xbacklight由于任何原因失败,X仍然可以启动。

    sudo bash -c '{
        echo "#!/bin/bash"
        echo "xbacklight =30 || true"
    } >> /etc/lightdm/display-setup-script.sh '
    
  3. 使脚本可执行

    sudo chmod a+rx /etc/lightdm/display-setup-script.sh
    
  4. 在启动X时指示lightdm运行该脚本。
    具体来说,这会在lightdm配置文件中添加一行display-setup-script,但前提是没有已存在的。

    if grep -ri ^display-setup-script /etc/lightdm/
    then 
      echo "可能已经存在display-setup-script。它可能已经满足您的需求。否则,请手动进行调整" ; 
    else 
      if [[ -d /etc/lightdm/lightdm.conf.d ]]
      then
        # Ubuntu 13.10及以上版本具有lightdm.conf.d。14.04 *仅*具有lightdm.conf.d。
        DEST_CONF_FILE=/etc/lightdm/lightdm.conf.d/20-default-brightness.conf
      else
        # Ubuntu 12.04、12.10、14.10没有lightdm.conf.d,因此我们更改主配置文件
        DEST_CONF_FILE=/etc/lightdm/lightdm.conf
      fi
      echo "写入$DEST_CONF_FILE"
      sudo bash -c "{ 
          echo '[SeatDefaults]' ; 
          echo display-setup-script=/etc/lightdm/display-setup-script.sh ; 
      } >> $DEST_CONF_FILE" ; 
    fi
    
可能通过在控制台上从根会话中重新启动lightdm来进行测试。或者更简单地通过重新启动来进行测试。
已在Ubuntu 12.04、12.10、13.10、14.04、14.10、16.04上进行了测试。
请提供您的体验反馈。

1在一个新安装的Ubuntu 12.10上,以上行的复制粘贴功能正常工作。 - Stéphane Gourichon
我也可以。 - Pawelmhm
在一个刚安装的Xubuntu 13.10上,以上的行可以直接复制粘贴。 - Stéphane Gourichon
刚刚针对Ubuntu 14.04进行了调整,经过测试,一切正常。如果xbacklight失败,不会影响X的启动。 - Stéphane Gourichon
1在14.10版本上适用。(奇怪的是,Ubuntu 14.10回到了/etc/lightdm/lightdm.conf而不是/etc/lightdm/lightdm.conf.d。但这个解决方案仍然有效。) - Stéphane Gourichon
@wjandrea 感谢您的编辑,缩进很好,变量名也没问题。改变整体标记决策似乎是有争议的。大多数人(95%?)希望能够立即复制粘贴。有些人喜欢阅读代码以理解其功能。在脚本块中添加注释似乎非常合适。列表标记使注释更加显眼,但会妨碍直接复制粘贴到终端的选项。我对您的编辑表示怀疑,但还是让它们通过了。感谢您的参与。 - Stéphane Gourichon
@StéphaneGourichon 感谢你的解决方案!它对我很有效。我之所以从代码格式改为列表格式,是为了更好地展示给初学者的步骤,并且使其他人更容易阅读。读者可以复制粘贴每个命令并达到你想要的相同结果。 - wjandrea
在Ubuntu 18.04上,xbacklight不再起作用:"没有输出具有背光属性"。直接操作/sys/class/backlight/*/brightness可以正常工作。我可能需要调整脚本。 - Stéphane Gourichon
在安装了xbacklight并使用sudo命令进行测试后,我尝试在Ubuntu 22.04上运行此命令:xbacklight 30。然而,我收到了以下错误信息:没有输出具有背光属性。运行echo $?的结果是1,这意味着前一个命令未正确执行。 - user76170

source

实际上,将某个值回显到屏幕上并不能改变亮度,因为这个值在不同的系统中会有所不同。

首先,您需要将屏幕的亮度调整到您感觉舒适的水平,可以通过系统设置亮度和锁定或使用功能键轻松完成。

现在进入/sys/class/backlight/<folder>(我的文件夹是intel_backlight

screen shot of the folder

在这个文件夹中,您可以看到actual_brightness文件和max_brightness文件。(如果您在打开此文件后对亮度进行了任何更改,请不要忘记刷新(使用Ctrl+R或F5)以查看实际的当前设置。)
现在,每次启动系统时,我们都需要与亮度相同的值。这可以通过在启动时更改此文件夹中的值来完成。我们需要更改rc.local文件。
首先,在终端中键入以下命令(可以通过在Dash中搜索终端或按下Ctrl+Alt+T打开):
sudo -i
gedit /etc/rc.local

并添加这行文字

echo 900 > /sys/class/backlight/intel_backlight/brightness

替换900为您需要的任何值(即从上述步骤中获得的值)。同时,将intel_backlight替换为/sys/class/backlight/文件夹的名称。
例如,我的/etc/rc.local文件:
#!/bin/sh -e
#
# rc.local
#
# This script is executed at the end of each multiuser runlevel.
# Make sure that the script will "exit 0" on success or any other
# value on error.
#
# In order to enable or disable this script just change the execution
# bits.
#
# By default this script does nothing.
rfkill block bluetooth
echo 900 > /sys/class/backlight/intel_backlight/brightness

exit 0

作为一个旁白,我在我的rc.local文件中添加了一行代码rfkill block bluetooth,因为我根本不使用蓝牙,但是Ubuntu每次重新启动时都会启动蓝牙(即使之前关闭了蓝牙)。你也可以添加这行代码,以防万一你想要使用蓝牙,你随时可以再次启动它,即使这行代码已经存在于你的rc.local文件中)。
请不要改变结尾处exit 0的值。如果这行代码不存在,请添加它。
现在,即使你重新启动系统,你仍然会得到你所需要的相同值。
请注意不要将亮度值设置为大于max_brightness,否则会出现无效参数的错误提示。

1谢谢Dhanvi。这不仅解决了亮度问题,还解决了蓝牙问题。 - VRR
我已将rfkill block bluetooth添加到此文件中,这样每次启动系统时我就不需要打开蓝牙了,希望这对你也有帮助 :) - Tummala Dhanvi
1这是一篇很棒的帖子。谢谢你分享这个方法!我已经用过这个方法来阻止蓝牙每次启动,可以确认它有效。 - BubbleMonster
在Ubuntu 20.1上对我不起作用。 - Amogh Jahagirdar
在我的Ubuntu 22.04上无法工作。 - Maurycyt

这不是默认设置。每次我重新启动时,亮度都会被设置为100%。然后我用命令来调整亮度:
$ echo 5 | sudo tee /sys/class/backlight/acpi_video0/brightness

3修改/sys的权限是一个非常糟糕的方法,因为/sys实际上是由内核自身提供的虚拟文件系统,改变/sys的权限会带来各种安全隐患。如果需要写入文件,请使用sudo命令。 - heemayl

一旦您设置了所需的亮度,您可以按照N0rbert在此处提供的答案进行操作:每次重新启动时亮度都会重置为最大值。简而言之:

sudo add-apt-repository ppa:nrbrtx/sysvinit-backlight
sudo apt-get update
sudo apt-get install sysvinit-backlight

sudo service sysvinit-backlight status # Show current brightness levels and values saved in files
sudo service sysvinit-backlight start # Set saved levels from files
sudo service sysvinit-backlight stop # Save current levels to files

你有没有看过redshift?它是为了另一个目的而设计的(在夜晚减少屏幕的蓝光),但它也可能解决你的问题。
安装方法如下:
sudo apt-get install redshift

我的配置文件(~/.config/redshift.conf):
[redshift]
;temp-day=5700
;temp-night=4600
brightness-day=1.0
brightness-night=0.75
gamma=0.8
adjustment-method=vidmode
location-provider=manual

[manual]
lat=63.81415
lon=20.41742

如果你将brightness-day和brightness-night更改为你喜欢的值,并将temp-day和temp-night设置为相同的值,那么你将有效地使用redshift来设置亮度。
要使redshift在登录时自动启动,请选择应用程序/系统工具/首选项/启动应用程序/添加。名称:redshift。命令:/usr/bin/redshift。

不确定你的意思。红移会改变屏幕的色温,也可能会改变亮度。 - Niclas Börlin
亮度不像你想的那样工作,请查看此链接 http://jonls.dk/redshift/,以及已知的错误和限制。 - Tummala Dhanvi
4Redshift has a brightness adjustment setting, but it does not work the way most people might expect. In fact it is a fake brightness adjustment obtained by manipulating the gamma ramps, which means that it does not reduce the backlight of the screen. Preferable only use it if your normal backlight adjustment is too coarse-grained. - Tummala Dhanvi
虽然是个好主意。我们有没有类似的应用程序真正起作用呢?在晚上或睡觉前降低伽马值非常重要。 - nyxee