Установить начальную яркость фона при запуске в зависимости от дневного времени
Я запускаю Ubuntu 16.04 на ноутбуке Acer Aspire E5-773G. К сожалению, я не могу использовать свои функциональные клавиши яркости на экране входа в систему, поэтому первый момент, когда я могу изменить яркость подсветки экрана, - это после успешного ввода пароля и входа в систему.
По умолчанию Ubuntu загружается с уровнем яркости, который был установлен при последнем выключении, но это не очень полезно, например, иногда я закрываюсь поздно ночью с уровнем яркости около 5% и запускаю его снова на следующий день, когда я Для комфортного просмотра всего необходим уровень яркости не менее 50%. С другой стороны, если я выключаюсь в течение дня с яркостью 80% и загружаю его вечером, меня почти ослепит свет...
Как я могу настроить Ubuntu для загрузки с уровнем яркости в зависимости от текущего дня? Я бы хотел что-то вроде 10% яркости с 22:00 до 06:00, 60% яркости с 10:00 до 16:00 и 30% яркости между ними. Сглаживание кривой - это нормально, пока она легко настраивается. Кроме того, если вы найдете способ установить его на основе местного времени заката / восхода солнца, это будет большим бонусом.:)
Изменение яркости в соответствии с этими правилами должно происходить только во время загрузки или при желании при пробуждении из режима ожидания. Может не автоматически менять яркость, пока я работаю.
2 ответа
Основная идея:
Сохранить файл конфигурации
/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
файл. Сценарий установки greeter запускается от имени пользователя 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
, имена и вызовы к каждому файлу должны быть согласованными.
eyesome
Eyesome - это bash-скрипт, работающий как демон и спящий большую часть времени 24/7. Он автоматически регулирует яркость экрана (и, возможно, гамму) для дисплея вашего ноутбука через аппаратный интерфейс и до двух других мониторов с помощью программного управления xrandr.
На рассвете (время автоматически получается из Интернета каждый день), яркость экрана (и, возможно, гамма тоже) регулируется постепенно. Постепенная настройка определяется вами, но у меня работает 120 минут. Чтобы настройки были незаметными, установите интервал ожидания между настройками. Где-нибудь между 15 и 60 секундами, вероятно, лучше, и по умолчанию 60.
После завершения восхода солнца дьявольский демон спит много часов до начала восхода. Я использую 90 минут до восхода солнца, но вы можете установить любой период, который вам нравится.
В противоположность переходу на восход солнца переход на закате постепенно уменьшает яркость экрана (и, возможно, гамму), поэтому он незаметен.
Обратите внимание, что в ночное время можно увеличить гамма-переход. Например, красная гамма может быть определена как 1,0 в течение дня и 1,2 в течение ночи, чтобы уменьшить нагрузку на глаза. Синяя гамма в свою очередь может быть определена как 1,0 в течение дня и 0,8 в ночное время, поэтому она будет уменьшаться.
Чтобы уменьшить ресурсы, глаза спят весь период между закатом и восходом солнца. В зависимости от того, где вы живете и время года, средний сон будет 12 часов.
Eyesome Setup - Главное меню
Для настройки eyesome предусмотрено главное меню:
Изменить конфигурацию - вкладка "Общие"
При нажатии кнопки " Редактировать" в главном меню изначально отображается вкладка "Общая конфигурация редактирования", как показано ниже.
Название вашей страны / города должно появиться автоматически. При необходимости вы можете отменить это.
Редактировать конфигурацию - вкладка "Монитор 1"
Нажав на вкладку "Монитор 1" выше, вы увидите эту панель в моей конфигурации (ваша может отличаться):
Не пугайтесь этих настроек, по большей части они автоматически получаются с помощью eyesome. Вам нужно будет установить дневную и ночную яркость / уровни.
Редактировать конфигурацию - вкладка "Монитор 3"
При нажатии на вкладку "Монитор 3" открывается эта панель в моей конфигурации (ваша может отличаться):
Вкладка Monitor 2 не отображается, потому что это новый телевизор с адаптивной яркостью и Smart OS. Это не требует переопределения Eyesome.
Если после установки eyesome вы подключите другой монитор к вашей системе, вам может потребоваться ввести xrandr
имя монитора.
Установка для глаз - 5 секундный тест
В главном меню вы можете проверить свои дневные и ночные настройки яркости и гаммы в течение 5 секунд, нажимая кнопки " Дневное" и " Ночное время" соответственно. Вы можете изменить продолжительность теста с 5 до 20 секунд на вкладке "Редактировать конфигурацию - Общие".
Вот как выглядит 5-секундный ночной тест:
Необычная обработка событий
Предположим, вы отключили свой ноутбук, когда утро перед работой, и экран становится полностью тусклым. Вы приходите домой после работы, когда солнце высоко в небе, и открываете свой ноутбук. Экран настолько тусклый, что вы не можете его прочитать.
Для решения этого сценария предоставляется контрольный файл 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
сбросить яркость для ночного просмотра, а затем спать до перехода на закат.Приостановить / закрыть крышку / проверить яркость / выключить /hotplug
Резюме
Этот ответ почти два года спустя после того, как вопрос был отправлен. В феврале 2017 года была удалена ранняя версия этого ответа, которую я только что восстановил и исправил.
Eyesome можно скачать с: https://github.com/WinEunuuchs2Unix/eyesome
Эта программа была выпущена в сентябре 2018 года, поэтому, пожалуйста, дайте мне знать, если вы обнаружите какие-либо проблемы или у вас есть предложения по улучшению.
Этап документации только начинается, поэтому не стесняйтесь задавать любые вопросы. Ваши вопросы могут даже привести к улучшению документации.