ตั้งค่าความสว่างพื้นหลังเริ่มต้นเริ่มต้นขึ้นอยู่กับเวลากลางวัน


8

ฉันรัน Ubuntu 16.04 บนโน้ตบุ๊ก Acer Aspire E5-773G น่าเสียดายที่ฉันไม่สามารถใช้ปุ่มฟังก์ชั่นความสว่างของฉันบนหน้าจอเข้าสู่ระบบดังนั้นช่วงเวลาแรกที่ฉันสามารถเปลี่ยนความสว่างแบ็คไลท์ของหน้าจอได้หลังจากป้อนรหัสผ่านและการลงชื่อเข้าใช้สำเร็จ

ตามค่าเริ่มต้นรองเท้าบูท Ubuntu ที่มีระดับความสว่างที่ตั้งไว้เมื่อปิดเครื่องครั้งสุดท้าย แต่มันก็ไม่ได้มีประโยชน์อะไรมากเช่นบางครั้งฉันปิดเครื่องตอนดึกพร้อมระดับความสว่างประมาณ 5% และเริ่มใหม่อีกครั้งในวันถัดไป จะต้องมีระดับความสว่างอย่างน้อย 50% เพื่อดูทุกสิ่งอย่างสะดวกสบาย ในทางกลับกันถ้าฉันปิดเครื่องในระหว่างวันด้วยความสว่าง 80% และบู๊ตมันในตอนเย็นฉันเกือบจะตาบอดด้วยแสงไฟ ...

ฉันจะกำหนดให้ Ubuntu ให้บู๊ตด้วยระดับความสว่างได้อย่างไรโดยขึ้นอยู่กับเวลาปัจจุบัน ฉันต้องการความสว่าง 10% จาก 22:00 ถึง 06:00, 60% สว่างจาก 10:00 ถึง 16:00 และ 30% สว่างในระหว่าง การทำให้เส้นโค้งเรียบขึ้นไม่เป็นไรตราบใดที่ยังคงกำหนดค่าได้ง่าย หรือหากคุณหาวิธีตั้งค่าตามเวลาพระอาทิตย์ตก / พระอาทิตย์ขึ้นของท้องถิ่นนั่นจะเป็นโบนัสก้อนโต :)

การปรับความสว่างตามกฎเหล่านี้ควรเกิดขึ้นในระหว่างการบู๊ตหรือเป็นทางเลือกเมื่อตื่นขึ้นจากการหยุดชั่วคราว มันอาจไม่เปลี่ยนความสว่างโดยอัตโนมัติในขณะที่ฉันกำลังทำงาน


เมื่อฉันแปลงครั้งแรกจาก 14.04 เป็น 16.04 ฉันสังเกตว่า systemd กำลังตั้งค่า brighness สุดท้ายซึ่งเป็นความฝันของแพทย์ตาเพราะ 14.04 มักจะระเบิดเต็มที่และคุณต้องเปลี่ยนมันด้วยตนเอง ฉันคิดว่ามีบางสิ่งที่สามารถควบคุมได้ซึ่งมีการจัดเก็บการกำหนดค่าหลายอย่างจากนั้นตั้งค่าตามเวลาของวัน นอกเหนือจากการขอ "เวลาพระอาทิตย์ตก / พระอาทิตย์ขึ้นในท้องถิ่น" คุณยังสามารถขอ "เมฆครึ้มกับแสงอาทิตย์" :)
WinEunuuchs2Unix

