Debian-facile

Bienvenue sur Debian-Facile, site d'aide pour les nouveaux utilisateurs de Debian.

Vous n'êtes pas identifié(e).

#1 27-09-2017 21:48:07

Batmood
Membre
Distrib. : Debian Stretch
Noyau : Linux 4.9.0-amd64
(G)UI : i3
Inscription : 31-08-2017

[résolu] script: changer automatiquement la luminosité de l'écran

Bonsoir,

Je viens à nouveau vers vous pour demander votre aide. J'ai installé redshift qui change le gamma de l'image projetée à l'écran. Mais je souhaiterais également changer la luminosité de l'écran en fonction de l'heure. Apparemment redshift ne le fait pas. Par contre, j'ai lu qu'il était possible de le faire avec xbacklight. Je n'y connais rien du tout en script. Mais je suppose qu'il faudrait mettre une condition du style:
- s'il est plus de 19h, mettre la luminosité à 100% et la diminuer de moitié.
- s'il est moins de 19h, mettre la luminosité à 100%.

Et lancer le script au démarrage? Ou via crontab? Si on le lance via crontab, je suppose que si on démarre l'ordi après l'heure du lancement du crontab, c'est foutu? (à moins de le lancer le script toute les heures?)

Quelqu'un a-t-il déjà réalisé un script pour le changement de luminosité et qui aurait le bon coeur de le partager? J'ai beau lire des tuto sur bash/shell/boucle/conditions/etc. je n'y comprends rien. Je crois qu'il faut avoir une certaine logique de programmation que je n'ai pas.

Dernière modification par Batmood (01-10-2017 00:27:12)

Hors ligne

#2 29-09-2017 10:40:09

Croutons
Membre
Distrib. : Handylinux 2.5 vers Jessie et Debian Stretch
Noyau : Linux 3.16.0-4-686-pae, Linux 4.9.0-3-686-pae
(G)UI : xfce
Inscription : 16-12-2016

Re : [résolu] script: changer automatiquement la luminosité de l'écran

Bonjour
Redshift gére la luminosité, il est vrai que dans les anciennes version il simulait un gestion de luminosité
Tout est paramétrable le gamma ,la luninosité, la couleur de température, l'utilisation ou non d'un serveur pour la géolocalisation (pour un PC fixe je conseil de mettre la longitude et latitude en manuel)
Il y a des options une fois redshift lancé par clique droite sur son icone, avec possibilité de choisir le lacement auto,l'activation ou suspension pendant un certain temps

Il y a le fichier de configuration de redshift qui a été traduit dans le wiki, tu peux l'utiliser a la place de celui d'origine c'est plus parlant pour faire ses réglages
Pour les réglages il suffit de décommenté les lignes qui t'intéresse en enlevant le point virgule en début de ligne
https://debian-facile.org/doc:environnement:redshift

-->les cahiers du debutant<--      WikiDF-->Découvrir les principales commandes Linux<--
L' expérience, c'est le nom que chacun donne à ses erreurs. Oscar Wilde

Hors ligne

#3 29-09-2017 23:30:29

Batmood
Membre
Distrib. : Debian Stretch
Noyau : Linux 4.9.0-amd64
(G)UI : i3
Inscription : 31-08-2017

Re : [résolu] script: changer automatiquement la luminosité de l'écran

Merci Croutons. Malheureusement, j'utilise déjà les paramètres brightness de redshift mais il s'agit d'un faux brightness:

Redshift has a brightness adjustment setting, but it does not work the way most people might expect. In fact it is a fake brightness adjustment obtained by manipulating the gamma ramps, which means that it does not reduce the backlight of the screen. Preferable only use it if your normal backlight adjustment is too coarse-grained.


http://jonls.dk/redshift/#known-bugs-and-limitations

