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


8

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

默认情况下,Ubuntu会使用上次关闭时设置的亮度启动,但这不是很有用,例如有时我在深夜关闭时亮度为5%,然后在第二天再次启动需要至少50%的亮度才能舒适地看到一切。反之,如果我白天以80%的亮度关闭并在晚上启动,则几乎被灯光蒙蔽了……

如何配置Ubuntu以根据当前白天的亮度启动?我想要从22:00到06:00的亮度为10%,从10:00到16:00的亮度为60%,介于两者之间的亮度为30%。只要使曲线易于配置,就可以对其进行平滑处理。另外,如果您找到一种根据本地日落/日出时间进行设置的方法,那将是很大的收获。:)

根据这些规则修改亮度仅应在引导过程中或从挂起唤醒时进行(可选)。工作时,它可能不会自动更改亮度。


当我第一次从14.04转换为16.04时,我注意到systemd正在设置最后的亮度,这是眼科医生的梦想,因为14.04始终处于爆炸状态,您必须手动更改它。我想象可以在存储多个配置的地方进行操纵,然后根据一天中的时间进行设置。除了询问“本地日落/日出时间”之外,您还可以询问“多云还是晴天” :)
WinEunuuchs2Unix

()[:这将做它基于在房间光强度(或外的海滩上)是有帮助的askubuntu.com/questions/23593/...
WinEunuuchs2Unix

我的网络摄像头上有磁带,因为我通常不使用它。另外,如果我一年可以几次修改这些值,那么基于固定的可配置白天时间来设置初始亮度就足够了。没有天气相关的东西,这是不必要的。
字节指挥官

是的,我也有胶带纸。哥哥已经知道太多了。
WinEunuuchs2Unix

您是否尝试过xbacklight用于设置屏幕的亮度?安装后,xbacklight -set 10亮度将达到10%。如果可行,可以很容易地将其添加到cronjob或类似的东西中。
Terrance

Answers:


4

基本思路:

  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. greeter-setup-script=/opt/set_timed_brightness.py/etc/lightdm/lightdm.conf文件中设置。迎宾程序设置脚本以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,命名使脚本可执行,并且对每个文件的调用必须保持一致。


1
较小的细节可能是因为我不了解python及其后果,但是/opt/.time_brightness_values缺少晚上11点至凌晨4点的设置。我知道Byte的母亲当时希望他睡觉,但他可能违反了睡前规则。
WinEunuuchs2Unix

@ WinEunuuchs2Unix仅仅是一个例子。他可以为自定义时间范围和百分比配置文件:)
Sergiy Kolodyazhnyy,2016年

1

眼神

Eyesome是一个bash脚本,它作为守护进程运行,并且大部分时间都是24/7休眠。它可以通过硬件接口和最多两台其他显示器使用xrandr的软件控件自动调整笔记本电脑显示屏的屏幕亮度(也可以选择灰度系数)。

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

日出过渡完成后,eyesome守护程序将休眠多个小时,直到日出过渡开始为止。我正在日出前90分钟使用,但是您可以设置自己喜欢的任何时间。

与日出过渡相反,日落过渡会逐渐降低屏幕亮度(以及可选的gamma值),因此不会引起注意。

注意,在夜间过渡期间,可以将伽玛定义为增加。例如,红色伽玛可以定义为白天1.0和夜晚1.2,以减少眼睛疲劳。依次将蓝色伽玛定义为白天1.0和晚上0.8,因此它将降低。

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

令人讨厌的设置-主菜单

要配置eyesome,提供了一个主菜单:

Eyeome main menu.png

编辑配置-常规选项卡

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

eyeome配置常规tab.png

您的国家/城市名称应自动出现。如有必要,您可以覆盖它。

编辑配置-监视器1选项卡

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

eyesome-edit-configuration-monitor-1.png

不必担心这些设置,它们在大多数情况下是Eyeome自动获得的。但是,您将需要设置白天和晚上的亮度/水平。

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

单击“监视器3”选项卡将在我的配置中显示此面板(您可能有所不同):

未显示“显示器2”选项卡,因为它是具有自适应亮度和Smart OS的新电视。Eyesome不需要覆盖。

在此处输入图片说明

如果在安装了Eyeome之后,您将另一台显示器连接到系统,则可能必须输入xrandr显示器名称。

令人眼前一亮的设置-5秒测试

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

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

眼部夜间测试.gif

异常事件处理

假设您是在上班前的早晨并且屏幕处于全暗状态时挂起笔记本电脑。下班后,当天空高高的太阳时,您回家并打开笔记本电脑。屏幕太暗了,您无法阅读。

为了解决这种情况,提供了一个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来处理盖子的打开和关闭。
  • 然后,eyesome bash脚本调用/usr/local/bin/wake-eyesome.sh重新设置亮度以供夜间观看,然后进入睡眠直到日落过渡。

    暂停/关闭/测试亮度/关闭电源/热插拔

摘要

这个问题将在问题发布后的第二天到。该答案的早期版本已于2017年2月删除,我刚刚删除并修改了它。

可以从以下网站下载Eyesome:https//github.com/WinEunuuchs2Unix/eyesome

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

文档编制阶段才刚刚开始,所以请随时提出任何问题。您的问题甚至可能导致文档改进。


其中一部分是WIP答案,因为稍后我将添加cron每小时bash脚本,该脚本会根据白天设置亮度。另一部分是回答有关如何在发布的链接中找到夏令时的问题。您可以将该链接集成到Serg的答案中。但是,也许在一切正常的时候,我的建议是发布新的问答集???(Serg在聊天室1/2小时前曾担心)
WinEunuuchs2Unix
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.