Skip to content

zxz88601151/EyeGuard

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

4 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

👁️ EyeGuard 护眼助手

免费开源的 Windows 电脑护眼工具
基于 PySide6 (Qt6) 构建,打开即用,无需注册登录。

Python PySide6 License Platform

长时间面对屏幕工作,眼睛需要被善待。EyeGuard 提供色温调节、定时休息、自动调度等全方位护眼方案,让护眼成为一种习惯。


📦 安装

方式一:直接运行(推荐)

  1. Releases 下载最新的 EyeGuard.exe
  2. 双击运行,即刻启用

方式二:源码运行

git clone https://github.com/zxz88601151/EyeGuard.git
cd EyeGuard
pip install -r requirements.txt
python main.py

方式三:打包为单文件

pip install pyinstaller
pyinstaller --onefile --noconsole --name EyeGuard main.py

可选依赖:若需要更精准的硬件色温调节,安装 winsdk>=1.0.0b10;若未安装会自动降级至软件遮罩方案,功能不受影响。


✨ 功能总览

功能模块 说明
🎨 色温调节 5 档预设 + 滑块微调 (1800K–6500K),系统级 GammaRamp
🌓 智能调度 固定时间表 / 日出日落算法自动切换色温
定时休息 遵循 20-20-20 法则,工作 / 休息周期可自定义
🖥️ RGB 软遮罩 4 种护眼色彩滤镜,低饱和不刺眼
🌑 暗角模式 屏幕边缘渐暗,减少周围视觉干扰
🔔 连续使用提醒 默认每 3 小时弹窗提醒起身活动
🛌 午休定时 指定时间提醒休息(默认 12:00)
⌨️ 全局快捷键 亮度加减、一键夜间 / 恢复
🎨 屏幕取色器 拾取屏幕任意位置颜色,支持 RGB / HEX
📏 屏幕标尺 测量像素距离和角度
工作计时 记录每日累计使用时长
📅 日期计算器 日期差 / 日期加减 / 星期查询

🖥️ 界面导览

标签页 1 — 色温设置

控件 说明
色温预设 原厂标准 (6500K) / 柔和护眼 (5200K) / 日常护眼 (4200K) / 夜间暖光 (3000K) / 深夜睡眠 (1900K)
RGB 软遮罩 浅黄护眼 / 淡绿护眼 / 琥珀暖棕 / 灰蓝低饱和,可一键清除
色温滑块 1800K–6500K 精细调节,步进 100K
亮度滑块 5%–100% 精细调节,步进 1%

标签页 2 — 智能调度

功能 说明
自动切换 基于固定时间表或日出日落算法(默认上海坐标),每 1 分钟自动检查
午休定时 设定时间到时弹窗提醒
暗角模式 径向渐变遮罩,中心透明 → 边缘黑色,强度可调
连续使用提醒 累计使用达阈值后弹窗建议休息

标签页 3 — 定时休息

  • 工作时长:30–90 分钟(默认 45 分钟)
  • 休息时长:1–10 分钟(默认 3 分钟)
  • 休息期间弹出全屏半透明遮罩 + 托盘气泡通知
  • 遵循 20-20-20 法则:每 20 分钟看 20 英尺外 20 秒

标签页 4 — 实用工具

工具 说明
🎨 色度计 鼠标吸色,实时显示 RGB / HEX,支持锁定和复制
📏 屏幕尺 拖拽测量两点间的像素距离和角度
工作计时 今日累计使用时长,支持手动重置
📅 日期计算器 三种模式:计算日期差、日期加减 N 天、查询某日是星期几

