เทคโนโลยีโดย milo อ่าน 7 นาทีเรียบเรียงโดยมี AI ช่วย

จัดการ Dark Mode อัตโนมัติบน Windows 11 ให้สอดคล้องกับแสงในห้องด้วย Light Sensor

เปลี่ยนธีม Windows 11 ให้เข้ากับสภาพแสงในห้องแบบ Real-time ด้วย Light Sensor และสคริปต์ Python ง่ายๆ ที่ช่วยถนอมสายตาคุณได้ตลอดทั้งวัน

สารบัญ

เคยไหมที่ตอนกลางวันทำงานหน้าจอไปสบายๆ พอถึงกลางคืนดับไฟในห้อง หน้าจอที่สว่างจ้ากลายเป็นศัตรูที่ทำร้ายสายตาคุณแบบไม่ไว้ชีพ Windows 11 เองมีฟีเจอร์ Night Light ที่ปรับโทนสีให้อบอุ่นขึ้น แต่มันก็ไม่ได้ช่วยสลับธีมระบบ (Light/Dark Mode) ให้เป็นสีดำเพื่อลดความสว่างโดยรวม

วันนี้เราจะมาแฮ็ก Windows 11 ให้ฉลาดขึ้น ด้วยการใช้ Light Sensor (เซ็นเซอร์วัดแสง) ที่มีอยู่ในเครื่อง ร่วมกับสคริปต์ Python ง่ายๆ เพื่อสลับ Dark Mode อัตโนมัติตามความสว่างของห้องได้เลย

ทำไมเราถึงต้องสลับธีมอัตโนมัติ?

การนั่งจ้องหน้าจอที่สว่างเกินไปในที่แสงน้อย ไม่ได้ทำร้ายแค่สายตา แต่ยังทำให้สมองตื่นตัว นอนไม่หลับในยามค่ำคืน ในขณะที่การใช้ Dark Mode ในตอนกลางวันที่แสงจ้า อาจทำให้อ่านข้อความได้ยากลำบาก

การปรับธีมให้เข้ากับแสงรอบข้างจึงเป็นเรื่องของ Productivity และสุขภาพ แม้ Windows จะมีฟีเจอร์ตั้งเวลาสลับธีมตามเวลาพระอาทิตย์ขึ้น-ตก แต่สภาพอากาศและแสงในห้องไม่ได้ขึ้นอยู่กับเวลาตรงตัวเสมอไป วันที่ฟ้าครึ้มฝนตก ห้องอาจมืดกว่าปกติ ธีมก็ควรปรับตามไปด้วย

สิ่งที่ต้องเตรียมก่อนเริ่ม

ก่อนอื่นเลย เครื่องของคุณต้องมีเซ็นเซอร์วัดแสง (Ambient Light Sensor) ซึ่งมักจะมีในโน้ตบุ๊กเกือบทุกรุ่นในปัจจุบัน ส่วนคอมพิวเตอร์ตั้งโต๊ะอาจจะไม่มีติดมาให้ (ยกเว้นจอบางรุ่น) นอกจากนี้คุณต้องมี:

  • Python ติดตั้งบนเครื่อง (เวอร์ชัน 3.8 ขึ้นไป)
  • ไลบรารี winrt สำหรับเรียกใช้ Windows API

คุณสามารถติดตั้ง winrt ได้ผ่าน pip ด้วยคำสั่ง:

pip install winrt

ทำความเข้าใจ Logic ของสคริปต์

หัวใจสำคัญของการแฮ็กครั้งนี้คือการอ่านค่า Lux (หน่วยวัดความสว่าง) จากเซ็นเซอร์ แล้วนำมาเปรียบเทียบกับค่าที่เราตั้งไว้ หากแสงต่ำกว่าค่าที่กำหนด สคริปต์จะไปแก้ไข Registry ของ Windows เพื่อเปลี่ยนธีมเป็น Dark Mode และถ้าแสงสว่างขึ้น ก็จะเปลี่ยนกลับเป็น Light Mode

