Article
+ UpdatedI Built a Mac Tool That Makes the Passing of Time Visible
Yesterday evening, I, hooked on Vibe Coding, closed my computer and suddenly froze.
I'd sat at the computer, opened a lot of tabs, replied to a few messages, scrolled around for a while, and then the day was gone. Not one thing I had planned to do, not a single line of code, not a single article. Time just passed like that, weightless, leaving no trace.
It wasn't the first time I'd felt this, but that day it was especially strong. I began to wonder: if the passing of time were visible, would it be different?
There Are Already Tools, but None Is What I Wanted
I know there are similar tools. Day Progress is the most famous of them, made by Sindre Sorhus: a little progress bar in the menu bar showing how much of today has passed.
But after using it for a while, something felt off. The menu bar is a place I have to actively look at. It hides in the upper-right corner of the screen, and unless I look up and shift my attention, I won't see it. That falls a bit short of the "ambient awareness" I wanted.
What I wanted was that kind of feeling, like the light outside the window: you don't need to look at it on purpose, but you can feel that the afternoon is ending and it's getting dark.
So I decided to build one myself.
Wane
Your browser does not support video playback
Wane is a time progress bar that sticks to the edge of the screen. An extremely thin line, 2px by default, barely there at all. It shows four dimensions at once: today, this week, this month, and this year, one line each, stacked together.
You don't need to look at it. But when you occasionally glance at the bottom of the screen, you realize that today is already 73% gone, there are two days left this week, and nearly half the year has passed.
That's it. No notifications, no reminders, no interruptions of any kind. It just makes the passing of time tangible.
Hover over it and it shows the exact numbers:
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%
Then you move the mouse away, and it returns to that thin line, receding into the background.
Why It's Called Wane
The word Wane means the moon's "waning": the process of shrinking gradually from a full moon. The "waning" in Waxing and Waning.
I like this word a lot, because it describes not loss but a natural, inevitable passing. The moon doesn't get anxious because it's getting smaller. Time shouldn't be just something that makes people anxious either.
It's also one syllable, clean to pronounce, and I got the domain wane.app too.
The app's original codename was Glance, but I later found that name too common, used by many tools. When looking for a new name I listed a pile of words (Ebb, Trim, Seam, Hem), and finally chose Wane because it was the only one with a real semantic connection to the product itself.
The Most Interesting Technical Problem
While building Wane, there was one problem that took me some time to think through:
How do you float a progress bar on the desktop without covering any window?
macOS windows have levels (NSWindowLevel). Regular app windows sit on one level, system alerts on a higher one, and the desktop wallpaper at the very bottom. I needed to find a level that puts the progress bar:
Above the wallpaper (otherwise it gets hidden)
Below all app windows (otherwise it blocks content)
In AppKit this level is called .desktopIcon, the level where desktop icons live. Set the progress bar window to this level and it will always stick to the desktop without covering anything.
PLAINTEXT
复制
window.level = NSWindow.Level.desktopIcon
window.backgroundColor = .clear
window.isOpaque = false
window.ignoresMouseEvents = true
ignoresMouseEvents = true lets the mouse pass straight through this window, so clicking the desktop and dragging files are completely unaffected. Hover detection is handled separately with NSTrackingArea: when the mouse enters the edge region it temporarily turns mouse input on, and after it leaves, pass-through is restored.
When you enter a full-screen app, the progress bar is hidden. This is expected behavior, since you shouldn't be distracted in full screen anyway.
Open Source, but Not Meant to Be Commercialized
Wane is fully open source, with the code on GitHub.
But I used a license combination of Apache 2.0 + Commons Clause. Simply put: you can fork, study, modify, use it yourself, and submit PRs, but you can't sell it. You can't put it on the App Store for a fee, and you can't wrap it into a service.
I chose this license because a few days ago on X I saw an indie developer's Mac junk-cleaning tool: the open-source CLI version was exploited, and someone copied the developer's paid GUI version into an almost identical one, then open-sourced it with great fanfare, with no prior notice and no communication at all. I think that's rather shameless. Although my little tool is very simple and may not have much commercial value, I just dislike this kind of behavior, so I didn't choose the MIT license.
+
Finally
I don't know whether Wane can solve the problem of "the day is over and I did nothing". Honestly, it probably can't: a progress bar can't change a person's habits.
But at least it can let you know. On some afternoon, you happen to glance at the thin line at the bottom of the screen, see that 80% of today is already gone, and maybe you'll stop and think about what you want to do in the next two hours.
Maybe not. But the line is still there, quietly.
Copyright
Copyright of this article belongs to its author or rights holder. When reposting or quoting, please follow the applicable license terms and keep the link to this article.
Link to this article: https://xuyi.dev/en/2026-06-16-mpe5qs