暗闇の中での人間工学

あなたの多くは、朝、日、または夕方に太陽が輝く窓の隣にモニターを持っていますか? たとえ太陽の光が遮られず、画面の表面にまぶしさを作らなくても、少なくとも私にとっては、日没時に少し不快感を与えます。



どうやって?



すべてが非常に簡単です。 夕方にかけて、太陽は下がり、部屋に光が非常に明るく照らされ、職場の周囲の空間がかつてないほど明るくなりました。 しかし、太陽が地平線に近づくと、光線が暗くなり、人工照明をオンにする必要があります。 そしてこの時点で、部屋の照明に差が生じ、暗くなった照明を背景に、22インチのモニターが目を「切り」始めます。



解決策



f.luxRedshiftなど、すでに色温度の段階的な変更が実装された既製のプログラムがありますが、明るさに焦点を合わせることにしました。 そして、私は独自のfglrxドライバーがインストールされたHD3870ビデオカードの所有者であることを誇りに思っているので、画面の明るさを自動的に徐々に変更するための3つの小さなシェルスクリプトを書きました。



どうやって?



繰り返しますが、すべてが非常に簡単です!

「夕方」アルゴリズム

  1. 初期輝度を決定します。
  2. 遷移の期間を決定し、時間をΔ輝度で除算します。
  3. 画面を徐々に暗くします。

    now=$((now-1))

    aticonfig --set-dispattrib=tmds1,brightness:$now




  4. n / m秒待っています。「n」は調光時間、「m」はΔ輝度です。
  5. $ nowが必要な調光に等しくなるまで、3番目と4番目のポイントを繰り返します。


朝のアルゴリズム

  1. 初期輝度を決定します。

    aticonfig --query-dispattrib=tmds1,brightness



  2. 遷移の持続時間で決定されると、Δの明るさがわかります。
  3. Δ輝度≠0の場合は続行します。それ以外の場合は、必要なマークに既に到達しています。
  4. 明るさを追加します。

    now=$((now+1))

    aticonfig --set-dispattrib=tmds1,brightness:$now




  5. n / m秒待っています。「n」は調光時間、「m」はΔ輝度です。
  6. $が初期輝度レベルに等しくなるまで、4番目と5番目のポイントを繰り返します。


起動アルゴリズム



イブニング 」、「 モーニング 」、および「 ブート 」スクリプトは、ルート権限なしで機能します。 別のタイプのディスプレイで推測する必要があるかもしれないので、一番上のコメントを注意深く読んでください!





「埋め戻し」に関する質問



すべてを機能させる方法は? 繰り返しますが、すべてが基本です。

出来上がり! すべてが長い夜のコーディングの準備ができています。 空腹でプログラミングを行うと、新しいバグが発生するため、コーヒーとスナックを作ることが残っています。





だった



画像



画像





日付と場所に応じて夏時間の始まりと終わりを計算するアルゴリズムを書くことは私には残っていますが、これはまったく別の話です。 私以外の誰かがこれらのスクリプトが役立つことを願っています。 健康、特に視力を保護してください。 頑張って






1 「X」の下から実行するには、 export DISPLAY=:0



を指定してください。 Ubuntu 9.10 Karmic Koalaで最適に動作します。

2 Xとドライバーを最初に起動してからスクリプト自体を起動する必要があるため、cronを使用して明るさをゼロにリセットすることはできませんでしたが、誰かが同じ方法で同じ結果を達成できる場合は、ご意見をお聞かせくださいオプション。



All Articles