ค่า Registry ที่ควบคุมธีมของ Windows คือ AppsUseLightTheme และ SystemUsesLightTheme ที่อยู่ในเส้นทาง HKEY_CURRENT_USER\Software\Microsoft\Windows\CurrentVersion\Themes\Personalize ค่า 1 คือ Light Mode และ 0 คือ Dark Mode

สคริปต์ Python สำหรับสลับธีมอัตโนมัติ

นี่คือโค้ดที่เราจะใช้ คุณสามารถคัดลอกไปวางในไฟล์ชื่อ auto_theme.py ได้เลย

import asyncio
from winrt.windows.devices.sensors import LightSensor
import winreg
import time

# ฟังก์ชันสำหรับเปลี่ยนธีม Windows
def set_theme(dark_mode: bool):
    key_path = r"Software\Microsoft\Windows\CurrentVersion\Themes\Personalize"
    try:
        key = winreg.OpenKey(winreg.HKEY_CURRENT_USER, key_path, 0, winreg.KEY_SET_VALUE)
        value = 0 if dark_mode else 1
        winreg.SetValueEx(key, "AppsUseLightTheme", 0, winreg.REG_DWORD, value)
        winreg.SetValueEx(key, "SystemUsesLightTheme", 0, winreg.REG_DWORD, value)
        winreg.CloseKey(key)
        print(f"[INFO] เปลี่ยนธีมเป็น {'Dark' if dark_mode else 'Light'} Mode เรียบร้อยแล้ว")
    except Exception as e:
        print(f"[ERROR] ไม่สามารถเปลี่ยนธีมได้: {e}")

# ฟังก์ชันสำหรับอ่านค่าแสงและสั่งเปลี่ยนธีม
async def monitor_light():
    sensor = LightSensor.get_default()
    if not sensor:
        print("[ERROR] ไม่พบ Light Sensor บนเครื่องของคุณ")
        return

    print("[INFO] เริ่มติดตามค่าแสง...")
    current_state = None
    
    # กำหนดค่า Lux ที่ใช้สลับธีม (ปรับตามความเหมาะสมของห้อง)
    DARK_THRESHOLD = 50.0  

    while True:
        try:
            reading = sensor.get_reading()
            lux = reading.illuminance_in_lux
            print(f"[DEBUG] ค่าแสงปัจจุบัน: {lux:.2f} lux")
            
            is_dark = lux < DARK_THRESHOLD
            
            # เปลี่ยนธีมเฉพาะเมื่อสถานะเปลี่ยนแปลง เพื่อไม่ให้รบกวนระบบ
            if is_dark != current_state:
                set_theme(is_dark)
                current_state = is_dark
                
        except Exception as e:
            print(f"[ERROR] เกิดข้อผิดพลาดในการอ่านเซ็นเซอร์: {e}")
            
        # ตรวจสอบทุกๆ 10 วินาที
        await asyncio.sleep(10)

if __name__ == "__main__":
    asyncio.run(monitor_light())

คำอธิบายโค้ดเบื้องต้น

  • LightSensor.get_default(): ค้นหาเซ็นเซอร์วัดแสงเริ่มต้นของเครื่อง
  • DARK_THRESHOLD = 50.0: นี่คือค่าความเข้มของแสงที่เราตั้งไว้ หากแสงในห้องต่ำกว่า 50 Lux สคริปต์จะถือว่าห้องมืดและสลับไป Dark Mode คุณสามารถปรับตัวเลขนี้ได้ตามความชอบ
  • winreg: ใช้สำหรับเข้าไปแก้ไขค่าใน Registry ของ Windows เพื่อบังคับเปลี่ยนธีม
  • asyncio.sleep(10): สั่งให้สคริปต์หยุดพัก 10 วินาทีก่อนจะอ่านค่าแสงใหม่อีกครั้ง เพื่อประหยัดทรัพยากรเครื่อง

ทดสอบการทำงาน

เปิด Command Prompt หรือ PowerShell แล้วรันสคริปต์

python auto_theme.py

ลองปิดไฟในห้องดู หรือใช้มือบังเซ็นเซอร์วัดแสง (มักจะอยู่บริเวณใกล้กับกล้องเว็บแคม) รอสัก 10-15 วินาที คุณจะเห็นว่า Windows 11 สลับธีมเป็นสีดำอย่างราบรื่น เมื่อเปิดไฟหรือเปิดม่านบังแสง ธีมก็จะค่อยๆ เปลี่ยนกลับเป็นสีขาวตามค่าแสงที่วัดได้

