软件 · 文章
+ 有更新我做了一个让时间流逝变得可见的 Mac 工具
- https://github.com/08820048/Wane
- [开源地址](https://github.com/08820048/Wane)
昨天傍晚,沉迷VibeCoding的我关上电脑,突然愣住了。
坐在电脑前,打开了很多 tab,回了几条消息,刷了一会儿东西,然后——一天就没了。没有一件事是我计划要做的,没有一行代码,没有一篇文章。时间就这么过去了,轻飘飘的,什么痕迹都没留下。
这种感觉我不是第一次有,但那天特别强烈。我开始想:如果时间的流逝是可见的,会不会不一样?
已经有工具了,但都不是我想要的
我知道有类似的工具。Day Progress 是其中最有名的,Sindre Sorhus 做的,menubar 里一个小小的进度条,显示今天过了多少。
但我用了一段时间之后觉得哪里不对。menubar 是一个我需要主动去看的地方。它藏在屏幕右上角,我不抬头、不切换注意力,就不会看到它。这和我想要的"环境感知"差了一截。
我想要的是那种感觉——就像窗外的光线,你不需要专门去看,但你能感觉到下午快结束了,天快黑了。
所以我决定自己做一个。
Wane
Wane 是一个贴在屏幕边缘的时间进度条。极细的一条线,默认 2px,几乎不存在。它同时显示四个维度:今天、这一周、这个月、这一年,各一条,叠在一起。
你不需要看它。但当你偶尔瞥到屏幕底部,会意识到今天已经过了 73%,这周还剩两天,今年已经过了将近一半。
就这样。没有通知,没有提醒,没有任何打扰。只是让时间的流逝,变得有形。
hover 上去会显示具体数字:
Today — 14:23 · 59% of workday
This week — Day 3 of 7 · 43%
This month — Day 15 of 30 · 50%
This year — Day 166 of 365 · 45%
然后你把鼠标移走,它又回到那条细线,退回到背景里。
为什么叫 Wane
Wane 这个词的意思是月亮的"亏"——从满月逐渐缩小的那个过程。盈亏的"亏",Waxing and Waning 的 Waning。
我很喜欢这个词,因为它描述的不是失去,而是一种自然的、必然的流逝。月亮不会因为在变小而焦虑。时间也不应该只是让人焦虑的东西。
而且一个音节,发音干净,域名 wane.app 也拿到了。
最初这个 app 的代号是 Glance,后来我发现这个名字太常见,被很多工具用过。找新名字的时候我列了一堆单词——Ebb、Trim、Seam、Hem——最后选了 Wane,因为它是唯一一个和产品本身有真实语义连接的词。
技术上最有意思的一个问题
做 Wane 的过程中,有一个问题花了我一些时间想清楚:
进度条要怎么浮在桌面上,又不遮挡任何窗口?
macOS 的窗口有层级(NSWindowLevel)。普通 app 窗口在一层,系统弹窗在更高一层,桌面壁纸在最底层。我需要找到一个层级,让进度条:
在壁纸上面(否则被遮住)
在所有 app 窗口下面(否则遮挡内容)
这个层级在 AppKit 里叫 .desktopIcon,也就是桌面图标所在的那一层。把进度条窗口设置到这一层,它就会永远贴着桌面,不遮挡任何东西。
window.level = NSWindow.Level.desktopIcon
window.backgroundColor = .clear
window.isOpaque = false
window.ignoresMouseEvents = trueignoresMouseEvents = true 让鼠标直接穿透这个窗口,你点桌面、拖文件完全不受影响。hover 检测用 NSTrackingArea 单独处理,鼠标进入边缘区域时临时打开鼠标接收,离开后恢复穿透。
进入全屏 app 时,进度条会被遮住——这是预期行为,全屏时本来就不应该分心。
开源,但不希望被商业化
Wane 完全开源,代码在 GitHub 上。
但我用了 Apache 2.0 + Commons Clause 的许可证组合。简单说:你可以 fork、学习、修改、自用、提 PR,但不能拿去卖钱——不能放到 App Store 上收费,不能套壳做成服务。
使用这个开源协议是因为,前几天在X上看到某独立开发自己做的Mac垃圾清理工具,开源版本的CLI被人利用,还早着人家的收费的GUI版本抄袭了一个几乎一模一样的出来,然后大张旗鼓的开源,没有事先说明,没有任何的沟通,就这样开源了,我认为挺无耻的,虽然我这个小工具很简单,也可能没有那么大的商业价值,但就是反感这种行为,所以我没有选择MIT协议。
最后
我不知道 Wane 能不能解决"一天过完什么都没做"这个问题。老实说,可能不能——一个进度条改变不了一个人的行为习惯。
但它至少能让你知道。在某个下午,你偶然瞥到屏幕底部那条细线,看到今天已经过了 80%,也许你会停下来想一想接下来两个小时想做什么。
也许不会。但那条线还在那里,静静的。
版权声明
本文内容版权归作者或相关权利人所有。转载、引用或其他使用请遵循相应授权条款,并保留本文链接。