Le brightness de redshift donne une image avec peu de contraste si on diminue trop la valeur. Je l'avais mise sur 0.4. J'ai même essayé plus bas, c'est pas très joli et les yeux travaillent plus qu'autre chose car pas assez de contraste. Je l'ai remis à 0.5. Mais la luminosité reste trop forte et je suis obligé de jouer avec les touches de mon clavier pour diminuer la luminosité le soir, puis de l'augmenter le lendemain matin. Il ne faut pas un gros effort pour appuyer sur les touches me direz-vous mais j'aimerais tellement automatiser les choses pour ne (quasi) plus m'y soucier. Par contre, redshift pour le changement de couleurs globale, c'est génial!!! (ça fait longtemps que je l'utilise mais j'arrête pas de m'en émerveiller!)

Du coup, c'est pour ça que je cherche à automatiser la luminosité via un script qui utiliserait xbacklight (qui lui joue sur la vraie luminosité) smile J'ai vu que xbacklight avait l'option -get pour obtenir la luminosité, et je me disais qu'il serait donc peut-être possible dans le script de faire une condition du style:
- si il est entre 19h et 7h,
        - quel est la valeur de la luminosité (xbacklight -get)?
        - si elle est à plus de 40%, diminuer la valeur à 40% (xbacklight -set 40%), sinon mettre la luminosité à 100%.
Le script se lancerait toute les heures via crontab.

On peut même utiliser l'option -time pour lui donner une durée de transition il me semble.

Mon problème, c'est que je ne sais pas comment mettre ça en script hmm

Hors ligne

#4 30-09-2017 10:46:19

Croutons
Membre
Distrib. : Handylinux 2.5 vers Jessie et Debian Stretch
Noyau : Linux 3.16.0-4-686-pae, Linux 4.9.0-3-686-pae
(G)UI : xfce
Inscription : 16-12-2016

Re : [résolu] script: changer automatiquement la luminosité de l'écran

Bonjour
J'utilise aussi un autre petit logiciel pour réglé l'écran en manuel, mais il faut suspendre redshift pendant ce temps.
De même avec xbacklight il doit falloir suspendre redshift

