Atur kecerahan latar belakang startup awal tergantung pada siang hari

8

Saya menjalankan Ubuntu 16.04 pada notebook Acer Aspire E5-773G. Sayangnya, saya tidak dapat menggunakan tombol fungsi kecerahan saya di layar login, jadi saat pertama ketika saya dapat mengubah kecerahan lampu latar layar saya adalah setelah berhasil memasukkan kata sandi dan masuk.

Secara default, Ubuntu melakukan booting dengan tingkat kecerahan yang telah ditetapkan pada shutdown terakhir, tetapi ini tidak terlalu berguna seperti misalnya kadang-kadang saya mematikannya larut malam dengan tingkat kecerahan sekitar 5% dan memulai lagi pada hari berikutnya di mana saya akan membutuhkan tingkat kecerahan setidaknya 50% untuk melihat semuanya dengan nyaman. Sebaliknya, jika saya mematikan di siang hari dengan kecerahan mungkin 80% dan boot di malam hari, saya hampir dibutakan oleh lampu ...

Bagaimana saya bisa mengkonfigurasi Ubuntu untuk boot dengan tingkat kecerahan tergantung pada siang hari saat ini? Saya ingin sesuatu seperti kecerahan 10% dari 22:00 hingga 06:00, 60% kecerahan dari 10:00 hingga 16:00 dan 30% kecerahan di antaranya. Melicinkan kurva tidak apa-apa, asalkan tetap mudah dikonfigurasi. Atau, jika Anda menemukan cara untuk mengaturnya berdasarkan waktu matahari terbenam / matahari terbit lokal, itu akan menjadi bonus besar. :)

Mengubah kecerahan menurut aturan ini hanya boleh terjadi selama boot atau secara opsional saat bangun dari penundaan. Ini mungkin tidak secara otomatis mengubah kecerahan saat saya sedang bekerja.

Komandan Byte
sumber
Ketika saya pertama kali mengkonversi dari 14,04 ke 16,04 saya perhatikan systemd sedang menetapkan kecerahan terakhir yang merupakan impian dokter mata karena 14,04 selalu berjalan dengan penuh dan Anda harus mengubahnya secara manual. Saya membayangkan sesuatu dapat dicurangi di mana banyak konfigurasi disimpan, dan kemudian ditetapkan berdasarkan waktu. Selain menanyakan "waktu matahari terbenam / matahari terbit" setempat, Anda juga dapat meminta "berawan vs cerah" :)
WinEunuuchs2Unix
Ini akan membantu untuk melakukannya berdasarkan intensitas cahaya di dalam ruangan (atau di luar di pantai): () [ askubuntu.com/questions/23593/…
WinEunuuchs2Unix
Saya punya rekaman di webcam saya karena saya biasanya tidak menggunakannya. Selain itu, mengatur kecerahan awal berdasarkan jam kerja tetap yang dapat dikonfigurasi benar-benar memadai jika saya dapat menyesuaikan nilai beberapa kali setahun. Tidak ada hal yang tergantung cuaca, itu tidak perlu.
Byte Commander
Ya, saya juga memiliki selotip. Kakak sudah tahu terlalu banyak.
WinEunuuchs2Unix
Sudahkah Anda mencoba menggunakan xbacklightuntuk mengatur kecerahan layar? Setelah diinstal akan seperti xbacklight -set 10kecerahan 10%. Jika berhasil, bisa dengan mudah ditambahkan ke cronjob atau sesuatu seperti itu.
Terrance

Jawaban:

4

Ide dasar:

  1. Simpan file konfigurasi /opt/.time_brightness_values:

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

    Perhatikan nilai dan koma yang dikutip. Kolom pertama dengan nilai yang dikutip mewakili rentang jam dalam format 24 jam, kolom kedua adalah persentase. Misalnya, jika Anda menjalankan boot dari jam 5 sampai jam 7, kecerahan Anda akan ditetapkan hingga 25 persen. Jika Anda mem-boot dari 8 hingga 16 jam, itu akan menjadi 50 persen.

  2. Simpan skrip di bawah ini sebagai /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. Ditetapkan greeter-setup-script=/opt/set_timed_brightness.pydalam /etc/lightdm/lightdm.conffile. Skrip penyetelan penyapa berjalan sebagai root dan begitu sistem Anda naik ke layar login, skrip akan berjalan dan mengatur kecerahan yang Anda butuhkan.

  4. Sejauh bangun dari penangguhan, buat /etc/pm/sleep.d/set_timed_brightness.sh:

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

Ingat : semua aturan standar berlaku, skrip harus dibuat dapat dieksekusi dengan chmod +x, penamaan, dan panggilan ke setiap file harus konsisten.

Sergiy Kolodyazhnyy
sumber
1
Detail kecil mungkin karena saya tidak tahu python dan konsekuensi tetapi /opt/.time_brightness_valuestidak ada pengaturan untuk 11:00 sampai 4:00. Saya tahu ibu Byte ingin dia tidur saat itu, tetapi dia mungkin melanggar aturan waktu tidur.
WinEunuuchs2Unix
@ WinEunuuchs2Unix itu hanya sebuah contoh. Dia dapat mengkonfigurasi file untuk rentang waktu dan persentase khusus :)
Sergiy Kolodyazhnyy
1

