你有没有那种写代码/看资料一抬头,发现眼睛又干又涩、肩颈也硬了的时刻?反正我有,而且还挺频繁。
所以我做了个简单粗暴、尽量不打扰人的护眼提醒:定时弹出全屏半透明护眼遮罩,提醒你停一下、眨眨眼、远眺几秒钟。

项目我已经放到 GitHub 开源:
https://github.com/xiaopanglian/ScreenSaverReminder


## 这玩意儿是干啥的?

一句话:Windows 护眼软件,定时弹出护眼遮罩,提醒休息保护眼睛。

它常驻系统托盘,到点之后会弹出一个“像屏保一样”的全屏半透明遮罩层,上面可以显示实时时间自定义提示文字
关键是它的行为设计我尽量做得“别烦人”:

  • 不抢焦点:弹出来不会把你当前窗口抢走
  • 不拦截输入:键盘鼠标该怎么用还怎么用
  • 淡入淡出:视觉上别那么突兀
  • 你动一下它就走:淡入结束后检测到任意键鼠活动才淡出

## 功能点(现有实现)

  • 托盘常驻:右键菜单【打开设置】【退出】(退出只能从托盘执行)
  • 默认启动:启动后直接进入托盘开始计时(不自动弹出设置窗口)
  • 设置窗口:目前就一个【保存】;保存后隐藏窗口;点右上角 X 也只会隐藏
  • 限制:间隔最小 1 分钟;淡入/淡出最小 1 秒;文字最多 500 字
  • 遮罩:覆盖所有显示器(虚拟屏幕);透明度作用于整个遮罩(含文字)
  • 文本显示:超长自动换行;你在设置里输入的换行会原样显示

## 配置保存在哪?

为了省事,直接落在用户目录(免管理员权限):

  • %AppData%\ScreenSaverReminderCPP\config.ini:间隔、透明度、淡入淡出、颜色等
  • %AppData%\ScreenSaverReminderCPP\text.txt:显示文字(UTF-8,保留换行)

## 开机自启怎么做的?

你在设置窗口勾选“开机自启”并保存后生效。实现很朴素:写注册表 Run 项(当前用户):

HKCU\Software\Microsoft\Windows\CurrentVersion\Run\ScreenSaverReminderCPP


## 构建方式(MSVC)

这是一个 C++/Win32 小项目,不依赖 .NET 运行时;并且我默认推荐用 /MT 静态运行库,尽量少让用户额外装东西。

仓库里提供了 build-msvc.bat,在 Developer Command Prompt for VS 里运行(确保 cl.exe/rc.exe 在 PATH):

```bat
cd /d C:\Private\Learn\ScreenSaverReminderCPP
build-msvc.bat

输出:build\ScreenSaverReminderCPP.exe

也可以直接用 VS 打开 ScreenSaverReminderCPP.sln 编译;如果提示 SDK/工具集重定向,点 Retarget 就行。

———

## 为什么要开源?

说白了就是两点:

  1. 这类小工具没必要神神秘秘:实现很透明,大家看得懂、改得动,心里更踏实。
  2. 我也希望有人一起把它做得更顺手:比如更好的设置界面、更灵活的策略、打包安装、快捷键/免打扰模式之类的。 ——— 欢迎你来一起搞
  • 发现问题:直接提 Issue
  • 想加功能:提 PR 或先开讨论也行
  • 有更好的交互/视觉建议:我也很想听 开源地址再次贴一下:
    https://github.com/xiaopanglian/ScreenSaverReminder.git ——— 备注(关于许可证) 仓库目前还没补充开源许可证文件(我会尽快补上)。在许可证没明确之前,严格意义上“开源可看”但不等于“随便用/随便分发”。如
    果你打算用于商业/再分发,建议先提个 Issue 跟我确认一下。 如果你告诉我:你想把博客发在掘金/知乎/公众号哪一个、面向“普通用户”还是“开发者”、以及你想要的语气(更正式/更口语),我
    可以把这篇再按平台风格重写一版,并给你补一个“配图清单 + 标题/摘要/SEO关键词”。

软件采用AI编写,功能模仿自FadeTop。

为什么要用AI写一款功能相同的软件呢?因为在使用FadeTop过程中,发现多屏幕下有显示上的BUG,此软件主要修复了这些问题,新增了可以自定义文字的功能,去掉了护眼进度条功能。简洁。

此作者没有提供个人介绍。
最后更新于 2025-12-30