Je me suis souvenu de xrandr et en étudiant le man j'ai vu que c'était possible (j'ai un peu galéré pour la syntaxe tongue )
Donc pour commencer

xrandr -q


Screen 0: minimum 320 x 200, current 1280 x 1024, maximum 4096 x 4096
VGA-0 disconnected (normal left inverted right x axis y axis)
DVI-0 connected 1280x1024+0+0 (normal left inverted right x axis y axis) 338mm x 270mm
   1280x1024     60.02 +  75.02*
   1152x864      75.00  
   1024x768      75.03    70.07    60.00  
   832x624       74.55  
   800x600       72.19    75.00    60.32    56.25  
   640x480       75.00    72.81    66.67    59.94  
   720x400       70.08  
 


Comme tu peux le voir ma sortie est DVI-0 , information qui va me servir pour la suite
Avec xrandr tu peux réglé la luminosité et le gamma sur la même commande, toutefois il est précisé que il vaux mieux utilisé xbacklight si le matériel le gére

man xrandr a écrit :

--brightness luminosité
              Multiplier les valeurs de gamma du CRTC attaché en ce moment à la sortie par la valeur à virgule flottante
              indiquée.  Utile pour les sorties trop lumineuses ou trop sombres. Toutefois, ce n'est qu'une modification
              logicielle, si votre matériel gère la modification réelle de luminosité, l'utilisation de  xbacklight  est
              sans doute préférable.



test:

xrandr --output DVI-0 --brightness 0.7 --gamma 1.20:1:1



xrandr --verbose |egrep -i "brightness|gamma"


       

Gamma:      0.83:1.0:1.0
  Brightness: 0.70


Je comprend pas trop le 0.83 vu que j'ai mis la valeur 1.20 mais bon cela fonctionne
redshift doit utiliser xrandr ,pour ce que tu veux il te faudra associé xrandr avec une valeur de gamma et xbacklight dans un script
Après utiliser crontab pour lancer ton script
Edit: J'ai essayé xbacklight mais il ne fonctionne pas chez moi mais je suppose que avec les option -time et -steps on doit pouvoir arriver a quelque chose
Oui comme tu dis si on démarre le PC après l'heure du script c'est foutu

Dernière modification par Croutons (30-09-2017 11:28:14)


-->les cahiers du debutant<--      WikiDF-->Découvrir les principales commandes Linux<--
L' expérience, c'est le nom que chacun donne à ses erreurs. Oscar Wilde

Hors ligne

#5 30-09-2017 16:12:21

Batmood
Membre
Distrib. : Debian Stretch
Noyau : Linux 4.9.0-amd64
(G)UI : i3
Inscription : 31-08-2017

Re : [résolu] script: changer automatiquement la luminosité de l'écran

J'ai testé ce que tu me proposes avec xrandr. C'est bizarre, quand j'ai introduis la commande:

xrandr --output eDP1 --brightness 0.4


il m'a changé la luminosité (je suppose à 40%) puis après 1-2sec environ, il m'a remis à 100%. Il y aurait peut-être une incompatibilité entre cette partie logicielle et la partie matérielle?

Hors ligne

#6 30-09-2017 22:37:38

Batmood
Membre
Distrib. : Debian Stretch
Noyau : Linux 4.9.0-amd64
(G)UI : i3
Inscription : 31-08-2017

Re : [résolu] script: changer automatiquement la luminosité de l'écran

Bon, grâce à l'aide fournie sur l'autre topic, j'ai créé ce script pour régler la luminosité et que je lance au démarrage de la session dans mon fichier autostart. Il fonctionne au démarrage puisque la luminosité change. J'ai voulu maintenant rajouter ce script à mon crontab pour qu'il se lance tous les jours à 19h01, 00h01 et 7h01 mais là par contre, bizarrement, rien ne se passe.

Voici le script:

#!/bin/bash -x
# si l'heure est supérieure ou égal à 19 ET inférieure à 7
if [ `date +%H` -ge 19 ]; then
   xbacklight -set 50% -time 5000 -steps 50
elif [ `date +%H` -lt 7 ]; then
   xbacklight -set 25% -time 5000 -steps 50
     else
   xbacklight -set 100% -time 5000 -steps 50
fi



Dans le crontab, j'ai essayé ces diverses lignes:

01 0,7,19 * * * ~/.config/brightness_day_or_night.sh
* * * * * ~/.config/brightness_day_or_night.sh
* * * * * xbacklight -set 40% -time 5000 -steps 50
* * * * * /usr/bin/xbacklight -set 40% -time 5000 -steps 50



Rien de tout ça fonctionne.
Dans ce même crontab, j'utilise le script pour changer de fond d'écran toutes les minutes qui fonctionne. Pour être sûr, je l'ai désactivé par après pour faire les tests. Je ne comprends pas pourquoi le script fonctionne au démarrage mais ne veut pas fonctionner via crontab. Qu'est-ce qui pourrait bien bloquer? Avez-vous une solution à me proposer, je m'arrache les cheveux. scratchhead.gifsad

Hors ligne

#7 30-09-2017 23:39:05

Batmood
Membre
Distrib. : Debian Stretch
Noyau : Linux 4.9.0-amd64
(G)UI : i3
Inscription : 31-08-2017

Re : [résolu] script: changer automatiquement la luminosité de l'écran

J'ai trouvé pour le problème dans crontab. Il s'agit de préciser la sortie DISPLAY:

# Changement de fond d'écran toutes les heures via script différenciant jour/aube/nuit
* * * * * ~/.config/wall_day_or_night.sh
#
# Changement de la luminosité à 19h01
1 19 * * * DISPLAY=:0 /usr/bin/xbacklight -set 50% -time 5000 -steps 50
#
# Changement de la luminosité à 00h01
1 0 * * * DISPLAY=:0 /usr/bin/xbacklight -set 35% -time 5000 -steps 50
#
# Changement de la luminosité à 07h01
1 7 * * * DISPLAY=:0 /usr/bin/xbacklight -set 100% -time 5000 -steps 50
#

Hors ligne

Pied de page des forums