惯性聚合 高效追踪和阅读你感兴趣的博客、新闻、科技资讯
阅读原文 在惯性聚合中打开

推荐订阅源

Recent Announcements
Recent Announcements
Martin Fowler
Martin Fowler
MongoDB | Blog
MongoDB | Blog
Engineering at Meta
Engineering at Meta
Stack Overflow Blog
Stack Overflow Blog
Google DeepMind News
Google DeepMind News
Microsoft Security Blog
Microsoft Security Blog
aimingoo的专栏
aimingoo的专栏
I
InfoQ
B
Blog
WordPress大学
WordPress大学
Jina AI
Jina AI
小众软件
小众软件
OSCHINA 社区最新新闻
OSCHINA 社区最新新闻
博客园_首页
奇客Solidot–传递最新科技情报
奇客Solidot–传递最新科技情报
酷 壳 – CoolShell
酷 壳 – CoolShell
阮一峰的网络日志
阮一峰的网络日志
Cyber Security Advisories - MS-ISAC
Cyber Security Advisories - MS-ISAC
G
Google Developers Blog
C
Check Point Blog
月光博客
月光博客
L
LangChain Blog
GbyAI
GbyAI

少数派

派早报:Google 发布 Fitbit Air 等 - 少数派 「新人报到」確認需求,再開始 - 少数派 从 SOLO 独立开发者社区,我看到了越来越多开发者开始做自己的产品 - 少数派 我怎么管理那些"不常做,但总会忘"的生活事项 - 少数派 人形机器人量产元年,数据才是具身智能的“生死线” - 少数派 BuhoLaunchpad 高度还原 Mac 启动台:开发历程与思考 - 少数派 五年陪伴依然不舍,DIY 换壳后让罗技 MX Master 3 继续服役 - 少数派 新玩意 240|少数派的编辑们最近买了啥? - 少数派 一日一技|为什么你应该关闭 iOS 的键盘声音 - 少数派 我做了个插件和 Skills,一键提取任何网站的设计规范 Design.md - 少数派 住在三四线城市的你,该开始录播客了 - 少数派 甘南秘境,大白高国 - 少数派 AI的审美:谁让把我变成川内倫子 - 少数派 返工怎能不烦恼,打工人片单总有一部是你的「嘴替」 - 少数派 为了让「上厕所」更健康,我做了一个小工具 - 少数派 AI + Skill,能够让生成的文章去除 AI 味吗? - 少数派 新玩意|韶音OpenDots ONE 耳夹式耳机 - 少数派 《美满》| 在每一个春天的晚上相爱(362) - 少数派 新玩意|优篮子 PS01 MagSnap 磁吸支架 - 少数派 自我整合手记 | 我开始早睡了:用稳定规则,为自由托底 - 少数派 用龙虾(OpenClaw)两个多月,我最深的12个体会 - 少数派 听歌时间到,12 张你可能错过的 2025 华语乐坛好专辑 - 少数派 承诺能追吗 - 少数派 macOS 26启动台没了? 我做了个不一样的App启动器 - Keboard - 少数派 《四海为家的人》| INTJ对话INTJ(361) - 少数派 你发过的那些黑历史,是时候一次清干净了 - 少数派 新玩意:安安静静玩,越玩越专注:计客密码机 - 少数派 iPad 用户首次体验 Android 平板:vivo Pad6 Pro - 少数派 数据逻辑强 - 少数派 极北行+ | 一路向北,探访日本至北之地 | 001 - 少数派
为了护眼,我在 macOS 上做了一个环境光提醒软件 - 少数派
2023-08-16 · via 少数派

自从去年体检的时候发现视乳头杯盘比有些异常之后,我就特别在意用眼健康了。虽然复查显示并无大碍,但用眼健康成为了我关注的问题。因此,我写了 Daisy 这个护眼软件,希望从环境光调节的角度改善用眼体验。

对护眼方案的思考

对于长期需要对着电脑屏幕的人群来说,护眼是一个非常急切,也是名目繁多的议题。除了系统自带的 Night Shift、True Tone,第三方软件还能监测用眼时间、调节色温、屏幕亮度、明暗主题……总结来说,现有的护眼方案主要集中在以下四个要素上:亮度、色温、明暗主题和用眼时间。

