Встановіть початкову яскравість фону запуску залежно від денного часу


8

Я запускаю Ubuntu 16.04 на ноутбуці Acer Aspire E5-773G. На жаль, я не можу використовувати свої функціональні клавіші яскравості на екрані входу, тому перший момент, коли я можу змінити яскравість підсвітки екрана, це після успішного введення пароля та входу в систему.

За замовчуванням Ubuntu завантажується з рівнем яскравості, встановленим при останньому відключенні, але це не дуже корисно, оскільки, наприклад, іноді я вимикаюсь пізно вночі з рівнем яскравості близько 5% і запускаю його знову наступного дня, де я знадобиться рівень яскравості принаймні 50%, щоб усе було комфортно бачити. Навпаки, якщо я закриваюсь протягом дня з, можливо, 80% яскравістю і завантажую її ввечері, я майже осліплююсь вогнями ...

Як я можу налаштувати Ubuntu на завантаження з рівнем яскравості залежно від поточного дня? Мені б хотілося щось на зразок 10% яскравості з 22:00 до 06:00, 60% яскравості з 10:00 до 16:00 та 30% яскравості між ними. Згладжування кривої нормально, доки вона легко налаштовується. Крім того, якщо ви знайдете спосіб встановити його на основі локального часу заходу / сходу сонця, це буде великим бонусом. :)

Зміна яскравості згідно з цими правилами має відбуватися лише під час завантаження або необов'язково, коли прокидається після призупинення. Він може не змінювати автоматично яскравість під час роботи.


Коли я вперше перейшов з 14.04 на 16.04, я помітив, що систематик встановлює останню яскравість, яка була мрією лікаря-окуляра, оскільки 14.04 завжди пройшов повний удар, і вам довелося вручну змінити його. Я думаю, що щось можна сфальсифікувати там, де зберігаються декілька конфігурацій, а потім встановити залежно від часу доби. Крім прохання про "місцевий захід / час сходу сонця", ви можете також попросити "хмарно проти сонячного" :)
WinEunuuchs2Unix

Це було б корисно для цього на основі інтенсивності світла в приміщенні (або на пляжі): () [ askubuntu.com/questions/23593/…
WinEunuuchs2Unix

У мене на веб-камері є стрічка, оскільки я її зазвичай не використовую. Крім того, встановлення початкової яскравості на основі фіксованих, настроюваних годин у денний час цілком достатньо, якщо я можу кілька разів на рік адаптувати значення. Жодних матеріалів, що залежать від погоди, це непотрібно.
Байт-командир

Так, у мене теж є маскувальна стрічка. Старший брат уже занадто багато знає.
WinEunuuchs2Unix

Ви спробували xbacklightвстановити яскравість екрана? Після його встановлення це було б схоже xbacklight -set 10на 10% яскравості. Якщо це працює, його можна легко додати до кронштейну чи щось подібне.
Терранс

Відповіді:


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файл. Сценарій налаштування запускається як основний, і як тільки ваша система перейде на екран входу, сценарій запуститься і встановить необхідну вам яскравість.

  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
Незначна деталь, можливо, тому, що я не знаю пітона та наслідків, але /opt/.time_brightness_valuesвідсутні параметри для 11 вечора до 4 ранку. Я знаю, що мати Байте хоче, щоб він тоді спав, але він, можливо, порушує правила сну.
WinEunuuchs2Unix

@ WinEunuuchs2Unix ось лише приклад. Він може налаштувати файл на спеціальний часовий діапазон і відсоток :)
Сергій Колодяжний

1

окуляр

Eyesome - це баш сценарій, який працює як дімон і спить більшу частину часу 24/7. Він автоматично налаштовує яскравість екрана (і, можливо, гамма) для дисплея ноутбука через апаратний інтерфейс та до двох інших моніторів за допомогою програмного управління xrandr.

На сході сонця (час автоматично отримується з Інтернету щодня), яскравість екрана (і, можливо, також гамма) регулюється поступово. Поступова настройка визначена вами, але для мене працює 120 хвилин. Щоб налаштування залишалися непомітними, встановіть інтервал сну між налаштуваннями. Десь між 15 і 60 секундами, мабуть, найкраще, а за замовчуванням - 60.

