web-dev-qa-db-fra.com

Comment utiliser "xrandr --gamma" pour un usage similaire à Gnome "Night Light"?

Fond: plus rouge/moins bleu la nuit

Pour sauver les yeux la nuit, l’ajout de plus de rouge et/ou de soustraction de bleu devient populaire dans Windows 1 (filtre bleu) et dans Linux; Gnome Desktop (Veilleuse) et Ubuntu Unity Desktop avec des add-ons tels que Red Shift ou f.Lux .

Je me demande comment accomplir la même chose avec la fonction xrandr <monitor> --gamma 1:1:1 intégrée à la ligne de commande d'Ubuntu. Le 1:1:1 représente un pourcentage de rouge : vert : bleu . Je présume 1 = 100%. Je ne sais pas si les packages ci-dessus ajoutent plus de rouge (1.2:1:1) pour une augmentation de 20% environ ou une réduction de bleu (1:1:0.8) pour une diminution de ~ 20% ou les deux pour un changement de ~ 40%.

Exemple Gnome Night Light ne aide pas

Selon OMG Ubunt , dans Night Light de Gnome, vous pouvez utiliser ces valeurs numériques:

  • 1000 - Valeur la plus basse (super chaud/rouge)
  • 4000 - Par défaut veilleuse de nuit sur la température
  • 5500 - Température de nuit équilibrée
  • 6500 - Par défaut la lumière de nuit éteint la température
  • 10000 - Valeur maximale (super cool/bleu)

Pour tester ces valeurs numériques, comment pourrait-on les traduire pour remplacer le code --gamma 1:1:1 par défaut?

Ce que dit la documentation de xorg

documentation de Xorg ne dit pas grand chose à propos des contrôles --gamma:

−−gamma rouge: vert: bleu

  • Définissez les valeurs en virgule flottante spécifiées comme correction gamma sur la commande crt actuellement associée à cette sortie. Notez que vous ne pouvez pas obtenir deux valeurs différentes pour les sorties clonées (c'est-à-dire qui partagent le même crtc) et que le passage d'une sortie à un autre crtc ne modifie pas du tout les corrections gamma de crtc.

Des points décimaux flottants seront utiles car le script que je souhaite mettre à nivea définit la luminosité de xbacklightune fois par minute sur une période de transition de 90 à 120 minutes à l'aube et au crépuscule. Je souhaite améliorer le script à l'aide du support logiciel xrandr --brightness pour les moniteurs externes et de OLED écrans intégrés et de la prise en charge xrandr --gamma pour les filtres de lumière rouge/bleue. Xorg ne dit pas combien de positions décimales sont prises en charge, mais je pense que je définirai bcname__. Les calculs doivent être effectués à 3 ou 4 positions décimales pour assurer la lisibilité/précision.

Résumé

J'espère imiter ce que "les grands" de Microsoft et de Gnome font avec leurs techniques "plus rouges" et/ou "moins bleues". Je n'ai pas encore exploré Wayland, mais les réponses utilisant ce système seront également appréciées, car ce sera sans aucun doute une préoccupation future.

Quel ajustement de --gamma 1:1:1 convient-il pour la nuit?

5
WinEunuuchs2Unix

Mise à jour du 9 décembre 2018

J'ai trouvé le code source du programme sctqui permet à l'utilisateur de définir la température de couleur. Il a "écrit le code" de redshiftet fournit un mappage pour les valeurs rouge, verte et bleue:

/* cribbed from redshift, but truncated with 500K steps */
static const struct { float r; float g; float b; } whitepoints[] = {
    { 1.00000000,  0.18172716,  0.00000000, }, /* 1000K */
    { 1.00000000,  0.42322816,  0.00000000, },
    { 1.00000000,  0.54360078,  0.08679949, },
    { 1.00000000,  0.64373109,  0.28819679, },
    { 1.00000000,  0.71976951,  0.42860152, },
    { 1.00000000,  0.77987699,  0.54642268, },
    { 1.00000000,  0.82854786,  0.64816570, },
    { 1.00000000,  0.86860704,  0.73688797, },
    { 1.00000000,  0.90198230,  0.81465502, },
    { 1.00000000,  0.93853986,  0.88130458, },
    { 1.00000000,  0.97107439,  0.94305985, },
    { 1.00000000,  1.00000000,  1.00000000, }, /* 6500K */
    { 0.95160805,  0.96983355,  1.00000000, },
    { 0.91194747,  0.94470005,  1.00000000, },
    { 0.87906581,  0.92357340,  1.00000000, },
    { 0.85139976,  0.90559011,  1.00000000, },
    { 0.82782969,  0.89011714,  1.00000000, },
    { 0.80753191,  0.87667891,  1.00000000, },
    { 0.78988728,  0.86491137,  1.00000000, }, /* 10000K */
    { 0.77442176,  0.85453121,  1.00000000, },
};

Les trois colonnes ci-dessus sont des valeurs pour rouge , vert et Bleu .

Mise à jour du 4 novembre 2018

J'ai écrit une collection de scripts bash pour ajuster graduellement la luminosité et le gamma à l'aube et au crépuscule sur une période de 90 à 120 minutes. Le réglage de la luminosité totale est:

xrandr --output DP-1-1 --gamma 1:1:1 --brightness 1.0

Le réglage de nuit est:

xrandr --output DP-1-1 --gamma 1.1:0.8:0.7 --brightness 0.55

Réponse originale

Enfin trouvé une réponse: PLUS DE XRANDR OR EXPOSITION À LA LUMIÈRE BLEUE Ce script est présenté:

#!/bin/sh 

night_mode() { 
  for disp in $(xrandr | sed -n 's/^\([^ ]*\).*\<connected>.*/\1/p'); do 
    xrandr --output $disp --gamma $1 --brightness $2 
  done } 
case $1 in 
  off) night_mode 1:1:1 1.0 ;; 
  *) night_mode 1:1:0.5 0.7 ;;
esac

Le script réduit la composante de lumière bleue et la luminosité de tous les écrans Xorg connectés. Enregistrez-le simplement dans votre répertoire binname__, chmod +x it et, si vous le souhaitez, ajoutez un travail cronou un raccourci clavier pour appeler la fonction.

Comment ça marche? Tapez simplement le nom du script sans aucun paramètre pour réduire la lumière bleue. Pour revenir au réglage normal, ajoutez le paramètre offaprès la commande.

2
WinEunuuchs2Unix