どうやって?
すべてが非常に簡単です。 夕方にかけて、太陽は下がり、部屋に光が非常に明るく照らされ、職場の周囲の空間がかつてないほど明るくなりました。 しかし、太陽が地平線に近づくと、光線が暗くなり、人工照明をオンにする必要があります。 そしてこの時点で、部屋の照明に差が生じ、暗くなった照明を背景に、22インチのモニターが目を「切り」始めます。
解決策
f.luxやRedshiftなど、すでに色温度の段階的な変更が実装された既製のプログラムがありますが、明るさに焦点を合わせることにしました。 そして、私は独自のfglrxドライバーがインストールされたHD3870ビデオカードの所有者であることを誇りに思っているので、画面の明るさを自動的に徐々に変更するための3つの小さなシェルスクリプトを書きました。
どうやって?
繰り返しますが、すべてが非常に簡単です!
- 毎日、日没時に、目に見えないように1時間以上かけて徐々に均等に、画面の明るさを私の目に心地よいレベルに下げます。
- 夜明けのたびに、2番目のスクリプトが起動されます。これにより、逆に、コンピューターでの昼間の作業に便利なように画面の明るさが復元されます。
- そして、コンピューターを起動するたびに3番目のスクリプトが実行され、すぐに明るさが標準マークに戻ります。
「夕方」アルゴリズム
- 初期輝度を決定します。
- 遷移の期間を決定し、時間をΔ輝度で除算します。
- 画面を徐々に暗くします。
now=$((now-1))
aticonfig --set-dispattrib=tmds1,brightness:$now
- n / m秒待っています。「n」は調光時間、「m」はΔ輝度です。
- $ nowが必要な調光に等しくなるまで、3番目と4番目のポイントを繰り返します。
朝のアルゴリズム
- 初期輝度を決定します。
aticonfig --query-dispattrib=tmds1,brightness
- 遷移の持続時間で決定されると、Δの明るさがわかります。
- Δ輝度≠0の場合は続行します。それ以外の場合は、必要なマークに既に到達しています。
- 明るさを追加します。
now=$((now+1))
aticonfig --set-dispattrib=tmds1,brightness:$now
- n / m秒待っています。「n」は調光時間、「m」はΔ輝度です。
- $が初期輝度レベルに等しくなるまで、4番目と5番目のポイントを繰り返します。
起動アルゴリズム
- すぐにデフォルトレベルに復元します。
aticonfig --set-dispattrib=tmds1,brightness:0
「 イブニング 」、「 モーニング 」、および「 ブート 」スクリプトは、ルート権限なしで機能します。 別のタイプのディスプレイで推測する必要があるかもしれないので、一番上のコメントを注意深く読んでください!
「埋め戻し」に関する質問
すべてを機能させる方法は? 繰り返しますが、すべてが基本です。
- ターミナルのスケジューラーのタスクのリストを変更します。
~$ crontab -e
- 2行1だけを挿入します。 1つ目は、毎日05:00に明るさを回復するための毎日の打ち上げであり、2つ目は毎日20:00に暗くなります。 スクリプトへのパスを変更することを忘れないでください!
0 5 * * * export DISPLAY=:0 && "/ /brightness_morning.sh"
0 20 * * * export DISPLAY=:0 && "/ /brightness_evening.sh"
- cronを再起動します。
~$ sudo /etc/init.d/cron restart
- Ubuntuの起動時に起動するプログラムのリストを開きます。
System → Preferences → Startup Applications
または端末で。
~$ gnome-session-properties
- 2を実行する行を追加します。
"/ /brightness_reboot.sh"
出来上がり! すべてが長い夜のコーディングの準備ができています。 空腹でプログラミングを行うと、新しいバグが発生するため、コーヒーとスナックを作ることが残っています。
だった
日付と場所に応じて夏時間の始まりと終わりを計算するアルゴリズムを書くことは私には残っていますが、これはまったく別の話です。 私以外の誰かがこれらのスクリプトが役立つことを願っています。 健康、特に視力を保護してください。 頑張って
1 「X」の下から実行するには、
export DISPLAY=:0
を指定してください。 Ubuntu 9.10 Karmic Koalaで最適に動作します。
2 Xとドライバーを最初に起動してからスクリプト自体を起動する必要があるため、cronを使用して明るさをゼロにリセットすることはできませんでしたが、誰かが同じ方法で同じ結果を達成できる場合は、ご意見をお聞かせくださいオプション。