melotot

Eyesome adalah skrip bash yang berjalan sebagai deamon dan tidur sebagian besar waktu 24/7. Secara otomatis menyesuaikan kecerahan layar (dan juga gamma opsional) untuk tampilan laptop Anda melalui antarmuka perangkat keras dan hingga dua monitor lain menggunakan kontrol perangkat lunak xrandr.

Saat matahari terbit (waktu secara otomatis diperoleh dari internet setiap hari), kecerahan layar Anda (dan juga gamma opsional) disesuaikan secara bertahap. Penyesuaian bertahap ditentukan oleh Anda tetapi, 120 menit bekerja untuk saya. Agar penyesuaian tidak terlalu mencolok, atur interval tidur di antara penyesuaian. Di mana saja antara 15 dan 60 detik mungkin yang terbaik dan standarnya adalah 60.

Setelah transisi matahari terbit selesai, daemon penglihatan mata tidur berjam-jam sampai transisi matahari terbit dimulai. Saya menggunakan 90 menit sebelum matahari terbit tetapi Anda dapat mengatur periode apa pun yang Anda suka.

Berbanding terbalik dengan transisi matahari terbit, transisi matahari terbenam secara bertahap mengurangi kecerahan layar (dan juga gamma opsional) sehingga tidak terlalu mencolok.

Perhatikan bahwa selama transisi malam hari, gamma dapat didefinisikan meningkat. Misalnya Red gamma dapat didefinisikan sebagai 1.0 pada siang hari dan 1.2 pada malam hari untuk mengurangi ketegangan mata. Gamma biru pada gilirannya dapat didefinisikan sebagai 1,0 pada siang hari dan 0,8 pada malam hari sehingga akan berkurang.

Untuk mengurangi sumber daya, tidur nyenyak sepanjang periode antara matahari terbenam dan matahari terbit. Tergantung di mana Anda tinggal dan musim tahun ini, rata-rata tidur akan menjadi 12 jam.

Pengaturan Eyesome - Menu Utama

Untuk mengonfigurasi mata-mata, disediakan menu utama:

lihat menu utama .png

Edit Konfigurasi - tab Umum

Ketika Anda mengklik tombol Edit dari menu utama, tab konfigurasi umum konfigurasi awalnya muncul seperti yang ditunjukkan di bawah ini.

konfigurasi umum tab.png

Nama negara / kota Anda akan muncul secara otomatis. Jika perlu Anda bisa menimpanya.

Edit Konfigurasi - Monitor 1 tab

Mengklik tab Monitor 1 di atas akan menampilkan panel ini dalam konfigurasi saya (milik Anda mungkin berbeda):

eyesome-edit-konfigurasi-monitor-1.png

Jangan gentar dengan pengaturan ini karena mereka sebagian besar secara otomatis diperoleh oleh eyesome. Anda perlu mengatur kecerahan / level siang dan malam hari.