首先,在亮度方面,macOS 系统自带随着环境亮度而改变屏幕亮度的功能,只需在设置中点选开启即可。如此一来,当环境光发生改变的时候,用户就不必再忍受不合适的屏幕亮度,这倒是方便了不少。

macOS 系统下设置自动调节屏幕亮度

其次,在色温方面,除了 macOS 自带的 Night Shift 功能之外,f.lux 也是一个不错的选择,它们的功能近似,都允许用户设置自己的时间方案,选择在白天将屏幕色温调整得更冷一些,而在夜晚相应地更暖一点。f.lux 还可以根据所在地的日出日落时间来帮助用户自动调整。如果用户使用一台 Windows 电脑和飞利浦智能灯泡,就可智能地调整灯泡的色温。

macOS 系统下设置 Night Shift
f.lux 与智能设备色温调整

其三,在明暗主题方面有很多软件工具,比如将一键明暗放置于任务栏的 One Switch,又如少数派曾经推荐过的Dynamic Dark Mode,可以根据环境光切换明暗主题。

最后,在用眼时间监控方面,我个人使用的就是 Eye Monitor,作为一款监测用户用眼时间的软件,它经常善意地提醒我休息眼睛,尤其是在精神集中、忘却时间流逝的工作中。这让被提醒的我常常恍然地意识到,我又在不知不觉中忘记了眼睛的感受。

是否还有更好的护眼方式?

如此四种护眼方案体验下来,亮度调节和时间监控都以相当可感的方式改善了用眼体验。但色温调节软件的效果却可能是次要的。虽然长时间蓝光确实让眼睛疲劳,但市面上已经有自带过滤功能的屏幕膜,可做到硬件级的 24 小时过滤,故软件端似乎不那么必要。另外,作为摄影爱好者,改变屏幕色温往往会影响图片展示和编辑,若是需要手动关闭色温调节,那反倒增添了麻烦。

我也开始思考,明暗主题是否真的具有护眼意义。暗主题以深色背景配浅色文字,确实显得更清晰了,但在我的使用体验中,只要稍微注视屏幕一段时间,眼睛就很容易疲劳,浅色的字周围仿佛生出了光晕一般……虽然暗主题在低光源背景下增强了文字对比度,显得更清晰,但我却觉得更费眼力了。

我想,问题的关键可能是环境光的亮度。我想起小时候经常被教导的内容:不要在日光直射下看书,光线太强会伤眼;也不要在黄昏时的暗处看手机,因为环境光太暗,容易增加用眼疲劳。

上述四种软件的作用机制也启发了我。虽然已有的四种方案里已经包含了亮度因素,但那更多地是屏幕的亮度属性,而非环境光亮度。我发现,除了用眼时间监测之外,调节屏幕属性的软件都使用了环境光作为自变量,例如:根据环境光调整屏幕亮度、根据环境光调节屏幕色温、根据环境光改变明暗主题。那么,我突发奇想,如果视疲劳的原因是环境光的亮度,那么为什么不能反过来调整环境光的亮度呢?

于是,我把自己护眼的重点放在了两点上,一是用眼时间,二是环境光线。一方面是减少连续用眼时间,另一方面则是保证环境光不至于太暗或者太亮,使单位时间内用眼更轻松。而在环境光亮度调节方面似乎没有什么现成的软件产品,故我打算做一个。Daisy 就这样诞生了。

在我最初的构想中,Daisy 应当包含两种功能。一者是提醒功能,这参考了用眼监测软件的成功之处。另一者则参考了 f.lux 通过智能设备改变灯泡色温的思路,主动调节环境光亮度。

这两个功能既相互关联,也彼此分隔。亮度提醒所检测到的亮度数值需要用于判断是否调节环境光,而调节环境光并非一个必需功能,对于不在智能设备环境中的使用场景来说,提醒才是最重要的。因此我不仅需要把这两个功能连接起来,也需要在必要的位置使二者各自独立存在,并且可在后台持续地以一定的时间间隔动态监测。

环境光与屏幕亮度检测

首先遇到的难题是,我如何检测环境光?既有的产品多半使用了设备上自带的光线传感器,但且不论获取传感器数据的方式不易,我担心随着 macOS 系统的不断迭代,传感器数据将有可能变得无法获取。这时,还是 Dynamic Dark Mode 的方案吸引了我:使用屏幕亮度间接检测环境亮度。系统正有根据环境光调节屏幕亮度的功能,其原理为,环境光越亮,则屏幕越亮,环境光越暗,则屏幕越暗。那么,只要在屏幕亮度过暗或者过亮的时候发出提醒,就能对应地提醒用户此时环境光的亮度了。

