昼間の初期起動時の背景の明るさを設定します


8

Acer Aspire E5-773GノートブックでUbuntu 16.04を実行しています。残念ながら、ログイン画面では明るさのファンクションキーを使用できません。そのため、画面のバックライトの明るさを変更できるのは、パスワードを正しく入力してログインした後です。

デフォルトでは、Ubuntuは最後のシャットダウン時に設定された輝度レベルで起動しますが、これはあまり有用ではありません。たとえば、夜間に深夜5%程度の輝度レベルでシャットダウンして、翌日再び起動するためです。すべてを快適に見るには、少なくとも50%の輝度レベルが必要です。逆に言えば、日中に80%の明るさでシャットダウンし、夕方に起動すると、ほとんどライトに目がくらんでしまいます...

現在の昼間に応じた輝度レベルで起動するようにUbuntuを構成するにはどうすればよいですか?22:00から06:00まで10%の明るさ、10:00から16:00まで60%の明るさ、その間の30%の明るさのようなものが欲しいです。カーブを簡単に設定できれば、カーブをスムーズにしても問題ありません。あるいは、現地の日没/日の出時間に基づいて設定する方法を見つけた場合、それは大きなボーナスになります。:)

これらのルールに従って明るさを変更するのは、起動時か、オプションでサスペンドからウェイクアップしたときだけです。作業中は自動的に明るさが変化しない場合があります。


14.04から16.04に最初に変換したとき、14.04は常にフルブラストになり、手動で変更する必要があるため、systemdが最後の輝きを設定していることに気づきました。これは眼科医の夢です。複数の構成が保存されている場所に何かを設置し、時刻に基づいて設定できると思います。「現地の日没/日の出時間」を尋ねる以外に、「曇りvs晴れ」を求めることもできます:)
WinEunuuchs2Unix

これは、(ビーチや外)の部屋に光の強度に基づいて、それを行うための参考になる:()[ askubuntu.com/questions/23593/...
WinEunuuchs2Unix

普段は使用しないので、ウェブカメラにテープを貼っています。また、年に数回値を調整できる場合は、固定された構成可能な日中の時間に基づいて初期輝度を設定するだけで十分です。天候に依存しないものは必要ありません。
バイトコマンダー

ええ、私にもマスキングテープがあります。兄貴はもう知っている。
WinEunuuchs2Unix 2016

を使用xbacklightして画面の明るさを設定してみましたか?インストール後はxbacklight -set 10、10%の明るさになります。動作する場合は、cronジョブなどに簡単に追加できます。
Terrance

回答:


4

基本的な考え方:

  1. 設定ファイルを保存/opt/.time_brightness_values

    {
      "5,7": 0.25,
      "8,16": 0.50,
      "17,22": 0.75
    }
    

    引用符で囲まれた値とコンマに注意してください。引用符で囲まれた値を持つ最初の列は24時間形式の時間範囲を表し、2番目の列はパーセントです。たとえば、5時から7時まで起動した場合、明るさは25%に設定されます。8時から16時までブートすると、50%になります。

  2. 以下のスクリプトを名前を付けて保存します /opt/set_timed_brightness.py

    #!/usr/bin/env python3
    from __future__ import print_function
    from collections import OrderedDict
    import json
    import time
    import sys
    import os
    
    def read_config():
        dir = '/opt'
        filename = '.time_brightness_values'
        conf_file = os.path.join(dir,filename)
        brightness = None
        with open(conf_file) as f:
             try:
                  data = json.load(f)
                  data = OrderedDict(sorted(data.items()))
             except Exception as e:
                  print(e)
                  sys.exit(1)
             else:
                  keys = [ key.split(',') for key,value in data.items()]
                  keys.sort()
    
                  hour =  time.localtime().tm_hour
                  for key in keys:
                      if int(key[0]) <= hour and int(key[1]) >= hour:
                         brightness = data[','.join(key)]  
    
        return brightness
    
    def set_percentage(pcent):
        dir = os.listdir('/sys/class/backlight')
        dev = os.path.join('/sys/class/backlight',dir[0])   
    
        max = None
        with open(os.path.join(dev,'max_brightness')) as f:
            max = f.readline().strip()
    
        new = int(float(max)*pcent)
        new = str(new)
        with open(os.path.join(dev,'brightness'),'w') as f:
             f.write(new)
    
    def main():
        percentage = read_config()
        if percentage:
            set_percentage(percentage)
    
    
    if __name__ == '__main__':
        main()
    
  3. ファイルに設定greeter-setup-script=/opt/set_timed_brightness.py/etc/lightdm/lightdm.confます。greeterセットアップスクリプトはrootとして実行され、システムがログイン画面に到達すると、スクリプトが実行され、必要な明るさを設定します。

  4. サスペンドからウェイクアップする限り、以下を作成します/etc/pm/sleep.d/set_timed_brightness.sh

    #!/bin/bash
    
    case "${1}" in
            resume|thaw) python3 /opt/set_timed_brightness.py
        ;;
    esac
    

覚えておいてください。すべての標準ルールが適用されます。スクリプトは、で実行可能にする必要がありますchmod +x。名前と各ファイルへの呼び出しは一貫している必要があります。


1
マイナーな詳細は、おそらくpythonとその影響を知らないが/opt/.time_brightness_values、午後11時から午前4時の設定が欠けているためと思われます。私はバイトの母親が彼にその時寝ることを望んでいるのを知っていますが、彼は就寝時の規則を破っているかもしれません。
WinEunuuchs2Unix

@ WinEunuuchs2Unixそれはほんの一例です。彼はカスタムの時間範囲とパーセンテージ用にファイルを設定できます:)
Sergiy Kolodyazhnyy

