根据白天设置初始启动背景亮度

我在Acer Aspire E5-773G笔记本上运行Ubuntu 16.04。 不幸的是,我无法在登录屏幕上使用亮度function键,所以在我能够更改屏幕背光亮度的第一时刻是成功输入密码并登录后。

默认情况下,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%。

  2. 将下面的脚本保存为/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() 
  3. /etc/lightdm/lightdm.conf文件中设置greeter-setup-script=/opt/set_timed_brightness.py 。 greeter安装脚本以root身份运行,一旦系统进入登录屏幕,脚本将运行并设置所需的亮度。

  4. 至于从暂停状态唤醒,请创建/etc/pm/sleep.d/set_timed_brightness.sh

     #!/bin/bash case "${1}" in resume|thaw) python3 /opt/set_timed_brightness.py ;; esac 

请记住 :所有标准规则都适用,脚本必须使用chmod +x可执行,命名和对每个文件的调用必须一致。

eyesome

Eyesome是一个作为守护神运行的bash脚本,大部分时间都是24/7hibernate。 它可以通过硬件接口自动调整笔记本电脑显示屏的屏幕亮度(以及可选的伽玛值),使用xrandr的软件控制自动调整其他两个显示器。

在日出时(每天从互联网自动获取时间),您的屏幕亮度(以及可选的伽马值)也会逐渐调整。 逐步调整由您定义,但120分钟对我有用。 为了保持调整不明显,请在调整之间设置hibernate间隔。 15到60秒之间的任何地方都可能是最好的,默认值是60。

日出过渡完成后,守望的守护进程会睡几个小时,直到日出过渡开始。 我在日出前90分钟使用,但您可以设置任何您喜欢的时间段。

与日出过渡相反,日落过渡逐渐降低屏幕亮度(并且可选地也是伽玛),因此它是不明显的。

注意,在夜间转换期间,可以将伽玛定义为增加。 例如,红色伽马可以在白天定义为1.0,在夜晚定义为1.2以减少眼睛疲劳。 反过来,蓝色伽玛可以在白天定义为1.0,在夜晚定义为.8,因此它会减少。

为了减少资源,在日落和日出之间的整个时期,人们会睡觉。 根据您居住的地方和一年中的季节,平均睡眠时间为12小时。

眼睛设置 – 主菜单

要配置眼镜,请提供主菜单:

eyesome主menu.png

编辑配置 – 常规选项卡

单击主菜单中的“ 编辑”按钮时,编辑配置常规选项卡最初显示如下所示。

eyesome configuration general tab.png

您的国家/地区名称应自动显示。 如有必要,您可以覆盖它。

编辑配置 – 监控1选项卡

单击上面的Monitor 1选项卡将在我的配置中显示此面板(您的可能不同):

eyesome编辑配置显示器-1.png

不要被这些设置吓倒,它们大部分是由眼睛自动获得的。 您需要设置白天和夜晚的亮度/水平。

编辑配置 – 监视器3选项卡

单击Monitor 3选项卡会在我的配置中显示此面板(您的可能不同):

监视器2选项卡未显示,因为它是具有自适应亮度和智能操作系统的新电视。 它不需要Eyesome的覆盖。

在此处输入图像描述

如果安装了eyeome,则可以在系统上安装不同的显示器,您可能需要输入xrandr显示器名称。

Eyesome Setup – 5秒测试

从主菜单中,您可以分别单击白天夜间按钮,测试您的白天和夜晚亮度和伽玛设置5秒。 您可以从“编辑配置 – 常规”选项卡将测试持续时间从5秒更改为20秒。

这是5秒夜间测试的样子:

眼力一夜的test.gif

不寻常的事件处理

假设您在工作之前的早晨暂停笔记本电脑并且屏幕完全昏暗。 下class后,当太阳高高的天空打开你的笔记本电脑时,你回家。 屏幕太暗,你无法阅读。

为了解决这种情况,提供了一个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可以从以下url下载: https : //github.com/WinEunuuchs2Unix/eyesome

该计划刚刚于2018年9月发布,如果您发现任何问题或有改进建议,请告诉我。

文档阶段刚刚开始,所以不要犹豫,提出任何问题。 您的问题甚至可能导致文档改进。