Cambiando el brillo de fondo de la pantalla de forma automática

Una cosa que suele suceder cuando trabajas mucho tiempo ante el ordenador es que la luz ambiente va cambiando. No hay la misma cantidad de luz a medio día que por la noche. Al final uno se descubre cambiando el brillo de la pantalla en función de la hora del día para no dañarse la vista.

¿Esto se puede automatizar? Sí.

Hay programas que juegan con la temperatura del color para no afectar a la calidad del sueño. Yo buscaba otra cosa. Jugar con la iluminación de la pantalla. He buscado y no he encontrado nada que lo hiciera.

Por todo ello he escrito un script que en función de la hora del día va cambiando la iluminación de la pantalla. Para que funcione necesitaréis instalar programa xbacklight:

sudo apt-get install xbacklight

Para saber si os funciona deberéis teclear:

xbacklight -5

Si notáis que el brillo de la pantalla ha bajado, podéis continuar.

El script en cuestión es el siguiente, que deberéis guardar (copiar y pegar) en un fichero llamado brillo.py:

#!/usr/bin/python3

# Para que el script funcione se debe tener instalado xbacklight
# y que la pantalla soporte cambiar el brillo usando xbacklight

brillo = [
    # [hora (0..23), minuto (0..59), brillo (0..100) ]
    # Debe estar en orden de horas
    [0,0,2],
    [1,0,2],
    [2,0,2],
    [3,0,2],
    [4,0,2],
    [5,0,2],
    [6,0,2],
    [7,0,2],
    [8,0,3],
    [9,0,4],
    [10,0,4],
    [11,0,4],
    [12,0,4],
    [13,0,4],
    [14,0,4],
    [15,0,4],
    [16,0,4],
    [17,0,4],
    [18,0,4],
    [19,0,4],
    [20,0,3],
    [21,0,2],
    [22,0,2],
    [23,0,2]
]


import datetime
import time
import os


ultimo_brillo = -1
while True:
    # Se busca el brillo para la hora actual
    t = datetime.datetime.today()
    print('Hora: {0}:{1}'.format(t.hour,t.minute))
    # Se mira si el brillo se ha cambiado de forma manual
    fin = os.popen('xbacklight -get','r')
    brillo_actual = int(0.5 +float(fin.read()))
    fin.close()
    print( 'Brillo de la pantalla: {0}'.format(brillo_actual) )
    if ultimo_brillo < 0:
        ultimo_brillo = brillo_actual
    # Si el brillo se ha cambiado manualmente, se corta la ejecución
    if brillo_actual != ultimo_brillo:
        print('El brillo ha cambiado manualmente. Fin de la gestión automática.')
        break
    siguiente_hora = datetime.time(brillo[0][0],brillo[0][1])
    hora_actual = datetime.time(t.hour, t.minute)
    for l in brillo:
        if t.hour > l[0]:
            ultimo_brillo = l[2]
        elif t.hour == l[0] and t.minute >= l[1]:
            ultimo_brillo = l[2]
        else:
            siguiente_hora = datetime.time(l[0],l[1])
            break
    print('Brillo: {0}'.format(ultimo_brillo))
    os.system('xbacklight -set {0}'.format(ultimo_brillo))
    # Se calcula el tiempo de espera hasta la siguiente hora
    delta = 0
    if siguiente_hora < hora_actual:
        delta = 24*60*60 
    delta = delta + ((siguiente_hora.hour - hora_actual.hour)*60 + (siguiente_hora.minute-hora_actual.minute))*60
    print(delta)
    time.sleep(delta)

¿Cómo funciona? Fácil, tenéis una lista de la forma:

brillo = [
    # [hora (0..23), minuto (0..59), brillo (0..100) ]
    # Debe estar en orden de horas
    [0,0,2],
    [1,0,2],
    [2,0,2],
    [3,0,2],
    [4,0,2],
    ...

Aquí tenéis que indicar el nivel de brillo en función de la hora del día. Por ejemplo:

     [3,0,2],

significa que a las 3:00 horas el brillo será del 2%. En la terna el primer número es la hora (de 0 a 23), el segundo los minutos (de 0 a 59) y el último el brillo (de 0 a 100).

Una vez que hemos puesto los brillos que van bien con nuestro equipo, sólo tenemos que ejecutarlo con:

python3 brillo.py

El script parará de funcionar si cambiamos el brillo de forma manual. Lo he puesto así ya que no es agradable ponerse a ver un vídeo o a jugar y que el brillo se baje en una escena oscura.

Evidentemente si se desea que se ejecute cada vez que iniciamos la sesión, habrá que introducirlo en los “Programas al inicio”.

Si os fijáis, en mi caso he puesto brillos muy bajos, del orden del 2 ó el 4%. Es porque mi portátil tiene la pantalla excesivamente brillante y con un 4% me sobra para ver correctamente.

Espero que lo disfrutéis.

Anuncios
Esta entrada fue publicada en Hardware. Guarda el enlace permanente.

Una respuesta a Cambiando el brillo de fondo de la pantalla de forma automática

  1. Pingback: Cambiando el brillo de fondo de la pantalla de forma automática | PlanetaLibre

Responder

Introduce tus datos o haz clic en un icono para iniciar sesión:

Logo de WordPress.com

Estás comentando usando tu cuenta de WordPress.com. Cerrar sesión / Cambiar )

Imagen de Twitter

Estás comentando usando tu cuenta de Twitter. Cerrar sesión / Cambiar )

Foto de Facebook

Estás comentando usando tu cuenta de Facebook. Cerrar sesión / Cambiar )

Google+ photo

Estás comentando usando tu cuenta de Google+. Cerrar sesión / Cambiar )

Conectando a %s