自动设置护眼模式的脚本

wen 实用脚本 3

本文目录导读:

自动设置护眼模式的脚本

  1. Windows版本(PowerShell脚本)
  2. Windows版本(Python脚本)
  3. macOS版本(AppleScript)
  4. 使用说明
  5. 优化建议

我来帮你创建一个自动设置护眼模式的脚本,这里提供Windows和macOS两个版本:

Windows版本(PowerShell脚本)

# 自动护眼模式切换脚本
# 支持Windows 10/11
# 设置默认时间(可修改)
$DayStartTime = "08:00"  # 日间模式开始时间
$NightStartTime = "18:00" # 夜间模式开始时间
# 定义注册表路径
$RegistryPath = "HKCU:\Software\Microsoft\Windows\CurrentVersion\Themes\Personalize"
# 创建计划任务函数
function Set-ScheduleTask {
    param(
        [string]$TaskName,
        [string]$Time,
        [string]$Mode
    )
    # 创建计划任务动作
    $Action = New-ScheduledTaskAction -Execute "powershell.exe" `
        -Argument "-WindowStyle Hidden -Command `"Set-ItemProperty -Path '$RegistryPath' -Name 'AppsUseLightTheme' -Value $Mode`""
    # 创建计划任务触发器
    $Trigger = New-ScheduledTaskTrigger -Daily -At $Time
    # 注册计划任务
    Register-ScheduledTask -TaskName $TaskName -Action $Action -Trigger $Trigger -Force
    Write-Host "计划任务 $TaskName 已创建,将在 $Time 执行" -ForegroundColor Green
}
# 获取管理员权限
if (-NOT ([Security.Principal.WindowsPrincipal] [Security.Principal.WindowsIdentity]::GetCurrent()).IsInRole([Security.Principal.WindowsBuiltInRole]::Administrator)) {
    Start-Process PowerShell -Verb RunAs "-NoProfile -ExecutionPolicy Bypass -File `"$PSCommandPath`""
    exit
}
Write-Host "开始创建护眼模式计划任务..." -ForegroundColor Cyan
# 创建日间模式任务(浅色)
Set-ScheduleTask -TaskName "DayMode" -Time $DayStartTime -Mode 1
# 创建夜间模式任务(深色)
Set-ScheduleTask -TaskName "NightMode" -Time $NightStartTime -Mode 0
Write-Host "`n护眼模式自动切换已完成配置!" -ForegroundColor Green
Write-Host "日间模式 ($DayStartTime): 浅色主题" -ForegroundColor Yellow
Write-Host "夜间模式 ($NightStartTime): 深色主题" -ForegroundColor Yellow
# 可选:立即切换到夜间模式
Write-Host "`n是否立即切换到夜间模式?(Y/N)" -NoNewline
$response = Read-Host
if ($response -eq 'Y') {
    Set-ItemProperty -Path $RegistryPath -Name 'AppsUseLightTheme' -Value 0
    Write-Host "已切换到夜间模式" -ForegroundColor Green
}

Windows版本(Python脚本)

import time
import schedule
import subprocess
import sys
import os
class EyeComfortManager:
    def __init__(self):
        self.day_start = 8   # 早上8点
        self.night_start = 18  # 晚上6点
    def set_windows_theme(self, is_light):
        """设置Windows主题模式"""
        import winreg
        try:
            # 打开注册表项
            key = winreg.OpenKey(
                winreg.HKEY_CURRENT_USER,
                r"Software\Microsoft\Windows\CurrentVersion\Themes\Personalize",
                0, winreg.KEY_WRITE
            )
            # 设置系统主题
            winreg.SetValueEx(key, "SystemUsesLightTheme", 0, winreg.REG_DWORD, 1 if is_light else 0)
            # 设置应用主题
            winreg.SetValueEx(key, "AppsUseLightTheme", 0, winreg.REG_DWORD, 1 if is_light else 0)
            winreg.CloseKey(key)
            print(f"{'日间' if is_light else '夜间'}模式已启动")
        except Exception as e:
            print(f"Error setting theme: {e}")
    def enable_night_light(self):
        """启用Windows夜间模式"""
        try:
            # 使用Windows设置API(需要Windows 10 1709+)
            subprocess.run(['powershell', '-Command', 
                'Set-ItemProperty -Path "HKCU:\\Software\\Microsoft\\Windows\\CurrentVersion\\CloudStore\\Store\\DefaultAccount\\Current\\default$windows.data.bluelightreduction.bluelightreductionstate" -Name "Data" -Value "AQAHBOQBAAAAAAAAAAQAAAA=" -Type Binary'])
            print("夜间模式已启用")
        except Exception as e:
            print(f"Error enabling night light: {e}")
    def day_mode(self):
        """切换到日间模式"""
        self.set_windows_theme(True)
        print(f"[{time.strftime('%H:%M')}] 切换到日间模式")
    def night_mode(self):
        """切换到夜间模式"""
        self.set_windows_theme(False)
        self.enable_night_light()
        print(f"[{time.strftime('%H:%M')}] 切换到夜间模式")
def main():
    manager = EyeComfortManager()
    # 根据当前时间设置初始模式
    current_hour = time.localtime().tm_hour
    if manager.night_start <= current_hour or current_hour < manager.day_start:
        manager.night_mode()
    else:
        manager.day_mode()
    # 设置自动切换
    schedule.every().day.at("08:00").do(manager.day_mode)
    schedule.every().day.at("18:00").do(manager.night_mode)
    print("护眼模式自动切换已启动")
    print("切换时间:")
    print(f"  日间模式:{manager.day_start}:00")
    print(f"  夜间模式:{manager.night_start}:00")
    print("按 Ctrl+C 停止")
    try:
        while True:
            schedule.run_pending()
            time.sleep(30)  # 每30秒检查一次
    except KeyboardInterrupt:
        print("\n护眼模式脚本已停止")
if __name__ == "__main__":
    main()

macOS版本(AppleScript)

-- macOS 自动护眼模式设置
-- 需要系统权限控制
use framework "Foundation"
use framework "AppKit"
-- 定义切换时间
property dayStartTime : "08:00"
property nightStartTime : "18:00"
-- 设置深色模式
on setDarkMode()
    do shell script "defaults write -g AppleInterfaceStyle Dark"
    display notification "已切换到夜间护眼模式" with title "护眼模式"
end setDarkMode
-- 设置浅色模式
on setLightMode()
    do shell script "defaults delete -g AppleInterfaceStyle"
    display notification "已切换到日间模式" with title "护眼模式"
end setLightMode
-- 获取当前时间
set currentTime to time string of (current date)
-- 判断当前应该使用什么模式
if currentTime > nightStartTime or currentTime < dayStartTime then
    setDarkMode()
else
    setLightMode()
end if
-- 创建计划任务(需要在系统偏好设置中添加)
display dialog "请在弹出的系统偏好设置中添加自动切换计划:
1. 打开 系统偏好设置 → 通用 → 自动切换外观
2. 设置为 '自定义' 
3. 设置时间为 " & dayStartTime & " 和 " & nightStartTime buttons {"知道了"} default button 1

使用说明

Windows PowerShell版本:

  1. 以管理员身份运行PowerShell
  2. 将脚本保存为.ps1文件
  3. 运行脚本自动创建计划任务

Python版本:

安装依赖:

pip install schedule

运行:

python eye_comfort.py

优化建议

  1. 调整切换时间:修改脚本中的时间变量设置
  2. 色温调节:Windows可以使用f.lux,macOS内置Night Shift
  3. 定时提醒:定期提醒休息眼睛
  4. 环境感知:配合环境光传感器自动调节

需要我解释原理或添加额外功能(如色温调节、休息提醒等)吗?

抱歉,评论功能暂时关闭!