1

かっこいい

Eyesomeは、デーモンとして実行され、24時間年中無休で眠っているbashスクリプトです。ハードウェアインターフェイスを介してラップトップディスプレイの画面の明るさ(およびオプションでガンマも)を自動的に調整し、xrandrのソフトウェアコントロールを使用して最大2つの他のモニターを調整します。

日の出(時刻は毎日インターネットから自動的に取得されます)時に、画面の明るさ(およびオプションでガンマも)が徐々に調整されます。段階的な調整はお客様が定義しますが、120分で十分です。調整が目立たないようにするには、調整間のスリープ間隔を設定します。15秒から60秒の間がおそらく最良であり、デフォルトは60秒です。

日の出の遷移が完了した後、目を見張るデーモンは日の出の遷移が始まるまで何時間も眠ります。私は日の出の90分前を使っていますが、好きな期間を設定できます。

日の出の遷移とは逆に、日の入りの遷移は画面の明るさを徐々に低下させ(オプションでガンマも同様)、目立たなくなります。

夜間の移行中にガンマが増加するように定義される場合があることに注意してください。たとえば、目の疲労を軽減するために、レッドガンマは日中は1.0、夜間は1.2と定義できます。次に、青いガンマは、日中は1.0、夜間は.8と定義されるため、代わりに減少します。

資源を削減するために、目を見張るようなものは、日没から日の出までの全期間眠ります。お住まいの地域や季節によって異なりますが、平均睡眠時間は12時間です。

Eyesome Setup-メインメニュー

魅力的な設定を行うために、メインメニューが提供されています。

目立つメインメニュー.png

構成の編集-一般タブ

メインメニューの[ 編集 ]ボタンをクリックすると、以下に示すように、最初に[構成の編集]の[一般]タブが表示されます。

目を見張るような構成の一般的なtab.png

国/都市名が自動的に表示されます。必要に応じて、オーバーライドできます。

構成の編集-モニター1タブ

上の[モニター1]タブをクリックすると、私の構成にこのパネルが表示されます(実際とは異なる場合があります)。

eyesome-edit-configuration-monitor-1.png

これらの設定に大胆に気をつけてはいけません。これらの設定の大部分は、目を見張るものによって自動的に取得されます。ただし、昼間と夜間の明るさ/レベルを設定する必要があります。

構成の編集-モニター3タブ

[モニター3]タブをクリックすると、このパネルが私の構成に表示されます(実際とは異なる場合があります)。

モニター2タブは、適応型輝度とスマートOSを備えた新しいテレビであるため、表示されていません。Eyesomeによるオーバーライドは必要ありません。

ここに画像の説明を入力してください

eyesomeのインストール後に別のモニターをシステムに接続した場合、xrandrモニター名の入力が必要になる場合があります。

目立つセットアップ-5秒のテスト

メインメニューから、[ 昼間 ] ボタンと[ 夜間]ボタンをクリックして、昼間と夜間の明るさとガンマ設定を5秒間テストできます。[構成の編集-全般]タブで、テストの期間を5秒から最大20秒に変更できます。

5秒の夜間テストは次のようになります。

目を見張るような夜間のtest.gif

異常なイベント処理

仕事の前の朝にラップトップを一時停止し、画面が完全に薄暗くなっているとします。仕事が終わった後、太陽が空に向かって帰宅し、ノートパソコンを開きます。画面が暗くて読めない。

このシナリオに対処するために、systemd制御ファイルが提供されています。

  • /etc/systemd/system-sleep/systemd-wake-eyesome 制御ファイルは、システムが一時停止または再開するたびに呼び出されます。
  • 制御ファイルはbashスクリプト/usr/local/bin/wake-eyesome.shを呼び出して明るさをフルにリセットし、日没の移行までスリープします。

あなたは夜に外付けテレビで映画を見ていて、見やすくするためにラップトップの蓋を閉じます。Ubuntu / Lightdm / xrandrは数秒かかり、外部テレビを完全な明るさにリセットします。あなたの目に痛い。

このシナリオに対処するために、acpiイベント制御ファイルが提供されています。

  • /etc/acpi/event/lid-event-eyesome 制御ファイルは、ラップトップの蓋を開いたり閉じたりするたびに呼び出されます。
  • 制御ファイルはbashスクリプト/etc/acpi/acpi-lid-eyesome.shを呼び出して、ふたの開閉を処理します。
  • 次に、厄介なbashスクリプトは/usr/local/bin/wake-eyesome.sh、夜間の視聴のために明るさをリセットするように呼び出し、次に日没の移行までスリープします。

    サスペンド/リッドクローズ/テスト輝度/電源オフ/ホットプラグ

概要

この回答は、質問が投稿されてからほぼ2年後です。2017年2月に削除されたこの回答の初期バージョンがありましたが、私は削除を取り消して修正しました。

Eyesomeは次からダウンロードできます:https : //github.com/WinEunuuchs2Unix/eyesome

このプログラムは2018年9月にリリースされたばかりなので、問題を見つけた場合や改善のための提案がある場合はお知らせください。

ドキュメンテーションフェーズはまだ始まったばかりなので、遠慮なく質問してください。ご質問により、ドキュメントが改善される場合もあります。


日中の時間に基づいて明るさを設定するcronの時間単位のbashスクリプトを後で追加するので、その一部はWIPの回答です。もう1つの部分は、投稿されたリンクで夏時間を確認する方法についての質問に答えることです。そのリンクをSergの回答に統合できます。しかし、それがすべて機能している場合は、新しいQ&Aを投稿する必要がありますか?(セルグはチャットルームで1/2時間前に懸念を持っていました)
WinEunuuchs2Unix 2017
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.