我在 Acer Aspire E5-773G 笔记本上运行 Ubuntu 16.04。不幸的是,我无法在登录屏幕上使用亮度功能键,因此我能够在成功输入密码并登录后第一次更改屏幕背光亮度。
默认情况下,Ubuntu 会以上次关机时设置的亮度级别启动,但这并不是很有用,例如,有时我会在深夜以大约 5% 的亮度级别关机,第二天再次启动时,我需要至少 50% 的亮度级别才能舒适地看到所有内容。相反,如果我在白天以大约 80% 的亮度关机,然后在晚上启动它,我几乎会被灯光晃得睁不开眼……
如何配置 Ubuntu 以根据当前白天的亮度级别启动?我希望在 22:00 到 06:00 之间亮度为 10%,在 10:00 到 16:00 之间亮度为 60%,在中间亮度为 30%。平滑曲线是可以的,只要它保持易于配置即可。或者,如果您找到一种根据当地日落/日出时间进行设置的方法,那将是一个很大的好处。:)
根据这些规则修改亮度只能在启动期间或从挂起状态唤醒时进行。在我工作时它可能不会自动更改亮度。
答案1
基本思想:
保存配置文件
/opt/.time_brightness_values
:{ "5,7": 0.25, "8,16": 0.50, "17,22": 0.75 }
注意带引号的值和逗号。带引号的值的第一列表示 24 小时制的小时范围,第二列表示百分比。例如,如果您从 5 点到 7 点启动,亮度将设置为 25%。如果您从 8 点到 16 点启动,亮度将设置为 50%。
将以下脚本保存为
/opt/set_timed_brightness.py
#!/usr/bin/env python3 from __future__ import print_function from collections import OrderedDict import json import time import sys import os def read_config(): dir = '/opt' filename = '.time_brightness_values' conf_file = os.path.join(dir,filename) brightness = None with open(conf_file) as f: try: data = json.load(f) data = OrderedDict(sorted(data.items())) except Exception as e: print(e) sys.exit(1) else: keys = [ key.split(',') for key,value in data.items()] keys.sort() hour = time.localtime().tm_hour for key in keys: if int(key[0]) <= hour and int(key[1]) >= hour: brightness = data[','.join(key)] return brightness def set_percentage(pcent): dir = os.listdir('/sys/class/backlight') dev = os.path.join('/sys/class/backlight',dir[0]) max = None with open(os.path.join(dev,'max_brightness')) as f: max = f.readline().strip() new = int(float(max)*pcent) new = str(new) with open(os.path.join(dev,'brightness'),'w') as f: f.write(new) def main(): percentage = read_config() if percentage: set_percentage(percentage) if __name__ == '__main__': main()
greeter-setup-script=/opt/set_timed_brightness.py
在文件中设置/etc/lightdm/lightdm.conf
。欢迎设置脚本以 root 身份运行,一旦您的系统进入登录屏幕,该脚本将运行并设置您需要的亮度。至于从挂起状态唤醒,创建
/etc/pm/sleep.d/set_timed_brightness.sh
:#!/bin/bash case "${1}" in resume|thaw) python3 /opt/set_timed_brightness.py ;; esac
记住:所有标准规则均适用,脚本必须可执行chmod +x
,并且每个文件的命名和调用必须一致。
答案2
令人赏心悦目
Eyesome 是一个以守护进程形式运行的 bash 脚本,24/7 大部分时间处于休眠状态。它通过硬件接口自动调整笔记本电脑显示屏的屏幕亮度(也可以选择调整伽玛值),并使用xrandr
软件控制最多调整另外两台显示器的屏幕亮度。
日出时(每天自动从互联网获取时间),屏幕亮度和伽玛(又称色温、色调或色调)会逐渐调整。日落前,夜间设置会逐渐调整。在这两个时间段之间,这些令人赏心悦目的守护进程会休眠数小时。
eyesome 与 Redshift、Night Light 和类似产品的区别在于,它能够同时控制三台具有独特设置的显示器。同样值得注意的是,eyesome 除了控制色温外,还控制亮度(硬件和软件)。
Eyesome 设置 - 主菜单
运行时,sudo eyesome-cfg.sh
主菜单将出现:
编辑配置 - 常规选项卡
当您点击编辑主菜单中的按钮编辑配置常规选项卡最初显示如下。
如果“亮度更新间隔”太短,可能会导致硬件亮度调整太小,而有些笔记本电脑会忽略它。如果您的屏幕在日落前没有变暗,请将间隔增加到 60 秒或更长。您可以在“监视器”选项卡上查看当前亮度级别变化。例如,如果您看到每个更新间隔的级别变化小于 21,则对于 Dell Alienware 17R3 笔记本电脑来说,这个间隔太短了。然而,在 Dell Inspiron 17" 7720 SE 笔记本电脑上,亮度变化 1 可以正常工作。
您的“国家/城市名称”应会自动出现。如有必要,您可以覆盖它。
“监视外部显示器插入/电源切换”复选框也适用于某些应用程序随机调用颜色管理 dbus 守护程序,该守护程序会重置xrandr
为 100% 亮度和伽玛。除非有充分理由不这样做,否则您应该选中此框。
编辑配置 - 监视器 1 选项卡
单击“监视器 1”选项卡会在我的配置中显示此面板(您的配置可能有所不同):
不要被这些设置吓到,因为大多数设置都是由 eyesome 自动获取的。不过,您需要设置白天和夜晚的亮度/级别。
如果红色、绿色和蓝色的伽马值令人生畏,您可以稍后使用覆盖主菜单中的按钮。在那里,您可以访问色温滑块控件,其中 3500 是典型的夜间设置,6500 是典型的白天设置。典型的白天设置是红色、绿色和蓝色通道的 1.0,这是每个系统的默认值。
编辑配置 - 监视器 3 选项卡
单击“监视器 3”选项卡会在我的配置中显示此面板(您的配置可能有所不同):
显示器 2 选项卡未显示,因为它是具有自适应亮度和智能操作系统的新电视。它不需要 Eyesome 覆盖。
安装 eyesome 后,大部分配置都会自动创建。如果稍后您连接了其他显示器,则可能需要输入xrandr
显示器名称。
Eyesome 设置 - 5 秒测试
在主菜单中,您可以点击白天和夜间按钮。您可以从“编辑配置 - 常规”选项卡中将测试持续时间从 1 秒更改为 20 秒。
以下是 5 秒夜间测试的内容:
在现实生活中,如果你在白天进行测试,你会看到屏幕会急剧变暗。但是用于制作上述 .gif 动画的屏幕录像机无法记录亮度或色温(伽马)变化。
令人赏心悦目的覆盖
当您点击覆盖单击主菜单中的按钮,将出现以下窗口:
毫无疑问,你的第一步是点击帮助使用此窗口按钮:
假设我们点击得到按钮并选择监视器 3,夜间设置:
现在我们在内存中有了默认值,请单击颜色按钮:
抓住滑块并将其向左移动,以获得夜间的暖色/偏红颜色设置。向右移动滑块以获得白天的冷色/偏蓝颜色设置。点击转变按钮来计算红色,绿色,蓝色伽马通道或辞职如果您改变主意,请按下按钮。
异常事件处理
假设您在早上上班前将笔记本电脑挂起,屏幕完全暗淡。下班后,当太阳高挂天空时,您回到家并打开笔记本电脑。现在屏幕太暗了,很难阅读。
为了解决这种情况,提供了 systemd 控制文件:
/etc/systemd/system-sleep/systemd-wake-eyesome
每当系统暂停或恢复时,都会调用控制文件。- 控制文件调用bash脚本
/usr/local/bin/wake-eyesome.sh
根据时间设置亮度,然后睡眠直到下一个过渡期。
晚上,您正在外接电视上观看电影,为了更好地观看,您合上了笔记本电脑盖。Ubuntu / Lightdm / xrandr 需要几秒钟的时间,然后将外接电视重置为全亮度。您的眼睛真疼。
为了解决这种情况,提供了 acpi 事件控制文件:
/etc/acpi/event/lid-event-eyesome
每当打开或关闭笔记本电脑盖时,都会调用控制文件。- 控制文件调用bash脚本
/etc/acpi/acpi-lid-eyesome.sh
来处理盖子的打开和关闭。 - 反过来,令人赏心悦目的 bash 脚本会
/usr/local/bin/wake-eyesome.sh
调用重置亮度以方便夜间观看,然后休眠直到日落。
概括
这个答案是在问题发布后近两年才发布的。这个答案的早期版本在 2017 年 2 月被删除,我刚刚恢复并修改了它。
Eyesome 可以从以下网址下载:https://github.com/WinEunuuchs2Unix/eyesome
Eyesome 于 2018 年 9 月发布。随后,它于 2020 年 6 月进行了修订,增加了色温功能,以减轻输入红、绿和蓝伽马通道的负担。计划进行更多更改以手动输入日出和日落时间。