Establecer el brillo inicial del fondo de inicio según el día

8

Ejecuto Ubuntu 16.04 en un portátil Acer Aspire E5-773G. Desafortunadamente, no puedo usar mis teclas de función de brillo en la pantalla de inicio de sesión, por lo que el primer momento en que puedo cambiar el brillo de la luz de fondo de la pantalla es después de ingresar con éxito mi contraseña e iniciar sesión.

De forma predeterminada, Ubuntu arranca con el nivel de brillo que se configuró en el último apagado, pero esto no es muy útil ya que, por ejemplo, a veces cierro tarde en la noche con un nivel de brillo de alrededor del 5% y lo vuelvo a encender al día siguiente. necesitaría un nivel de brillo de al menos 50% para ver cómodamente todo. Al revés, si apago durante el día con quizás un 80% de brillo y arranco por la noche, casi me cegan las luces ...

¿Cómo puedo configurar Ubuntu para arrancar con un nivel de brillo dependiendo del día actual? Me gustaría algo como 10% de brillo de 22:00 a 06:00, 60% de brillo de 10:00 a 16:00 y 30% de brillo en el medio. Alisar la curva está bien, siempre y cuando permanezca fácilmente configurable. Alternativamente, si encuentra una manera de configurarlo en función de las horas locales de puesta de sol / amanecer, eso sería una gran ventaja. :)

La modificación del brillo de acuerdo con estas reglas solo debe tener lugar durante el arranque u opcionalmente al despertar de la suspensión. Es posible que no cambie automáticamente el brillo mientras estoy trabajando.

Byte Commander
fuente
Cuando convertí por primera vez de 14.04 a 16.04, noté que systemd estaba configurando el último brillo, que era el sueño de un oculista porque 14.04 siempre estaba a tope y había que cambiarlo manualmente. Me imagino que algo puede ser manipulado donde se almacenan múltiples configuraciones, y luego establecerse según la hora del día. Además de pedir "horarios locales de puesta de sol / amanecer", también puede pedir "nublado vs soleado" :)
WinEunuuchs2Unix
Esto sería útil para hacerlo en función de la intensidad de la luz en la habitación (o afuera en la playa): () [ askubuntu.com/questions/23593/…
WinEunuuchs2Unix
Tengo cinta en mi cámara web, ya que normalmente no la uso. Además, establecer el brillo inicial en función de las horas diurnas fijas y configurables es totalmente suficiente si puedo adaptar los valores varias veces al año. No hay cosas que dependan del clima, eso es innecesario.
Byte Commander
Sí, también tengo cinta adhesiva mía. El hermano mayor ya sabe demasiado.
WinEunuuchs2Unix
¿Has intentado usar xbacklightpara configurar el brillo de la pantalla? Después de instalarlo, sería como xbacklight -set 10un 10% de brillo. Si funciona, podría agregarse fácilmente a un cronjob o algo así.
Terrance

Respuestas:

4

Idea básica:

  1. Guardar archivo de configuración /opt/.time_brightness_values:

    {
      "5,7": 0.25,
      "8,16": 0.50,
      "17,22": 0.75
    }
    

    Presta atención a los valores y comas citados. La primera columna con valores entre comillas representa el rango de horas en formato de 24 horas, la segunda columna es el porcentaje. Por ejemplo, si arranca de 5 a 7 en punto, su brillo se establecerá en un 25 por ciento. Si arrancas de 8 a 16 en punto, sería el 50 por ciento.

  2. Guarde el script a continuación como /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. Establecer greeter-setup-script=/opt/set_timed_brightness.pyen el /etc/lightdm/lightdm.confarchivo. El script de configuración de Greeter se ejecuta como root y una vez que su sistema llega a la pantalla de inicio de sesión, el script se ejecutará y establecerá el brillo que necesita.

  4. En cuanto al despertar de la suspensión, cree /etc/pm/sleep.d/set_timed_brightness.sh:

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

Recuerde : se aplican todas las reglas estándar, los scripts deben ser ejecutables chmod +x, los nombres y las llamadas a cada archivo deben ser consistentes.

Sergiy Kolodyazhnyy
fuente
1
Un pequeño detalle quizás porque no conozco Python y las ramificaciones pero /opt/.time_brightness_valuesfaltan configuraciones para las 11 p.m. a las 4 a.m. Sé que la madre de Byte quiere que duerma entonces, pero podría estar rompiendo las reglas de la hora de acostarse.
WinEunuuchs2Unix
@ WinEunuuchs2Unix es solo un ejemplo. Puede configurar el archivo para un intervalo de tiempo personalizado y porcentaje :)
Sergiy Kolodyazhnyy
1

molesto

Eyesome es un script de bash que se ejecuta como un demonio y que duerme la mayor parte del tiempo 24/7. Ajusta automáticamente el brillo de la pantalla (y opcionalmente gamma también) para la pantalla de su computadora portátil a través de la interfaz de hardware y hasta otros dos monitores utilizando el control de software de xrandr.

Al amanecer (la hora se obtiene automáticamente de Internet cada día), el brillo de la pantalla (y opcionalmente el gamma también) se ajusta gradualmente. Usted define el ajuste gradual, pero 120 minutos me funcionan. Para mantener los ajustes imperceptibles, establezca un intervalo de suspensión entre los ajustes. Probablemente sea mejor entre 15 y 60 segundos y el valor predeterminado es 60.

