widget/track.js script calls the /api/widget endpoint, hydrates your today/focus list, and renders each item with a priority dot — all without installing anything beyond Scriptable itself. Tapping the widget anywhere opens the full web app.
Requirements
- Scriptable — free on the App Store, works on iPhone and iPad running iOS/iPadOS 14 or later.
- A Wrixton account with a valid API key (see
track configin the CLI or the Settings page in the web app).
Setup
Install Scriptable from the App Store
Search for Scriptable on the App Store and install it. No account or subscription is required.
Open the widget script
The script lives at
widget/track.js in the project repository. You can open the file on your Mac and AirDrop it to your device, or simply copy the full source from the code block below.Create a new script in Scriptable
Open Scriptable, tap + in the top-right corner, and paste in the entire contents of
track.js. Give the script a recognisable name — Wrixton works well — then tap Done.Edit the two config lines at the top
At the very top of the script you will find:Leave
APP_URL as-is unless you are running a self-hosted deployment. Replace "your-personal-track-key" with your actual API key. You can find it in ~/.track/config.toml on any machine where you have run track config.Add a Scriptable widget to your home screen
Long-press any empty area of your home screen to enter jiggle mode, tap +, search for Scriptable, and choose a widget size. In the widget configuration sheet, set Script to the name you gave the script in step 3, and set When Interacting to Open URL (the script sets this automatically to
APP_URL). Tap Done — your Wrixton widget is live.Widget script
The script is self-contained and uses only Scriptable’s built-in APIs — no third-party packages required.
How the widget renders items
The widget calls/api/widget with your x-track-key header and receives your today/focus list — the same items shown by track today or the web app’s Today lens. Each item row displays:
- Priority dot — filled accent-colour dot (
●) for priority 1 items, an open circle (○) for groceries, and a dark dot for everything else. - Title — truncated to one line if it is too long for the widget width.
- A thin hairline rule separates each row.
Adjusting the item limit
ThemaxItems constant near the top of the script controls how many rows the widget shows before displaying a + N more footer:
small, medium, large) using config.widgetFamily.
Auto-refresh and tap behaviour
Scriptable widgets refresh on iOS’s own schedule (roughly every 15–30 minutes depending on battery and usage patterns — this is an OS constraint, not a Scriptable one). Tapping anywhere on the widget opens the Wrixton web app atAPP_URL in your default browser.