web-dev-qa-db-fra.com

Définir la luminosité de fond initiale au démarrage en fonction de la journée

Je lance Ubuntu 16.04 sur un ordinateur portable Acer Aspire E5-773G. Malheureusement, je ne peux pas utiliser mes touches de fonction de luminosité sur l'écran de connexion. Le premier moment où je peux modifier la luminosité de mon rétroéclairage est une fois que j'ai entré mon mot de passe et que je me suis connecté.

Par défaut, Ubuntu démarre avec le niveau de luminosité qui a été défini lors du dernier arrêt, mais cela n’est pas très utile, par exemple. Parfois, je ferme tard le soir avec un niveau de luminosité d’environ 5% et le redémarre le lendemain si j’ai besoin d’un niveau de luminosité d’au moins 50% pour tout voir confortablement. Dans l’inverse, si je ferme la journée avec une luminosité d’environ 80% et que je l’amorce le soir, je suis presque aveuglé par les lumières ...

Comment configurer Ubuntu pour qu'il démarre avec un niveau de luminosité dépendant du jour actuel? Je voudrais quelque chose comme 10% de luminosité de 22h00 à 06h00, 60% de luminosité de 10h00 à 16h00 et 30% de luminosité entre les deux. Le lissage de la courbe est acceptable tant qu'il reste facilement configurable. Sinon, si vous trouvez un moyen de le régler en fonction des heures locales de lever/coucher de soleil, ce serait un gros bonus. :)

La modification de la luminosité en fonction de ces règles ne devrait avoir lieu qu'au démarrage ou éventuellement au réveil. Il se peut que la luminosité ne change pas automatiquement lorsque je travaille.

8
Byte Commander

Idée basique:

  1. Enregistrer le fichier de configuration /opt/.time_brightness_values:

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

    Faites attention aux valeurs et aux virgules citées. La première colonne avec les valeurs entre guillemets représente la plage horaire au format 24 heures, la deuxième colonne représente le pourcentage. Par exemple, si vous démarrez de 5 à 7 heures, votre luminosité sera réglée à 25%. Si vous démarriez de 8 à 16 heures, ce serait 50%.

  2. Enregistrez le script ci-dessous sous le nom /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 __== '__main__':
        main()
    
  3. Définissez greeter-setup-script=/opt/set_timed_brightness.py dans le fichier /etc/lightdm/lightdm.conf. Le script de configuration de greeter s’exécute en tant qu’utilisateur root et une fois que votre système est arrivé à l’écran de connexion, il s’exécutera et définira la luminosité dont vous avez besoin.

  4. Pour sortir de la suspension, créez /etc/pm/sleep.d/set_timed_brightness.sh:

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

Souvenez-vous: toutes les règles standard s'appliquent, les scripts doivent être exécutables avec chmod +x, l'attribution de noms et les appels à chaque fichier doivent être cohérents.

4
Sergiy Kolodyazhnyy

ravi

Eyesome est un script bash fonctionnant en tant que démon et dormant la plupart du temps, 24 heures sur 24, 7 jours sur 7. Il ajuste automatiquement la luminosité de l'écran (et éventuellement le gamma également) pour l'affichage de votre ordinateur portable via une interface matérielle et jusqu'à deux autres moniteurs à l'aide du contrôle logiciel de xrandr.