但紧接着问题又来了,我该如何动态地获取屏幕亮度呢?

我本以为获取屏幕亮度要比获取亮度传感器来得容易得多,不过我低估了 macOS 在这方面的设置,在我的尝试中,连 AppleScript 也无法很容易地获取这方面的信息。

于是我想到了捷径(Shortcuts)。我之前看到 Jordi Bruin 写过一个小工具——FluTooth,就是借助捷径来实现核心功能的。既然如此,何不尝试一下呢?

于是我将检测和提醒功能写在了提醒脚本中。运行这个脚本,它将此时的屏幕亮度反馈给我,同时自行判断是否需要弹出提醒。我将提醒的阈值分别默认为 20% 和 90% 的亮度。如此,我便可以通过 AppleScript 来发出执行捷径脚本的命令,并收到捷径脚本传递的亮度数据了!

检测屏幕亮度并提醒

可能会有朋友发现一个细节,我并没有把亮度的最低值写成 0,这是为了避免熄屏时或将屏幕亮度关闭时产生的误检测。另外,我也在代码中增加了前置窗口检测,若检测到锁屏状态,则停止检测屏幕亮度,如此便不至于在一打开屏幕、解锁之后突然冒出一大堆亮度提醒。

原本我可以在提醒的条件分支中直接加上智能调节,但是为了让提醒功能和调节功能分别独立——你也不想出门在外、没有智能设备的时候收获一大堆报错对吧——因此,我又分别制作了两个智能控制捷径。

提醒之后:智能控制

我在软件中将智能控制设置成了可选项,这样一来,用户就可以选择是否触发调整,并且也可以设置调整的临界值。

Daisy 的设置页面

调整的思路很简单,获取当前环境光线的亮度值,在此基础上增加或者减少单位亮度即可。但是捷径并没有我想象得那样简单。我发现连接 Home 的智能设备无法在捷径中使用代码或者命令明确地调整亮度!取而代之的是,苹果设计了一个拖动界面,设备的亮度值只能通过手动拖拽设置,这大大减少了扩展功能的可能性,对习惯于使用代码命令的人来说,无疑是一个坏消息。

只能手动设置固定数值的界面

因此,我想出了这样的对策:制作鱼鳞一样的条件选项,将固定的亮度范围上调或者下调一定的值,达到调整亮度的目的。不过这样也会稍微提高用户的使用门槛,需要在每一个条件支中设定目标亮度值。因此,我区分了调高脚本调低脚本两个情景,例如,在调高情景中,我的做法是,首先将亮度分成 10% 为一单位的梯度,接着在每一个梯度上,目标亮度都在梯度区间最大值的基础上再增加 10% 。这样就可以使梯度中任何一种亮度情况普遍地提升 10-20%。当然,既然是捷径脚本,那么用户可以根据自己的喜好来客制化地调节。在后续的使用中,我也发现,细致地调整亮度可能不是最常用的,打开和关闭环境光或许是更直接有效的方法,而且也无需繁多的设置。当然,这并不意味着需要对原有的脚本大动干戈,只需新建立一个脚本,然后将新脚本的名称填入设置中即可。

鱼鳞一样的条件选项

最后

考虑到使用情景和需求门槛,我将 Daisy 区分成了两个版本,并将带有智能调节的完整版制作成了付费软件,售价仅一美元,希望大家在明白了我制作软件的心路历程之后能够多多支持,也欢迎朋友们来使用免费的版本,非常小巧精致。上述两个版本都可以在我的项目地址下载,欢迎多来转转!

Daisy 主题图

Daisy 是我开发的第 14 个软件。它也给我带来了一些启发和思考。譬如在人工智能热潮之后,独立软件写作应该如何找到自己存在的价值和基点?我的选择是写尽可能小而精致的工具,在尽可能的情况下,为开源社区提供更多作品,并且可以兼顾创作者的付费需求,开发不同的版本。希望这一个小小的作品能解决一个问题、满足一个需求!如果你想看到更多记录与想法,欢迎订阅我的微信公众号「夜行人的笔记」。