Edit Konfigurasi - Monitor 3 Tab

Mengklik Tab Monitor 3 mengungkapkan panel ini dalam konfigurasi saya (milik Anda mungkin berbeda):

Monitor 2 Tab tidak ditampilkan karena ini adalah TV baru dengan kecerahan adaptif dan Smart OS. Tidak perlu ditimpa oleh Eyesome.

masukkan deskripsi gambar di sini

Jika setelah penglihatan mata diinstal, Anda memasang monitor lain ke sistem Anda, Anda mungkin harus memasukkan xrandrnama monitor.

Pengaturan Eyesome - 5 tes detik

Dari menu utama, Anda dapat menguji pengaturan kecerahan dan gamma siang dan malam hari selama 5 detik dengan mengklik masing-masing tombol Siang dan Malam . Anda dapat mengubah durasi tes dari 5 detik hingga 20 detik dari Edit Configuration - General Tab.

Seperti inilah tes Nighttime 5 detik:

lihat malam hari test.gif

Penanganan acara yang tidak biasa

Asumsikan Anda menangguhkan laptop Anda saat pagi hari sebelum bekerja dan layar redup sepenuhnya. Anda pulang setelah bekerja ketika matahari tinggi di langit dan membuka laptop Anda. Layarnya sangat redup sehingga Anda tidak bisa membacanya.

Untuk mengatasi skenario ini, file kontrol systemd disediakan:

  • /etc/systemd/system-sleep/systemd-wake-eyesome file kontrol dipanggil setiap kali sistem menunda atau melanjutkan.
  • File kontrol memanggil skrip bash /usr/local/bin/wake-eyesome.shuntuk mengatur ulang kecerahan menjadi penuh dan kemudian tidur hingga transisi matahari terbenam.

Anda menonton film di TV eksternal pada malam hari dan menutup penutup laptop Anda agar lebih mudah dilihat. Ubuntu / Lightdm / xrandr membutuhkan waktu beberapa detik dan kemudian mengatur ulang TV eksternal Anda menjadi kecerahan penuh. OUCH di matamu.

Untuk mengatasi skenario ini, disediakan file kontrol acpi event:

  • /etc/acpi/event/lid-event-eyesome file kontrol dipanggil setiap kali tutup laptop dibuka atau ditutup.
  • File kontrol memanggil skrip bash /etc/acpi/acpi-lid-eyesome.shuntuk menangani pembukaan dan penutupan tutup.
  • Pada gilirannya panggilan skrip bash mata /usr/local/bin/wake-eyesome.shuntuk mengatur ulang kecerahan untuk melihat nighttive dan kemudian tidur sampai transisi matahari terbenam.

    Tangguhkan / tutup Tutup / Uji kecerahan / matikan / hotplug

Ringkasan

Jawaban ini hampir dua tahun setelah pertanyaan itu diposting. Ada versi awal dari jawaban ini yang dihapus pada Februari 2017 yang baru saja dihapus dan direvisi.

Eyesome dapat diunduh dari: https://github.com/WinEunuuchs2Unix/eyesome

Program ini baru dirilis pada September 2018 jadi tolong beri tahu saya jika Anda menemukan masalah atau memiliki saran untuk perbaikan.

Fase dokumentasi baru saja dimulai jadi jangan ragu untuk bertanya. Pertanyaan Anda bahkan dapat menghasilkan perbaikan dokumentasi.

WinEunuuchs2Unix
sumber
Bagian dari itu adalah jawaban WIP karena saya akan menambahkan skrip bash jam cron nanti yang menetapkan kecerahan berdasarkan siang hari. Bagian lainnya adalah untuk menjawab pertanyaan Anda tentang bagaimana jam siang dapat ditemukan di tautan yang diposting. Anda dapat mengintegrasikan tautan itu ke dalam jawaban Serg. Tapi mungkin ketika semuanya berfungsi, saya harus memposting T&J baru saran Anda ??? (Serg punya masalah di chat room 1/2 jam yang lalu)
WinEunuuchs2Unix