Después de que se completa la transición al amanecer, el demonio molesto duerme muchas horas hasta que comienza la transición al amanecer. Estoy usando 90 minutos antes del amanecer, pero puedes configurar el período que desees.

Inversamente a la transición de la salida del sol, la transición de la puesta del sol disminuye gradualmente el brillo de la pantalla (y opcionalmente el gamma también) por lo que es imperceptible.

Tenga en cuenta que durante la transición nocturna, la gamma puede definirse para aumentar. Por ejemplo, la gamma roja se puede definir como 1.0 durante el día y 1.2 durante la noche para reducir la fatiga visual. La gamma azul a su vez puede definirse como 1.0 durante el día y .8 durante la noche, por lo que disminuirá en su lugar.

Para reducir los recursos, es molesto dormir todo el período comprendido entre el atardecer y el amanecer. Dependiendo de dónde viva y la estación del año, el sueño promedio será de 12 horas.

Configuración de Eyesome - Menú principal

Para configurar Eyesome, se proporciona un menú principal:

eyeome main menu.png

Editar configuración: pestaña General

Cuando hace clic en el botón Editar en el menú principal, la pestaña general Editar configuración aparece inicialmente como se muestra a continuación.

configuración general tab tab.png

El nombre de su país / ciudad debería aparecer automáticamente. Si es necesario, puede anularlo.

Editar configuración: pestaña Monitor 1

Al hacer clic en la pestaña Monitor 1 anterior, se mostrará este panel en mi configuración (la suya puede ser diferente):

eyesome-edit-configuration-monitor-1.png

No se deje intimidar por estas configuraciones, ya que en su mayor parte se obtienen automáticamente por eyeome. Sin embargo, deberá establecer el brillo / niveles diurnos y nocturnos.

Editar configuración - Pestaña Monitor 3

Al hacer clic en la pestaña Monitor 3, aparece este panel en mi configuración (la suya puede ser diferente):

La pestaña Monitor 2 no se muestra porque es un televisor nuevo con brillo adaptable y sistema operativo inteligente. No requiere anulaciones por parte de Eyesome.

ingrese la descripción de la imagen aquí

Si después de instalar eyesome conecta un monitor diferente a su sistema, es posible que deba ingresar el xrandrnombre del monitor.

Configuración impresionante: prueba de 5 segundos

Desde el menú principal, puede probar sus ajustes de brillo y gamma durante el día y la noche durante 5 segundos haciendo clic en los botones Día y Noche, respectivamente. Puede cambiar la duración de la prueba de 5 segundos a 20 segundos desde Editar Configuración - Pestaña General.

Así es como se ve la prueba nocturna de 5 segundos:

prueba nocturna encantadora.gif

Manejo de eventos inusuales

Suponga que suspende su computadora portátil cuando es de mañana antes del trabajo y la pantalla está a plena luz. Llegas a casa después del trabajo cuando el sol está alto en el cielo y abres tu computadora portátil. La pantalla está tan oscura que no puedes leerla.

Para abordar este escenario, se proporciona un archivo de control systemd:

  • /etc/systemd/system-sleep/systemd-wake-eyesome Se llama al archivo de control cada vez que el sistema se suspende o reanuda.
  • El archivo de control llama al script bash /usr/local/bin/wake-eyesome.shpara restablecer el brillo al máximo y luego dormir hasta la transición al atardecer.

Está viendo una película en su televisor externo por la noche y cierra la tapa de su computadora portátil para una mejor visualización. Ubuntu / Lightdm / xrandr tarda unos segundos y luego restablece su TV externa a pleno brillo. Ouch a tus ojos.

Para abordar este escenario, se proporciona un archivo de control de eventos acpi:

  • /etc/acpi/event/lid-event-eyesome se llama al archivo de control cada vez que se abre o cierra la tapa del portátil
  • El archivo de control llama al script bash /etc/acpi/acpi-lid-eyesome.shpara manejar la apertura y cierre de la tapa.
  • A su vez, el llamativo script de bash llama /usr/local/bin/wake-eyesome.sha restablecer el brillo para la visualización nocturna y luego duerme hasta la transición al atardecer.

    Suspender / Tapa cerrada / Brillo de prueba / apagado / conexión en caliente

Resumen

Esta respuesta es casi dos años después del día después de que se publicó la pregunta. Hubo una versión anterior de esta respuesta eliminada en febrero de 2017 que acabo de recuperar y revisar.

Eyesome se puede descargar desde: https://github.com/WinEunuuchs2Unix/eyesome

Este programa se lanzó en septiembre de 2018, así que avíseme si encuentra algún problema o tiene sugerencias para mejorar.

La fase de documentación recién comienza, así que no dude en hacer cualquier pregunta. Sus preguntas pueden incluso resultar en mejoras en la documentación.

WinEunuuchs2Unix
fuente
Parte de esto es la respuesta WIP, ya que agregaré un script cron bash más tarde que establece el brillo en función de las horas del día. La otra parte es responder a su pregunta sobre cómo se pueden encontrar las horas de luz en el enlace publicado. Podrías integrar ese enlace en la respuesta de Serg. Pero tal vez cuando todo esté funcionando debería publicar un nuevo Q&A ¿es su sugerencia? (Serg tenía preocupaciones en la sala de chat hace media hora)
WinEunuuchs2Unix