สิ่งนี้จะเป็นประโยชน์สำหรับการทำตามความเข้มของแสงในห้อง (หรือนอกชายหาด): () [ askubuntu.com/questions/23593/…
WinEunuuchs2Unix

ฉันมีเทปบนเว็บแคมของฉันตามปกติฉันไม่ได้ใช้ นอกจากนี้การตั้งค่าความสว่างเริ่มต้นตามชั่วโมงในเวลากลางวันคงที่และกำหนดค่าได้ก็เพียงพอแล้วหากฉันสามารถปรับค่าได้สองสามครั้งต่อปี ไม่มีสภาพอากาศแปรปรวน
ผู้บัญชาการ Byte

ใช่ฉันมีเทปกาวในตัวฉันเช่นกัน พี่ใหญ่รู้มากเกินไปแล้ว
WinEunuuchs2Unix

คุณลองใช้xbacklightเพื่อตั้งค่าความสว่างของหน้าจอหรือไม่? หลังจากติดตั้งแล้วจะมีxbacklight -set 10ความสว่าง 10% ถ้ามันใช้งานได้มันสามารถเพิ่ม cronjob ได้อย่างง่ายดายหรืออะไรทำนองนั้น
Terrance

คำตอบ:


4

แนวคิดพื้นฐาน:

  1. บันทึกไฟล์กำหนดค่า/opt/.time_brightness_values:

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

    ใส่ใจกับค่าที่ยกมาและเครื่องหมายจุลภาค คอลัมน์แรกที่มีค่าที่ยกมาหมายถึงช่วงเวลาในรูปแบบ 24 ชั่วโมงคอลัมน์ที่สองคือเปอร์เซ็นต์ ตัวอย่างเช่นหากคุณบูตจาก 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 และ ramifications แต่/opt/.time_brightness_valuesไม่มีการตั้งค่าในเวลา 23.00 น. ถึง 04.00 น. ฉันรู้ว่าแม่ของ Byte ต้องการให้เขาหลับ แต่เขาอาจทำผิดกฎเกี่ยวกับเวลานอน
WinEunuuchs2Unix

@ WinEunuuchs2Unix นั่นเป็นเพียงตัวอย่าง เขาสามารถกำหนดค่าแฟ้มสำหรับช่วงเวลาที่กำหนดเองและร้อยละ :)
Sergiy Kolodyazhnyy

1

eyesome

Eyesome เป็นสคริปต์ทุบตีที่ทำงานเป็นคนเลวทรามและนอนหลับตลอดเวลา 24/7 มันจะปรับความสว่างของหน้าจอโดยอัตโนมัติ (และเป็นทางเลือกแกมม่าเช่นกัน) สำหรับจอแสดงผลแล็ปท็อปของคุณผ่านทางอินเตอร์เฟสฮาร์ดแวร์และอีกสองจอภาพโดยใช้การควบคุมซอฟต์แวร์ของ xrandr

เมื่อพระอาทิตย์ขึ้น (เวลาที่ได้รับโดยอัตโนมัติจากอินเทอร์เน็ตในแต่ละวัน) ความสว่างหน้าจอของคุณ (และแกมม่าตัวเลือกเกินไป) จะถูกปรับค่อยๆ การปรับแบบค่อยเป็นค่อยไปนั้นถูกกำหนดโดยคุณ แต่ 120 นาทีเหมาะกับฉัน เพื่อให้การปรับไม่สามารถสังเกตได้ให้ตั้งช่วงเวลาสลีประหว่างการปรับค่าต่างๆ ทุกที่ระหว่าง 15 ถึง 60 วินาทีน่าจะดีที่สุดและค่าเริ่มต้นคือ 60

หลังจากการเปลี่ยนภาพพระอาทิตย์ขึ้นเสร็จสมบูรณ์ daemon ที่หลับตาจะหลับเป็นเวลาหลายชั่วโมงจนกระทั่งพระอาทิตย์เริ่มขึ้น ฉันใช้เวลา 90 นาทีก่อนพระอาทิตย์ขึ้น แต่คุณสามารถกำหนดช่วงเวลาที่ต้องการได้

การเปลี่ยนพระอาทิตย์ตกการเปลี่ยนพระอาทิตย์ตกจะค่อยๆลดความสว่างของหน้าจอ

