Defina o brilho inicial do segundo plano de fundo, dependendo do dia

6

Eu corro o Ubuntu 16.04 em um notebook Acer Aspire E5-773G. Infelizmente, não consigo usar minhas teclas de função de brilho na tela de login, portanto, o primeiro momento em que consigo alterar o brilho da luz de fundo da tela é depois de inserir minha senha e fazer login com êxito.

Por padrão, o Ubuntu inicializa com o nível de brilho que foi definido no último desligamento, mas isso não é muito útil como, por exemplo, às vezes eu fechava tarde da noite com um nível de brilho em torno de 5% e começava de novo no dia seguinte, onde eu precisaria de um nível de brilho de pelo menos 50% para ver confortavelmente tudo. Por outro lado, se eu desligar durante o dia com talvez 80% de brilho e inicializá-lo à noite, quase fico cego pelas luzes ...

Como posso configurar o Ubuntu para inicializar com um nível de brilho dependendo do dia atual? Eu gostaria de algo como 10% de brilho das 22:00 às 06:00, 60% de brilho das 10:00 às 16:00 e 30% de brilho no meio. Suavizar a curva é bom, desde que permaneça facilmente configurável. Alternativamente, se você encontrar uma maneira de defini-lo com base no pôr do sol / nascer do sol local, isso seria um grande bônus. :)

A modificação do brilho de acordo com essas regras deve ocorrer somente durante a inicialização ou, opcionalmente, ao acordar da suspensão. Pode não alterar automaticamente o brilho enquanto estou trabalhando.

    
por Byte Commander 26.09.2016 / 12:47

1 resposta

3

Idéia básica:

  1. Salvar o arquivo de configuração /opt/.time_brightness_values :

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

    Preste atenção aos valores e vírgulas entre aspas. A primeira coluna com valores citados representa o intervalo de horas no formato de 24 horas, a segunda coluna é porcentagem. Por exemplo, se você inicializasse de 5 a 7 horas, seu brilho seria definido como 25%. Se você inicializasse de 8 a 16 horas, seria 50%.

  2. Salve o script abaixo 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. Defina greeter-setup-script=/opt/set_timed_brightness.py no arquivo /etc/lightdm/lightdm.conf . O script de configuração do greeter é executado como root e, assim que o sistema estiver na tela de login, o script será executado e definirá o brilho de que você precisa.

  4. No que diz respeito a acordar da suspensão, crie /etc/pm/sleep.d/set_timed_brightness.sh :

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

Lembre-se : todas as regras padrão se aplicam, os scripts devem ser executados com chmod +x , os nomes e as chamadas para cada arquivo devem ser consistentes.

    
por Sergiy Kolodyazhnyy 30.09.2016 / 01:14