Imposta la luminosità iniziale dello sfondo all'avvio a seconda del giorno


8

Eseguo Ubuntu 16.04 su un notebook Acer Aspire E5-773G. Sfortunatamente, non posso usare i tasti funzione di luminosità nella schermata di accesso, quindi il primo momento in cui sono in grado di cambiare la luminosità della retroilluminazione dello schermo è dopo aver inserito la password e aver effettuato l'accesso.

Per impostazione predefinita, Ubuntu si avvia con il livello di luminosità impostato all'ultimo arresto, ma questo non è molto utile come ad esempio a volte a tarda notte con un livello di luminosità intorno al 5% e lo riavvio il giorno successivo dove avrebbe bisogno di un livello di luminosità di almeno il 50% per vedere comodamente tutto. Al contrario, se mi spengo durante il giorno con forse l'80% di luminosità e lo avvio la sera, quasi mi accecano dalle luci ...

Come posso configurare Ubuntu per l'avvio con un livello di luminosità a seconda del giorno corrente? Vorrei qualcosa come il 10% di luminosità dalle 22:00 alle 06:00, il 60% di luminosità dalle 10:00 alle 16:00 e il 30% di luminosità in mezzo. La levigatura della curva va bene, purché rimanga facilmente configurabile. In alternativa, se trovi un modo per impostarlo in base agli orari locali di tramonto / alba, sarebbe un grande vantaggio. :)

La modifica della luminosità in base a queste regole dovrebbe avvenire solo durante l'avvio o facoltativamente al risveglio dalla sospensione. Potrebbe non cambiare automaticamente la luminosità mentre sto lavorando.


Quando mi sono convertito per la prima volta dal 14.04 al 16.04 ho notato che systemd stava impostando l'ultima luminosità che era il sogno di un oculista perché il 14.04 andava sempre alla grande e tu dovevi cambiarlo manualmente. Immagino che qualcosa possa essere truccato dove sono memorizzate più configurazioni, e quindi impostato in base all'ora del giorno. Oltre a chiedere "orari locali di alba / tramonto" puoi anche chiedere "nuvoloso vs soleggiato" :)
WinEunuuchs2Unix

Ciò sarebbe utile per farlo in base all'intensità della luce nella stanza (o all'esterno sulla spiaggia): () [ askubuntu.com/questions/23593/…
WinEunuuchs2Unix

Ho del nastro sulla mia webcam perché normalmente non la uso. Inoltre, impostare la luminosità iniziale in base alle ore diurne fisse e configurabili è totalmente sufficiente se posso adattare i valori alcune volte all'anno. Nessuna roba dipendente dal tempo, non è necessario.
Byte Commander

Sì, ho anche del nastro adesivo sul mio. Il grande fratello sa già troppo.
WinEunuuchs2Unix,

Hai provato a usare xbacklightper impostare la luminosità dello schermo? Dopo l'installazione sarà come xbacklight -set 10per il 10% di luminosità. Se funziona, potrebbe essere facilmente aggiunto a un cronjob o qualcosa del genere.
Terrance

Risposte:


4

Idea base:

  1. Salva il file di configurazione /opt/.time_brightness_values:

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

    Prestare attenzione ai valori e alle virgole indicati. La prima colonna con i valori tra virgolette rappresenta l'intervallo di ore nel formato 24 ore, la seconda colonna è percentuale. Ad esempio, se si è avviato dalle 5 alle 7, la luminosità sarebbe impostata sul 25 percento. Se avessi avviato dalle 8 alle 16, sarebbe del 50 percento.

  2. Salva lo script qui sotto come /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. Impostare greeter-setup-script=/opt/set_timed_brightness.pynel /etc/lightdm/lightdm.conffile. Lo script di installazione di greeter viene eseguito come root e una volta che il sistema si porta alla schermata di accesso, lo script verrà eseguito e imposterà la luminosità necessaria.

  4. Per quanto riguarda il risveglio dalla sospensione, creare /etc/pm/sleep.d/set_timed_brightness.sh:

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

Ricorda : si applicano tutte le regole standard, gli script devono essere resi eseguibili chmod +x, la denominazione e le chiamate a ciascun file devono essere coerenti.


1
Un dettaglio minore forse perché non conosco Python e le ramificazioni ma /opt/.time_brightness_valuesmancano le impostazioni dalle 23:00 alle 04:00. So che la madre di Byte vuole che dorma allora, ma potrebbe infrangere le regole per andare a letto.
WinEunuuchs2Unix

@ WinEunuuchs2Unix questo è solo un esempio. Può configurare il file per l'intervallo di tempo personalizzato e la percentuale :)
Sergiy Kolodyazhnyy,

1

eyesome

Eyesome è uno script bash che gira come un demone e dorme per la maggior parte del tempo 24 ore su 24, 7 giorni su 7. Regola automaticamente la luminosità dello schermo (e facoltativamente anche la gamma) per il display del tuo laptop tramite interfaccia hardware e fino a altri due monitor utilizzando il controllo software di xrandr.

All'alba (l'ora viene automaticamente ottenuta da Internet ogni giorno), la luminosità dello schermo (e facoltativamente anche la gamma) viene regolata gradualmente. La regolazione graduale è definita da te ma 120 minuti funzionano per me. Per mantenere le regolazioni impercettibili, impostare un intervallo di sospensione tra le regolazioni. Ovunque tra 15 e 60 secondi è probabilmente il migliore e il valore predefinito è 60.