โปรดทราบว่าในช่วงการเปลี่ยนภาพแกมม่าตอนกลางคืนอาจถูกกำหนดให้เพิ่มขึ้น ตัวอย่างเช่น Red gamma อาจถูกกำหนดเป็น 1.0 ในระหว่างวันและ 1.2 ในช่วงกลางคืนเพื่อลดอาการปวดตา แกมมาสีฟ้าอาจถูกกำหนดให้เป็น 1.0 ในระหว่างวันและ 0.8 ในช่วงกลางคืนดังนั้นมันจะลดลงแทน

เพื่อลดทรัพยากรให้มีการหลับสนิทตลอดช่วงเวลาระหว่างพระอาทิตย์ตกและพระอาทิตย์ขึ้น ขึ้นอยู่กับว่าคุณอาศัยอยู่ที่ไหนและฤดูใดของปีการนอนเฉลี่ยจะอยู่ที่ 12 ชั่วโมง

Eyesome Setup - เมนูหลัก

เพื่อกำหนดค่า Eyesome มีเมนูหลัก:

เมนูหลัก eyesome.png

แก้ไขการกำหนดค่า - แท็บทั่วไป

เมื่อคุณคลิกปุ่มแก้ไขจากเมนูหลักแท็บทั่วไปของการกำหนดค่าการแก้ไขจะปรากฏขึ้นตามที่แสดงด้านล่าง

แท็บทั่วไปของ Eyesome configuration

ชื่อประเทศ / เมืองของคุณควรปรากฏโดยอัตโนมัติ หากจำเป็นคุณสามารถแทนที่ได้

แก้ไขการกำหนดค่า - แท็บจอภาพ 1

การคลิกที่แท็บ Monitor 1 ด้านบนจะเป็นการเปิดเผยพาเนลนี้ในการกำหนดค่าของฉัน (ของคุณอาจแตกต่างกัน):

eyesome แก้ไขการกำหนดค่าจอภาพ-1.png

อย่าหวาดกลัวต่อการตั้งค่าเหล่านี้เพราะส่วนใหญ่จะได้รับโดยอัตโนมัติจากตา คุณจะต้องตั้งค่าความสว่าง / ระดับกลางวันและกลางคืน

แก้ไขการกำหนดค่า - แท็บจอภาพ 3

การคลิกที่แท็บจอภาพ 3 จะแสดงแผงนี้ในการกำหนดค่าของฉัน (ของคุณอาจแตกต่างกัน):

แท็บ Monitor 2 ไม่แสดงขึ้นมาเนื่องจากเป็นทีวีใหม่ที่มีความสว่างที่ปรับได้และ Smart OS มันไม่จำเป็นต้องมีการแทนที่โดย Eyesome

ป้อนคำอธิบายรูปภาพที่นี่

หากหลังจากติดตั้ง Eyesome คุณติดตั้งจอภาพอื่นเข้ากับระบบของคุณคุณอาจต้องป้อนxrandrชื่อจอภาพ

Eyesome Setup - การทดสอบ 5 วินาที

จากเมนูหลักคุณสามารถทดสอบการตั้งค่าความสว่างและแกมม่าในเวลากลางวันและกลางคืนเป็นเวลา 5 วินาทีโดยคลิกที่ปุ่มกลางวันและกลางคืนตามลำดับ คุณสามารถเปลี่ยนระยะเวลาของการทดสอบจาก 5 วินาทีเป็น 20 วินาทีจาก Edit Configuration - General Tab

นี่คือลักษณะการทดสอบในเวลากลางคืน 5 วินาที:

ทดสอบตอนกลางคืน

การจัดการเหตุการณ์ที่ผิดปกติ

สมมติว่าคุณระงับแล็ปท็อปของคุณเมื่อเช้าก่อนทำงานและหน้าจอสลัวเต็ม คุณกลับมาถึงบ้านหลังเลิกงานเมื่อพระอาทิตย์ขึ้นบนท้องฟ้าและเปิดแล็ปท็อปของคุณ หน้าจอมืดเกินไปคุณอ่านไม่ออก

