Chris Dzombak

Simple programs that make Things.app better

Part of the Project Announcements series.

I use Things as my personal task manager, and aside from a few small complaints I am quite happy with it. But/and, over the years, I’ve noted a few things that could be improved. I’ve been able to address two of these issues myself with some small Go programs.

Add weather forecasts to Things with wxcal

When planning tasks for the next few days in Things’s Upcoming view, I find it useful to have a quick summary of the weather forecast. This isn’t something Things supports natively.

(Aside: my preferred calendar app, Fantastical, has not only a quick forecast icon for each day but provides a really beautiful weather detail UI.)

Things does, however, support calendars, and calendar events do appear in the Upcoming view. So, my solution: create an iCal feed for my local weather, subscribe to that calendar in Google Calendar, and let it show up in Things!

Screenshot of the Upcoming view in Things, showing weather forecasts

wxcal is a simple program that fetches weather from the weather.gov API and writes a compact summary of the forecast to an iCal feed. It runs on my web server periodically and updates a public iCal feed of Ann Arbor weather. Its usage is straightforward and the README covers it in detail, so I won’t go over it here.

Attach files to Things tasks with mailto-things

Things doesn’t support attaching images or files to tasks. This is one of my main complaints when comparing Things to eg. OmniFocus: I’d like to be able to take a quick photo and capture it directly into my Things Inbox.

Things does have a feature, “Mail to Things”, which provides you a private email address @things.email. Any text you send there will be converted into a task in your Things Inbox, with the email’s subject line as the task title and the email’s body as the task’s description.

So, I wrote mailto-things. This is another small Go program that runs periodically on one of my servers.

mailto-things checks a Gmail account for new emails from you, writes the attachments out to a web-accessible directory, and then sends the email along to your private @things.email address — but with plain old URLs in place of the attachments. The end result is almost like having proper attachments; the files aren’t themselves in Things.app, but they appear as clickable/tappable links, which I think is Good Enough.

Screenshot of a task in Things containing a link to an external file

I’m writing these attachments to a folder that’s synchronized between my computers via Syncthing, so I have a local copy of my files as well.

Again, the README covers installation, deployment, configuration and usage thoroughly, so I won’t repeat those details here.


This is part of an ad-hoc series of posts about projects I’ve worked on recently. The previous post covered runner, my lightweight wrapper for cron jobs.