Una volta completata la transizione dell'alba, il demone ombroso dorme molte ore prima dell'inizio della transizione all'alba. Sto usando 90 minuti prima dell'alba ma puoi impostare qualsiasi periodo tu voglia.

Inversamente alla transizione all'alba, la transizione al tramonto riduce gradualmente la luminosità dello schermo (e facoltativamente anche la gamma), quindi è impercettibile.

Si noti che durante la transizione notturna è possibile definire una gamma per aumentare. Ad esempio, la gamma rossa può essere definita come 1,0 durante il giorno e 1,2 durante la notte per ridurre l'affaticamento degli occhi. A sua volta, la gamma blu può essere definita come 1.0 durante il giorno e .8 durante la notte, quindi diminuirà invece.

Per ridurre le risorse, il sonno dormiente durante tutto il periodo tra il tramonto e l'alba. A seconda di dove vivi e della stagione dell'anno, il sonno medio sarà di 12 ore.

Configurazione impressionante - Menu principale

Per configurare Eyesome, viene fornito un menu principale:

eyesome main menu.png

Modifica configurazione - scheda Generale

Quando fai clic sul pulsante Modifica dal menu principale, la scheda generale di modifica della configurazione appare inizialmente come mostrato di seguito.

configurazione eyesome general tab.png

Il nome del tuo paese / città dovrebbe apparire automaticamente. Se necessario, puoi ignorarlo.

Modifica configurazione - Scheda Monitor 1

Facendo clic sulla scheda Monitor 1 sopra, questo pannello verrà visualizzato nella mia configurazione (il tuo potrebbe essere diverso):

eyesome-edit-configurazione del monitor-1.png

Non essere scoraggiato da queste impostazioni che sono per la maggior parte ottenute automaticamente da Eyesome. Tuttavia, dovrai impostare la luminosità / i livelli diurni e notturni.

Modifica configurazione - Scheda Monitor 3

Facendo clic sulla scheda Monitor 3 viene visualizzato questo pannello nella mia configurazione (il tuo potrebbe essere diverso):

La scheda Monitor 2 non viene visualizzata perché è una nuova TV con luminosità adattiva e sistema operativo intelligente. Non richiede sostituzioni da parte di Eyesome.

inserisci qui la descrizione dell'immagine

Se dopo aver installato Eyesome si collega un monitor diverso al proprio sistema, potrebbe essere necessario inserire il xrandrnome del monitor.

Configurazione straordinaria - Test di 5 secondi

Dal menu principale è possibile testare la luminosità diurna e notturna e le impostazioni gamma per 5 secondi facendo clic rispettivamente sui pulsanti Giorno e Notte . È possibile modificare la durata del test da 5 secondi a 20 secondi dalla scheda Modifica configurazione - Generale.

Ecco come appare il test notturno di 5 secondi:

test notturno noioso.gif

Gestione insolita degli eventi

Supponi di sospendere il tuo laptop quando è mattina prima del lavoro e lo schermo è in penombra. Torni a casa dopo il lavoro quando il sole è alto nel cielo e apri il tuo laptop. Lo schermo è così scuro che non puoi leggerlo.

Per risolvere questo scenario viene fornito un file di controllo systemd:

  • /etc/systemd/system-sleep/systemd-wake-eyesome il file di controllo viene chiamato ogni volta che il sistema sospende o riprende.
  • Il file di controllo chiama lo script bash /usr/local/bin/wake-eyesome.shper ripristinare la luminosità al massimo e quindi dormire fino alla transizione al tramonto.

Stai guardando un film sulla TV esterna di notte e chiudi il coperchio del laptop per una migliore visualizzazione. Ubuntu / Lightdm / xrandr richiede alcuni secondi, quindi ripristina la TV esterna alla massima luminosità. OUCH ai tuoi occhi.

Per risolvere questo scenario viene fornito un file di controllo degli eventi acpi:

  • /etc/acpi/event/lid-event-eyesome il file di controllo viene chiamato ogni volta che il coperchio del laptop viene aperto o chiuso.
  • Il file di controllo chiama lo script bash /etc/acpi/acpi-lid-eyesome.shper gestire l'apertura e la chiusura del coperchio.
  • A sua volta, l'odioso script bash chiama /usr/local/bin/wake-eyesome.shper ripristinare la luminosità per la visione notturna e quindi dorme fino alla transizione del tramonto.

    Sospensione / chiusura coperchio / Test luminosità / spegnimento / hotplug

Sommario

Questa risposta è quasi due anni al giorno successivo alla pubblicazione della domanda. C'è stata una prima versione di questa risposta cancellata nel febbraio 2017 che ho appena cancellato e rivisto.

Eyesome può essere scaricato da: https://github.com/WinEunuuchs2Unix/eyesome

Questo programma è stato appena rilasciato a settembre 2018, quindi per favore fatemi sapere se trovate qualche problema o avete suggerimenti per migliorare.

La fase di documentazione è appena iniziata, quindi non esitate a fare domande. Le tue domande potrebbero anche comportare miglioramenti nella documentazione.


Parte di esso è la risposta WIP, in seguito aggiungerò cronh bash script cronologico che imposta la luminosità in base alle ore diurne. L'altra parte è rispondere alla tua domanda su come si possono trovare le ore diurne nel link pubblicato. Potresti integrare quel link nella risposta di Serg. Ma forse quando tutto funziona dovrei pubblicare un nuovo Q&A è il tuo suggerimento ??? (Serg aveva delle preoccupazioni nella chat room 1/2 ora fa)
WinEunuuchs2Unix
Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.