Six Colors
Six Colors

Apple, technology, and other stuff

Become a Member!

Become a Six Colors member to read exclusive posts, get our weekly podcast and regular newsletters, and much more!

By Jason Snell

TerminalWidget makes custom widget building easy

Chart settings: Bar format, height 10, solid bars, caption 'This is just for fun.', title 'Chart Data!' centered, color 660000. Preview shows bar chart with same caption.
A TerminalWidget shortcut action and its output.

I’m a huge fan of displaying ambient information in my computer interfaces, which on my Mac tends to involve putting data about weather, solar power and the like in my menu bar, so it’s available at a glance. My tool of choice for this is SwiftBar, itself a follow-on to BitBar (which has been rebooted as xbar). On my iPad, I’ve been using custom widgets generated with Simon Støvring’s Scriptable app to do the job.

Now here’s a new contender that generates widgets on both Mac and iOS: Brett Terpstra’s $20 TerminalWidget, which lets you send data to a widget from a command-line script, Shortcut, AppleScript, or a URL scheme.

Widgets are more complicated than little items that live in the menu bar. That’s why Scriptable uses little JavaScript scripts to build them. TerminalWidget has a basic set of terminology that lets you target specific widgets and provides some pre-filled functionality that lets you generate some design elements without much hassle. It’ll also just… take text you give it and display it if you want.

If you’re working via Shortcuts, you can update TerminalWidget using a bunch of different template types: Chart, Image, Progress, Table, or Text. Just as with the command line, each Shortcuts action contains a bunch of variables, so you can customize colors and fonts, add a caption and title, or other things that help fill out TerminalWidget’s templates. It’s by design a lot less flexible than something like Scriptable, where the sky’s the limit—but it’s also a lot more approachable, since you’re basically filling in the blanks with whatever data you want to provide.

I wasn’t really able to replicate my beloved Scriptable weather widget in TerminalWidget—not flexible enough—but TerminalWidget also supports straight-up image use, which allowed me to generate the contents of my Scriptable widget via script, output it as an image, and then tell TerminalWidget to load that image. So if you wanted to offload widget duties to your Mac or a remote server, you could do that and just display the image in TerminalWidget.

In a way, TerminalWidget turns its limitation (lack of flexibility) into a strength, because the learning curve is so gentle, especially if you use Shortcuts, which literally shows you every single possible variable you could possibly use, so you can tinker and figure out what you want to display. Dr. Drang is using it for planetary positions, because that tickles his fancy. If there’s something you’d like to put on a glanceable widget across iPad, iPhone, and Mac, TerminalWidget will let you do it. That’s a beautiful thing. Now I need to figure out what widgets to add to my own devices…

If you appreciate articles like this one, support us by becoming a Six Colors subscriber. Subscribers get access to an exclusive podcast, members-only stories, and a special community.


Search Six Colors