ในการจัดการกับสถานการณ์นี้ไฟล์ควบคุม systemd มีให้:

  • /etc/systemd/system-sleep/systemd-wake-eyesome ไฟล์ควบคุมจะถูกเรียกเมื่อใดก็ตามที่ระบบหยุดทำงานชั่วคราวหรือทำงานต่อ
  • ไฟล์ควบคุมเรียกสคริปต์ทุบตี/usr/local/bin/wake-eyesome.shเพื่อรีเซ็ตความสว่างให้เต็มจากนั้นเข้าสู่โหมดสลีปจนกระทั่งพระอาทิตย์ตกดิน

คุณกำลังดูภาพยนตร์บนทีวีภายนอกในเวลากลางคืนและปิดฝาแล็ปท็อปของคุณเพื่อการรับชมที่ดีขึ้น Ubuntu / Lightdm / xrandr ใช้เวลาสองสามวินาทีจากนั้นรีเซ็ตทีวีภายนอกของคุณให้เต็มความสว่างเต็มที่ สัมผัสกับดวงตาของคุณ

ในการจัดการกับสถานการณ์นี้จะมีการจัดเตรียมไฟล์ควบคุมเหตุการณ์ acpi:

  • /etc/acpi/event/lid-event-eyesome ไฟล์ควบคุมเรียกว่าเมื่อใดก็ตามที่เปิดหรือปิดฝาแล็ปท็อป
  • ไฟล์ควบคุมเรียกสคริปต์ทุบตี/etc/acpi/acpi-lid-eyesome.shเพื่อจัดการการเปิดและปิดฝา
  • ในทางกลับกันการเรียกสคริปต์ทุบตีที่น่ากลัว/usr/local/bin/wake-eyesome.shเพื่อรีเซ็ตความสว่างสำหรับการดูในเวลากลางคืนและเข้าสู่โหมดสลีปจนกระทั่งพระอาทิตย์ตกดิน

    ระงับ / ปิดฝาปิด / ทดสอบความสว่าง / ปิดไฟ / ปลั๊กไฟ

สรุป

คำตอบนี้เกือบสองปีหลังจากวันที่โพสต์คำถาม มีเวอร์ชันแรกของคำตอบนี้ถูกลบในเดือนกุมภาพันธ์ 2560 ซึ่งฉันเพิ่งยกเลิกการลบและแก้ไข

สามารถดาวน์โหลด Eyesome ได้จาก: https://github.com/WinEunuuchs2Unix/eyesome

โปรแกรมนี้เพิ่งเปิดตัวในเดือนกันยายน 2018 ดังนั้นโปรดแจ้งให้เราทราบหากคุณพบปัญหาหรือมีคำแนะนำในการปรับปรุง

ขั้นตอนเอกสารเริ่มต้นเพียงอย่าลังเลที่จะถามคำถามใด ๆ คำถามของคุณอาจส่งผลให้เกิดการปรับปรุงเอกสาร


ส่วนหนึ่งของมันคือคำตอบ WIP เนื่องจากฉันจะเพิ่มสคริปต์ทุบตีรายชั่วโมง cron ในภายหลังซึ่งตั้งค่าความสว่างตามเวลากลางวัน อีกส่วนหนึ่งคือการตอบคำถามของคุณว่าจะหาเวลากลางวันได้อย่างไรในลิงค์ที่โพสต์ คุณสามารถรวมลิงค์นั้นเข้ากับคำตอบของ Serg แต่บางทีเมื่อมันใช้งานได้ทั้งหมดฉันควรโพสต์คำถามและคำตอบใหม่คือคำแนะนำของคุณ ??? (Serg มีข้อกังวลใจในห้องสนทนา 1/2 ชั่วโมงที่ผ่านมา)
WinEunuuchs2Unix
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.