标签页 5 — 关于

  • 开机自启开关(Windows 注册表 HKCU\Run
  • 全局快捷键一览
  • 版本 & 开源版权信息

⌨️ 全局快捷键

快捷键 功能
Ctrl + Alt + 亮度 +5%
Ctrl + Alt + 亮度 -5%
Ctrl + Alt + N 一键切换至夜间模式 (3000K)
Ctrl + Alt + R 一键恢复至原厂标准 (6500K)

🎯 色温预设

模式 色温 适用场景
🔵 原厂标准 6500K 白天、图片/视频编辑等色彩准确场景
🟢 柔和护眼 5200K 日常办公,轻微暖色减少刺激
🟡 日常护眼 4200K 长时间阅读、编码
🟠 夜间暖光 3000K 晚间使用,减少蓝光
🔴 深夜睡眠 1900K 睡前使用,最大程度降低蓝光

🎨 RGB 软遮罩

遮罩 RGB 值 效果
浅黄护眼 (255, 245, 225) 暖黄纸张质感
淡绿护眼 (230, 250, 230) 护眼绿,缓解疲劳
琥珀暖棕 (255, 232, 200) 琥珀色温,复古风格
灰蓝低饱和 (235, 242, 250) 冷静色调,降低饱和度

⚙️ 自动调度时间表

固定时间表

时段 模式 色温
07:00 – 18:00 白天模式 5200K
18:00 – 22:00 夜间模式 3000K
22:00 – 07:00 深夜模式 1900K

日出日落算法

基于经纬度计算当日日出日落时间,动态切换:

  • 日出 ~ 日落 → 白天模式 5200K
  • 日落 ~ 次日日出前 1 小时 → 夜间模式 3000K
  • 午夜前后 → 深夜模式 1900K

默认坐标:上海 (31.2304, 121.4737),可在 core/auto_schedule.py 中修改。


🏗️ 项目架构

EyeGuard/
├── main.py                  # 入口文件:初始化应用、托盘、主窗口
├── requirements.txt         # Python 依赖清单
├── config/
│   ├── __init__.py
│   └── user_storage.py      # 本地 JSON 配置读写
├── core/
│   ├── auto_schedule.py     # 日出日落自动调度算法
│   ├── eye_timer.py         # 定时休息循环 (工作/休息倒计时)
│   ├── screen_opt.py        # 屏幕调节引擎 (GammaRamp + 硬件 + 遮罩三级降级)
│   ├── vignette.py          # 暗角遮罩 (径向渐变)
│   └── work_timer.py        # 每日工作计时
├── ui/
│   ├── color_picker.py      # 屏幕取色器
│   ├── date_calculator.py   # 日期计算工具
│   ├── main_widget.py       # 主界面 (5 个标签页)
│   ├── screen_ruler.py      # 屏幕标尺
│   ├── tray_menu.py         # 系统托盘菜单
│   └── work_timer_tool.py   # 工作计时面板
└── utils/
    ├── autostart_ctrl.py    # 开机自启 (跨平台: Windows/macOS/Linux)
    ├── common_const.py      # 全局常量、预设、快捷键定义
    └── logger_setup.py      # 日志配置

屏幕调节优先级

GammaRamp (SetDeviceGammaRamp)   ← 系统级,ALT+TAB 后仍生效
    ↓ (失败时降级)
screen-brightness-control / winsdk  ← 硬件 API 调节
    ↓ (失败时降级)
UI 全屏遮罩                        ← 各平台通用兜底方案

所有硬件调用均包裹在 try/except 中,任意层级失败不会阻塞主程序,自动降级至下一方案。


🔧 配置持久化

配置文件位于 runtime_data/app_config.json,保存 18 项用户个性化设置:

配置项 默认值 说明
last_temperature 4200 上次色温 (K)
last_brightness 75 上次亮度 (%)
work_min 45 工作时长 (分钟)
rest_min 3 休息时长 (分钟)
auto_start false 开机自启
timer_switch true 定时休息开关
auto_schedule_on false 自动调度开关
soft_filter_enabled false 软遮罩开关
soft_filter_name null 当前软遮罩
lunch_switch false 午休提醒
dark_vignette false 暗角模式
continuous_remind_on false 连续使用提醒

🛠️ 技术栈

技术 用途
Python 3.9+ 运行时
PySide6 (Qt6) GUI 框架
SetDeviceGammaRamp (Win32 API) 系统级色温调节
screen-brightness-control 硬件亮度调节
winsdk (可选) Windows 色温调节(最佳实践)
pyobjc (可选) macOS 系统 API
QHotkey 全局快捷键

第三方依赖

PySide6>=6.5.0                  # GUI 框架
screen-brightness-control>=0.21.0  # 硬件亮度
winsdk>=1.0.0b10 (可选)         # Windows 色温
pyobjc>=9.0 (可选)              # macOS 系统 API

📄 构建

# 安装 PyInstaller
pip install pyinstaller

# 打包为单文件 (约 45MB)
pyinstaller --onefile --noconsole --name EyeGuard main.py

# 产物位于 dist/EyeGuard.exe

🤝 贡献

欢迎提交 Issue 和 Pull Request。在提交 PR 前请确保:

  1. 代码风格遵循 PEP 8
  2. 新功能包含恰当的错误处理和降级策略
  3. 运行时数据不硬编码(统一通过 config/user_storage.py 读写)

📄 许可

本项目基于 MIT 许可证开源 — 详见 LICENSE 文件。


EyeGuard — 护眼,从每一次调色开始 👁️

About

Python 桌面护眼工具,色温调节/定时休息/自动调度,Windows 原生应用

Topics

Resources

Stars

Watchers

Forks

Releases

Packages

Contributors

Languages