Після завершення переходу на сході сонця демон в очах спить багато годин, поки не розпочнеться перехід сходу сонця. Я використовую 90 хвилин до сходу сонця, але ви можете встановити будь-який період, який вам подобається.

Навпаки до переходу до сходу сонця, захід заходу поступово зменшує яскравість екрана (і, можливо, гамма), тому він непомітний.

Зауважте, що під час нічного перехідного періоду гамма може бути визначена для збільшення. Наприклад, червону гаму можна визначити як 1,0 вдень та 1,2 вночі для зменшення напруги очей. Блакитна гамма в свою чергу може бути визначена як 1,0 вдень і .8 вночі, тому вона замість цього зменшиться.

Щоб зменшити ресурси, очікуючий спить весь період між заходом і сходом сонця. Залежно від місця проживання та пори року, середній сон складе 12 годин.

Налаштування очей - головне меню

Для налаштування очей передбачено головне меню:

головне меню очима.png

Конфігурація редагування - вкладка Загальні

Після натискання кнопки « Правка » у головному меню вкладка загальної конфігурації редагування спочатку відображається, як показано нижче.

загальна конфігурація

Назва країни / міста має з’являтися автоматично. При необхідності ви можете її перекрити.

Конфігурація редагування - Монітор 1 вкладка

Натиснувши на вкладку Monitor 1 вище, ви побачите цю панель у моїй конфігурації (ваша може бути різною):

eyesome-edit-configuration-monitor-1.png

Не перешкоджайте цим налаштуванням, вони здебільшого автоматично отримуються на очах. Вам потрібно буде встановити денну та нічну яскравість / рівні.

Конфігурація редагування - Монітор 3 Tab

При натисканні на вкладку Monitor 3 відкриває цю панель у моїй конфігурації (ваша може бути різною):

Вкладка Monitor 2 не відображається, оскільки це новий телевізор з адаптивною яскравістю та Smart OS. Він не вимагає відміни Eyesome.

введіть тут опис зображення

Якщо після встановлення окуляра ви приєднаєте інший монітор до вашої системи, можливо, доведеться ввести xrandrім'я монітора.

Налаштування очей - 5 секундний тест

У головному меню ви можете перевірити денну та нічну яскравість і налаштування гами протягом 5 секунд, натиснувши кнопки День і Ніч . Ви можете змінити тривалість тесту від 5 секунд до 20 секунд на вкладці Правка конфігурації - Загальне.

Ось як виглядає 5-секундний нічний тест:

очевидний нічний тест.gif

Незвичайне поводження з подіями

Припустимо, ви призупиняєте ваш ноутбук, коли настає ранок перед роботою, а екран повністю затуманений. Ви приїжджаєте додому після роботи, коли сонце сильно в небі, і відкриєте ноутбук. Екран настільки тьмяний, що ви не можете його прочитати.

Для вирішення цього сценарію надається файл управління системою:

  • /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для обробки відкриття та закриття кришки.
  • У свою чергу, привабливий сценарій башти вимагає /usr/local/bin/wake-eyesome.shскинути яскравість для нічного перегляду, а потім спить до заходу сонця.

    Підвіска / закривання кришки / перевірка яскравості / відключення живлення / гарячої штепсельної вилки

Підсумок

Ця відповідь майже через два роки з дня після опублікування питання. У лютому 2017 року була видалена рання версія цієї відповіді, яку я лише повторив і переглянув.

Очі можна завантажити з: https://github.com/WinEunuuchs2Unix/eyesome

Ця програма була щойно випущена у вересні 2018 року, тому, будь ласка, повідомте мене, якщо ви виявите проблеми або маєте пропозиції щодо вдосконалення.

Фаза документації тільки починається, тому не соромтесь задавати будь-які питання. Ваші запитання можуть навіть призвести до покращення документації.


Частиною цього є відповідь WIP, оскільки я згодом додаватиму щорічний скрипт bash, який встановлює яскравість залежно від світлового дня. Інша частина - відповісти на ваше запитання про те, як можна ознайомитись з денним світлом у розміщеному посиланні. Ви можете інтегрувати це посилання у відповідь Серга. Але можливо, коли це все працює, я повинен опублікувати нове запитання і відповіді - це ваша пропозиція ??? (У Серга були проблеми в чаті 1/2 години тому)
WinEunuuchs2Unix
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.