Au lever du soleil (l'heure est automatiquement obtenue chaque jour sur Internet), la luminosité de votre écran (et éventuellement du gamma également) est ajustée progressivement. Le réglage progressif est défini par vous mais 120 minutes me conviennent. Pour que les ajustements restent imperceptibles, définissez un intervalle de sommeil entre les ajustements. Le meilleur choix est probablement entre 15 et 60 secondes et la valeur par défaut est 60.

Une fois la transition au lever du soleil terminée, un démon monumental dort plusieurs heures jusqu'à ce que la transition se lève. J'utilise 90 minutes avant le lever du soleil, mais vous pouvez définir la période de votre choix.

À l'inverse de la transition au lever du soleil, la transition au coucher du soleil diminue progressivement la luminosité de l'écran (et éventuellement le gamma aussi), de sorte qu'elle ne soit pas visible.

Notez que pendant la transition nocturne, le gamma peut être défini pour augmenter. Par exemple, le gamma rouge peut être défini à 1,0 le jour et à 1,2 la nuit pour réduire la fatigue oculaire. Le gamma bleu à son tour peut être défini à 1,0 pendant le jour et à 0,8 pendant la nuit, il diminuera donc à la place.

Pour réduire les ressources, eyeome dort toute la période entre le coucher et le lever du soleil. Selon votre lieu de résidence et la saison, le sommeil moyen sera de 12 heures.

Configuration de Eyesome - Menu principal

Pour configurer ce que vous voulez, un menu principal est fourni:

eyesome main menu.png

Modifier la configuration - onglet Général

Lorsque vous cliquez sur le bouton Éditer du menu principal, l'onglet général Éditer la configuration apparaît initialement comme indiqué ci-dessous. .

eyesome configuration general tab.png

Le nom de votre pays/ville devrait apparaître automatiquement. Si nécessaire, vous pouvez le remplacer.

Modifier la configuration - Onglet Moniteur 1

En cliquant sur l'onglet Moniteur 1 ci-dessus, ce panneau apparaîtra dans ma configuration (la vôtre peut être différente):

eyesome-edit-configuration-monitor-1.png

Ne soyez pas découragé par ces paramètres, ils sont pour la plupart automatiquement obtenus automatiquement. Vous devrez cependant régler la luminosité/les niveaux diurne et nocturne.

Editer la configuration - Onglet Monitor 3

En cliquant sur l'onglet Monitor 3, ce panneau apparaît dans ma configuration (le vôtre peut être différent):

L’onglet Monitor 2 n’est pas affiché car il s’agit d’un nouveau téléviseur avec luminosité adaptative et Smart OS. Il ne nécessite aucun remplacement par Eyesome.

enter image description here

Si, après l'installation de eyesome, vous connectez un autre moniteur à votre système, vous devrez peut-être entrer le nom du moniteur xrandr.

Eyesome Setup - test de 5 secondes

Dans le menu principal, vous pouvez tester vos réglages de luminosité et gamma de jour et de nuit pendant 5 secondes en cliquant sur Daytime et boutons de nuit , respectivement. Vous pouvez modifier la durée du test de 5 secondes à 20 secondes à partir de l'onglet Editer la configuration - Général.

Voici à quoi ressemble le test nocturne de 5 secondes:

eyesome nighttime test.gif

Manipulation d'événements inhabituels

Supposons que vous suspendez votre ordinateur portable le matin avant le travail et que l’écran est à l’éclairage. Vous rentrez chez vous après le travail lorsque le soleil est haut dans le ciel et ouvrez votre ordinateur portable. L'écran est si sombre que vous ne pouvez pas le lire.

Pour résoudre ce scénario, un fichier de contrôle systemd est fourni:

  • Le fichier de contrôle /etc/systemd/system-sleep/systemd-wake-eyesome est appelé chaque fois que le système est suspendu ou repris.
  • Le fichier de contrôle appelle le script bash /usr/local/bin/wake-eyesome.sh pour réinitialiser la luminosité au maximum, puis se mettre en veille jusqu'à la transition au coucher du soleil.

La nuit, vous regardez un film sur votre téléviseur externe et fermez le couvercle de votre ordinateur portable pour un meilleur visionnage. Ubuntu/Lightdm/xrandr prend quelques secondes, puis réinitialise votre téléviseur externe à sa pleine luminosité. OUCH à vos yeux.

Pour résoudre ce scénario, un fichier de contrôle d'événement acpi est fourni:

  • Le fichier de contrôle /etc/acpi/event/lid-event-eyesome est appelé chaque fois que le couvercle de l'ordinateur portable est ouvert ou fermé.
  • Le fichier de contrôle appelle le script bash /etc/acpi/acpi-lid-eyesome.sh pour gérer l'ouverture et la fermeture du couvercle.
  • À son tour, le script bash époustouflant appelle /usr/local/bin/wake-eyesome.sh pour réinitialiser la luminosité afin de l'observer de nuit, puis se met en veille jusqu'à la transition au coucher du soleil.

    Suspendre/Fermer le couvercle/Vérifier la luminosité/Éteindre/Bouchon à chaud

Sommaire

Cette réponse a lieu presque deux ans après le jour où la question a été posée. Une première version de cette réponse avait été supprimée en février 2017 et je venais de la supprimer et de la réviser.

Eyesome peut être téléchargé à partir de: https://github.com/WinEunuuchs2Unix/eyesome

Ce programme vient de sortir en septembre 2018, alors merci de me prévenir si vous rencontrez un problème ou si vous avez des suggestions d'amélioration.

La phase de documentation ne fait que commencer, alors n'hésitez pas à poser des questions. Vos questions peuvent même entraîner des améliorations de la documentation.

1
WinEunuuchs2Unix