web-dev-qa-db-ja.com

Gnomeの「Night Light」のような使用法に「xrandr --gamma」を使用する方法は?

背景:夜の赤の増加/青の減少

夜に目を節約するために、赤を追加したり青を削除したりすることは、 Windows 1 (ブルーライトフィルター)とLinuxで一般的になっています。 Gnome Desktop (Night Light)および Red Shift または f.Lux などのアドオンを備えたUbuntu Unity Desktop.

Ubuntuのビルトインコマンドラインxrandr <monitor> --gamma 1:1:1機能を使用して同じことを実現する方法について疑問に思っています。 1:1:1は、redgreenblueの割合を表します。 1 = 100%と仮定します。上記のパッケージが赤(1.2:1:1)を追加して20%増加するのか、青(1:1:0.8)を20%減少して追加するのか、または両方とも40%の変更で追加するのかわかりません。

Gnome Night Lightの例は役に立たない

OMG Ubunt によると、GnomeのNight Light内では次の数値を使用できます。

  • 1000 —最低値(スーパーウォーム/レッド)
  • 4000 —デフォルト夜間照明の温度
  • 5500 —バランスの取れた夜間照明温度
  • 6500 —デフォルト夜間消灯温度
  • 10000 —最高値(スーパークール/ブルー)

これらの数値をテストするには、どのように変換してデフォルトの--gamma 1:1:1をオーバーライドしますか?

Xorgのドキュメントに書かれていること

Xorgのドキュメント--gammaコントロールについてあまり言及していません:

-ガンマ赤:緑:青

  • この出力に現在接続されているcrtcで、指定された浮動小数点値をガンマ補正として設定します。クローン出力(つまり、同じcrtcを共有する)に対して2つの異なる値を取得することはできず、出力を別のcrtcに切り替えてもcrtcガンマ補正はまったく変更されないことに注意してください。

アップグレードしたいスクリプト 夜明けと夕暮れ時の90から120分の移行期間にわたってxbacklightの明るさを毎分ゆっくり設定するため、浮動小数点が役立ちます。外部モニターのxrandr --brightnessソフトウェアサポートと、内蔵ディスプレイとOLEDの両方のサポートと、赤色光/青色光フィルターのxrandr --gammaサポートの両方で、スクリプトを強化したいです。 Xorgはサポートされている小数点以下の桁数を述べていませんが、読みやすさ/精度のバランスのためにbc計算を小数点以下3桁または4桁に設定する必要があると思います。

概要

私は、マイクロソフトとGnomeの「大物」が「より赤く」および/または「より青くない」テクニックでやっていることを真似したいと思っています。ウェイランドについてはまだ詳しく調べていませんが、そのシステムを使用した回答も将来の懸念事項となることは間違いないため、高く評価されます。

--gamma 1:1:1のどの調整が夜間に適切ですか?

5

2018年12月9日更新

ユーザーが色温度を設定できるプログラムsctのソースコードを見つけました。 redshiftから「コードを切り刻み」、赤、緑、青の値のマッピングを提供します。

/* 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, },
};

上記の3つの列は、RedGreen、および

2018年11月4日更新

90分から120分間の夜明けと夕暮れ時に 明るさとガンマを徐々に調整 するbashスクリプトのコレクションを書きました。完全な輝度設定は次のとおりです。

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

夜間の設定は次のとおりです。

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

元の回答

最後に1つの答えが見つかりました: XRANDR OR BLUE LIGHT EXPOSUREの詳細

#!/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

このスクリプトは、接続されているすべてのXorgディスプレイの青色光成分と輝度を減らします。 binディレクトリ、chmod +x itに保存し、必要に応じてcronジョブまたはキーボードショートカットを追加して関数を呼び出します。

使い方?パラメータを指定せずにスクリプト名を入力するだけで、青色光が減少します。通常の設定に戻すには、コマンドの後にoffパラメーターを追加します。

3