ทำให้สคริปต์รันเป็น Background Process

เราไม่อยากเปิดหน้าต่าง CMD ทิ้งไว้ตลอดเวลา วิธีที่ดีที่สุดคือใช้ Task Scheduler ของ Windows เพื่อให้สคริปต์รันเงียบๆ ในเบื้องหลังตั้งแต่เปิดเครื่อง

  1. เปิด Task Scheduler แล้วคลิก Create Task...
  2. ตั้งชื่อ Task เป็น AutoDarkMode
  3. ในแท็บ Triggers ให้เลือก Begin the task: At log on
  4. ในแท็บ Actions ให้เลือก Start a program
    • Program/script: pythonw.exe (ใช้ pythonw เพื่อไม่ให้มีหน้าต่างโผล่ขึ้นมา)
    • Add arguments: auto_theme.py
    • Start in: C:\Path\To\Your\Script\ (ใส่พาธที่เก็บไฟล์สคริปต์ของคุณ)
  5. ในแท็บ Conditions ให้ถอนติ๊ก "Start the task only if the computer is on AC power" ออก (หากใช้โน้ตบุ๊กและอยากให้รันตอนใช้แบตเตอรี่ด้วย)
  6. กด OK แล้วใส่รหัสผ่านผู้ดูแลระบบ (ถ้ามี)

ตอนนี้สคริปต์จะทำงานทุกครั้งที่คุณเปิดเครื่อง และคอยปรับธีมให้เข้ากับสภาพแสงอย่างอัตโนมัติ

กรณีศึกษาจากการใช้งานจริง

ผมได้ลองนำสคริปต์นี้มาใช้กับโน้ตบุ๊กที่ทำงานหน้าต่างระเบียง ช่วงบ่ายๆ ที่เมฆบังแดดเป็นระยะ แสงในห้องจะลดลงทันที สคริปต์จะสลับธีมเป็น Dark Mode ชั่วคราว พอเมฆเคลื่อนที่ผ่านไป แสงสว่างกลับมา หน้าจอก็จะเปลี่ยนเป็น Light Mode อีกครั้ง มันทำให้การทำงานลื่นไหลขึ้นมาก เพราะไม่ต้องคอยมานั่งกดเปลี่ยนธีมเอง และสายตาก็ไม่เพลียจากการเปลี่ยนแสงกระทันหัน

สรุป

การปรับแต่ง Windows 11 ให้ฉลาดขึ้นด้วยสคริปต์ไม่กี่บรรทัด ถือเป็นความสุขของการเป็นนักพัฒนา แค่ใช้ประโยชน์จากเซ็นเซอร์ที่มีอยู่แล้วในเครื่อง คุณก็สามารถสร้างฟีเจอร์ Auto Dark Mode ที่ตอบสนองต่อสภาพแวดล้อมจริงๆ ได้

ลองนำสคริปต์นี้ไปรันดูได้เลย หากค่า Lux ไม่ตรงกับสภาพห้องของคุณ อย่าลืมปรับ DARK_THRESHOLD ให้เหมาะสม แล้วอย่าลืมแชร์ประสบการณ์หรือดัดแปลงโค้ดให้เจ๋งกว่าเดิมมาแชร์กันในคอมเมนต์ได้เลยนะ!

เนื้อหาที่จัดทำโดยมี AI ช่วยจะมีป้ายกำกับ "เรียบเรียงโดยมี AI ช่วย" เพื่อให้คุณทราบอย่างชัดเจน เราถือว่าความโปร่งใสเรื่องการใช้ AI เป็นสิ่งสำคัญต่อความไว้วางใจของผู้อ่าน

พบข้อมูลที่ไม่ถูกต้องหรือคลาดเคลื่อน?เข้าสู่ระบบเพื่อทักท้วง
บทความนี้เป็นอย่างไร?

ยังไม่มีความคิดเห็น — มาเป็นคนแรกกันเถอะ!