软件 · 文章

+ 有更新

我做了一个让时间流逝变得可见的 Mac 工具

有更新更新于 2026年6月16日
+新增 / 调整
  • 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 窗口在一层,系统弹窗在更高一层,桌面壁纸在最底层。我需要找到一个层级,让进度条:

  1. 在壁纸上面(否则被遮住)

  2. 在所有 app 窗口下面(否则遮挡内容)

这个层级在 AppKit 里叫 .desktopIcon,也就是桌面图标所在的那一层。把进度条窗口设置到这一层,它就会永远贴着桌面,不遮挡任何东西。

window.level = NSWindow.Level.desktopIcon
window.backgroundColor = .clear
window.isOpaque = false
window.ignoresMouseEvents = true

ignoresMouseEvents = true 让鼠标直接穿透这个窗口,你点桌面、拖文件完全不受影响。hover 检测用 NSTrackingArea 单独处理,鼠标进入边缘区域时临时打开鼠标接收,离开后恢复穿透。

进入全屏 app 时,进度条会被遮住——这是预期行为,全屏时本来就不应该分心。


开源,但不希望被商业化

Wane 完全开源,代码在 GitHub 上。

但我用了 Apache 2.0 + Commons Clause 的许可证组合。简单说:你可以 fork、学习、修改、自用、提 PR,但不能拿去卖钱——不能放到 App Store 上收费,不能套壳做成服务。

使用这个开源协议是因为,前几天在X上看到某独立开发自己做的Mac垃圾清理工具,开源版本的CLI被人利用,还早着人家的收费的GUI版本抄袭了一个几乎一模一样的出来,然后大张旗鼓的开源,没有事先说明,没有任何的沟通,就这样开源了,我认为挺无耻的,虽然我这个小工具很简单,也可能没有那么大的商业价值,但就是反感这种行为,所以我没有选择MIT协议。


最后

我不知道 Wane 能不能解决"一天过完什么都没做"这个问题。老实说,可能不能——一个进度条改变不了一个人的行为习惯。

但它至少能让你知道。在某个下午,你偶然瞥到屏幕底部那条细线,看到今天已经过了 80%,也许你会停下来想一想接下来两个小时想做什么。

也许不会。但那条线还在那里,静静的。

https://github.com/08820048/Wane

版权声明

本文内容版权归作者或相关权利人所有。转载、引用或其他使用请遵循相应授权条款,并保留本文链接。

本文链接:https://xuyi.dev/2026-06-16-mpe5qs